帮忙看个程序,有关PASCAL的,谁能帮我分析一下改个程序各步含义

来源:百度知道 编辑:UC知道 时间:2024/05/04 10:55:14
program d8_3;
var
a:array[1..10]of integer;
i,j:integer;
begin
for i:=1 to 10 do
begin
a[i]:=a[i]+i;
for j:=1 to i do
a[j]:=a[j]+j;
end;
for i:=1 to 10 do
write (a[i],' ');
end.
刚才那位所表的我也知道,我就是想问,这题的答案“11 20 37 32 35 36 35 32 27 20”是怎么算出来的?

program d8_3; (程序名)
var (定义 A为数组 I,J为整行);
a:array[1..10]of integer;
i,j:integer;
begin (开始)
for i:=1 to 10 do (I从1 到 10 )
begin (开始)
a[i]:=a[i]+i; (当I=1 时)--(A[1]:=A[1]+1); (当I=2 时)--(A[2]:=A[2]+2);
for j:=1 to i do (同上)
a[j]:=a[j]+j;
end;
for i:=1 to 10 do (当I=1 时)(I=2时)
write (a[i],' '); 输出(2) (3)
end.

因为i是1到10,做了十次.我们先不看j,那么a[1]到a[10]每个运行了一次.
再看j,第一次a[1]加1,第二次a[1]加1,a[2]加二,第三次a[1]加1,a[2]加2,a[3]加3...如此重复a[1]运行10次,加刚才1次,共11次;a[2]运行9次,加刚才1次,共10次;a[3]运行8次,加刚才1次,共9次...同理a[4]8次,a[5]7次,a[6]6次,a[7]5次,a[8]4次,a[9]3次,a[10]2次;
因为a[1]运行1次加1,a[2]运行1次加2,a[3]运行1次加3...所以最终结果为:a[1]=1*11=11,a[2]=2*10=20,a[3]=3*9=27,a[4]=4*8=32,a[5]=5*7=35,a[6]=6*6=36,a[7]=7*5=35,a[8]=8*4=32,a[9]=9*3=27,a[10]=10*2=20.
所以这题的答案为:11 20 37 32 35 36 35 32 27 20