- 1、本文档共54页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高精度的十进制运算-read
高精度运算 数据类型的转换 在变量运算对象的数值范围为任何数据类型所无法容纳的情况下,采用整数数组(每一个元素对应一位十进制数,由其下标顺序指明位序号)。 1、采用数串形式输入,并将其转化为整数数组。 2、该数组的运算规则如同算术运算。 3、用一个整数变量记录数据的实际长度(即数组的元素个数) 数据结构与转换方法 type numtype= array[1..500]of word;{ 整数数组类型} var a,b:numtype; {a和b为整数数组} la,lb:integer;{整数数组a的长度和b的长度} s:string; {输入数串} 将数串s转化为整数数组a的方法如下: k←length(s); for i←1 to k do a[k-i+1]←ord(s[i])-ord(‘0’); 加法运算c←a+b(a、b、c为numtype类型) var a,b,c:array[1..201] of 0..9; n:string; lena,lenb,lenc,i,x:integer; begin write(Input augend:); readln(n);lena:=length(n); for i:=1 to lena do a[lena-i+1]:=ord(n[i])-ord(0);{加数放入a数组} write(Input addend:); readln(n); lenb:=length(n); for i:=1 to lenb do b[lenb-i+1]:=ord(n[i])-ord(0);{被加数放入b数组} i:=1; while (i=lena) or(i=lenb) do begin x := a[i] + b[i] + x div 10; {两数相加,然后加前次进位} c[i] := x mod 10; {保存第i位的值} i := i + 1 end; if x=10 {处理最高进位} then begin lenc:=i; c[i]:=1 end else lenc:=i-1; for i:=lenc downto 1 do write(c[i]); writeln {输出结果} end. 求回文数 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个10进制数56,将56加65(即把56从右向左读),得到的121是一个回文数。又如,对于10进制数87: STEP1:87+78=165 STEP2:165+561=726 STEP3:726+627=1353 STEP4:1353+3531=4884 在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N(2≤N≤10,N=16)进制数m,m的位数上限为20。求最少经过几步可以得到回文数。如果在30步以内(包括30步)不可能得到回文数,则输出“impossible” 样例: INPUT OUTPUT N=9 m=87 STEP=6 1.将数串s转化为整数数组m 设数串s=s1‥sp,串长为p。其中si为第p-i+1位n进制数(1≤i≤p)。我们将s转化为整数数组m=m[p]‥m[1],其中m[i]对应第i位n进制数。 type mtype=array[1..100]of integer; var m:mtype; 按下述方法将s转化为整数数组m: p←length(s);{计算s的串长} for i←1 to p do {从最高位开始计算整数数组m } begin k←p-i+1;{计算si对应于的m数组下标} case s[i] of{转换si} ’a’..’f’:m[k]←10+ord(s[i])-ord(’a’); ’0’..’9’:m[k]←ord(s[i])-ord(’0’); else 输出错误信息并退出程序; end;{case} end;{for} 2.判别整数数组m是否为回文数 function check (m: mtype) :boolean;{若整数数组m为回文数,则返回true,否则返回false} var i:integer; begin check←false; for i←1to do if m[i] ≠m[p-i
文档评论(0)