pascal高精度加法 函数
答案:3 悬赏:70 手机版
解决时间 2021-03-24 19:52
- 提问者网友:聂風
- 2021-03-23 22:04
pascal高精度加法 函数
最佳答案
- 五星知识达人网友:往事埋风中
- 2021-03-23 22:33
function jia(s1,s2:ansistring):ansistring;
var i,j,l1,l2:longint;
a,b:array[0..10000] of longint;
o:ansistring;
begin
jia:='';
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
l1:=length(s1);
l2:=length(s2);
for i:=1 to l1 do
a[l1-i+1]:=ord(s1[i])-ord('0');
for i:=1 to l2 do
b[l2-i+1]:=ord(s2[i])-ord('0');
for i:=1 to l1 do
begin
a[i]:=a[i]+b[i];
if a[i]>=10 then
begin
inc(a[i+1]);
a[i]:=a[i]-10;
end;
end;
if a[l1+1]>0 then inc(l1);
for i:=1 to l1 do
begin
str(a[i],o);
jia:=o+jia;
end;
end;
这个是高精度+法的,乘法和这个类似,可以直接写高精度*高精度
另外www.tyvj.cn
有几道关于高精度的练习题,欢迎您来
PS:我是站长
var i,j,l1,l2:longint;
a,b:array[0..10000] of longint;
o:ansistring;
begin
jia:='';
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
l1:=length(s1);
l2:=length(s2);
for i:=1 to l1 do
a[l1-i+1]:=ord(s1[i])-ord('0');
for i:=1 to l2 do
b[l2-i+1]:=ord(s2[i])-ord('0');
for i:=1 to l1 do
begin
a[i]:=a[i]+b[i];
if a[i]>=10 then
begin
inc(a[i+1]);
a[i]:=a[i]-10;
end;
end;
if a[l1+1]>0 then inc(l1);
for i:=1 to l1 do
begin
str(a[i],o);
jia:=o+jia;
end;
end;
这个是高精度+法的,乘法和这个类似,可以直接写高精度*高精度
另外www.tyvj.cn
有几道关于高精度的练习题,欢迎您来
PS:我是站长
全部回答
- 1楼网友:过活
- 2021-03-23 23:30
高精加,是a+a吧。
readln(s1);//a是字符串
len1:=length(s1);
for i:=1 to len1 do a[len1+1-i]:=ord[s1[i]]-48;
for i:=1 to len1 do
begin
c[i]:=a[i]+a[i];
if c[i]>=10 then
begin
c[i+1]:=c[i+1]+1;
c[i]:=c[i] mod 10;
end;
end;
if [len1+1]>0 then len1:=len1+1;
for i:=len1 downto 1 do
write(c[i]);
writeln;
end.
readln(s1);//a是字符串
len1:=length(s1);
for i:=1 to len1 do a[len1+1-i]:=ord[s1[i]]-48;
for i:=1 to len1 do
begin
c[i]:=a[i]+a[i];
if c[i]>=10 then
begin
c[i+1]:=c[i+1]+1;
c[i]:=c[i] mod 10;
end;
end;
if [len1+1]>0 then len1:=len1+1;
for i:=len1 downto 1 do
write(c[i]);
writeln;
end.
- 2楼网友:归鹤鸣
- 2021-03-23 22:42
提示,高精度计算用数组。
按乘法规则,利用div和mod
运算将进位算出
。呵呵,就提示这些
按乘法规则,利用div和mod
运算将进位算出
。呵呵,就提示这些
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯