(1)高精度加法
运行的时候是倒着的,所以输出得倒着输出
a,b为两个相加的数,c为结果,应该也可以把原来的数加完的结果存在b里.
procedure add(a,b;var c);
{ a,b,c都为数组,a存储被加数,b存储加数,c存储结果 }
var i,x:integer;
begin
i:=1;
while (i<=a数组长度>0) or(i<=b数组的长度) do begin
x := a[i] + b[i] + x div 10; {第i位相加并加上次的进位}
c[i] := x mod 10; {存储第i位的值}
i := i + 1; {位置指针变量}
end;
end;
(2)高精度减法
类似加法.
procedure minu (a,b;var c);
var i,x:integer;
begin
i:=1;
while (i<=a数组长度>0) or(i<=b数组的长度) do begin
x := a[i] – b[i] + 10+ x; {不考虑大小问题,先往高位借 10}
c[i] := x mod 10; {存储第i位的值}
x := x div 10 – 1; {将高位借掉的1减去}
i := i + 1; {位置指针变量}
end
end;
(3)高精度乘法
for i:=1 to lena do begin x:=0;
for j:=1 to lenb do begin {对乘数的每一位进行处理}
x := a[i]*b[j] + x div 10 + c[i+j-1]; {当前乘积+上次进位+原数}
c[i+j-1] := x mod 10;
end;
c[i+j]:= x div 10; {进位}
end;
lenc:=i+j;
while (c[lenc]=0) and (lenc>1) do dec(lenc);
(4)高精度除法,一般用不上
恩这个就不学了