我的pascal程序哪里出错了,各位大吓请帮帮忙.

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:39:15
问题:
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。
文件名:factor.pas,输入文件名:factor.in 输出文件名:factor.out
我的程序:
program dfaw;
type
auu=array[1..100] of longint;
var
a,c:auu; b:longint; len1,len2,len:longint; n:integer; i:integer;
procedure sar;
begin
assign(input,'factor.in');
assign(output,'factor.out');
reset(input);
rewrite(output);
end;
function cheng(a:auu;b:longint):auu;
var
i:longint;
c:auu;
begin
a[1]:=a[1]*b;
for i:=2 to len1 do
begin
a[i]:=a[i]*b+a[i-1]div 10;
a[i-1]:=a[i-1] mod 10;
end;
while a[len1]>=10 do
begin
a[len1+1]:=a[len1] div 10;
a[len1]:=a[len1] mod 10;
len1:=len1+1;
end;
cheng:=a;
end;
function jia(a,b:auu):auu;
var
i,j:integer; c:auu;
begin
fillchar(c,sizeof(c),0);
if len<len1 then len:=len1;
for i:=1to len do

function jia(a,b:auu):auu;
var
i,j:integer; c:auu;
begin
fillchar(c,sizeof(c),0);
if len<len1 then len:=len1;
for i:=1to len do
begin
c[i]:=c[i]+a[i]+b[i];{错在这里,应该要加上c[i]}
if c[i]>=10 then
begin
c[i]:=c[i]-10;
c[i+1]:=c[i+1]+1;
end;
end;
if c[len+1]>0 then len:=len+1;
jia:=c;
end;

看高精度我会看到晕的
不过可以说的是
楼上的加了仍然是错的

天!我一看函数头就云

加了就是对的,redflowerfu没有错。验证了。优化的高精度最好在每个函数中用一样的名字。看了半天头都有点晕了(不过有一年多没碰PASCAL了)