救四道pascal编程题,十万火急!请高手帮忙解答,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:06:00
⒈ 请编制程序PROG1。求:1+22+33+44+……+NN之和,N为小于20的自然数(不准用乘幂方式运算)。本题20分。

⒉ 请编制程序PROG2。输入真分数N/M的分子和分母N、M,将其化为小数,若为无限小数,则只求到小数点后10位。本题30分。

⒊ 请编制程序PROG3。公安人员审问甲乙丙等四个嫌疑犯,甲说:乙没有偷,是丁偷的;乙说:我没有偷,是丙偷的;丙说:甲没有偷,是乙偷的;丁说:我没有偷,我用的东西是我家的。乙确知这四个人当中仅有一人是偷窃者,还知道这四个人的说话不是全对,就是全错。编程找出谁是偷窃者。
用A、B、C、D分别表示甲乙丙丁四人,0表示这个人没有偷,1表示是小偷。本题20分。

⒋ 请编制程序PROG4。打印如下菱形,菱形的边长M由键盘输入(M〈10〉(图例M=4)。本题30分。
? 4
D
DCD
DCBCD
DCBABCD
DCBCD
DCD
D

第一题
program prog1;
type arr=array[0..1000]of word;
var
j,j2:arr;
i,n,s:integer;
procedure mul(var a:arr;b:word);
var i,t:integer;
begin
t:=0;
for i:=1 to a[0] do
begin
a[i]:=a[i]*b+t;
t:=a[i] div 10;
a[i]:=a[i] mod 10;
end;
while t<>0 do
begin
inc(a[0]);
a[a[0]]:=t mod 10;
t:=t div 10;
end;
end;
procedure plus(var a,b:arr);
var n,i,t:integer;
begin
if a[0]>b[0]then for i:=b[0]+1 to a[0] do b[i]:=0
else if a[0]=b[0] then i:=a[0]
else for i:=a[0]+1 to b[0] do a[i]:=0;
n:=i;t:=0;
for i:=1 to n do
begin
a[i]:=a[i]+b[i]+t;
t:=a[i] div 10;
a[i]:=a[i] mod 10;
end;
a[0]:=n;
if t<>0 then
begin
inc(a[0]);
a[a[0]]:=t;
end;
end;
BEGIN
readln(n);
j[0]:=1;j[1]:=1;
for i:=2 to n do
begin
j2[0]:=1;j2[1]:=1;
for s:=1 to i do m