PASCAL 程序 问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 03:04:47
帮忙解释2个题目:
⑴program program4;
var c: array[1..3] of string[200];
s: array[1..10] of integer;
m, n, i: integer;
procedure numara;
var cod: boolean;
i, j, nr: integer;
begin
for j := 1 to n do begin
nr := 0; cod := true;
for i := 1 to m do
if c[i, j] = '1' then begin
if not cod then begin
cod := true; inc(s[nr]); nr := 0;
end
end
else begin
if cod then begin
nr := 1; cod := false;
end
else inc(nr);
end;
if not cod then inc(s[nr]);
end;
end;
begin
readln(m, n);
for i := 1 to m do readln(c[i]);
numara;
for i := 1 to m do
if s[i] <> 0 then write(i, ' ', s[i], ' ');
end.
输入:
3 10
1110000111
1100001111
1000000011
输出:

⑵program program4;
const
u: array[0..2] of integer = (1

第一个题:
求得是每一列连续有nr个0有几个,s[nr]记录的是连续有nr个0,有几个。
答案: 1 4 2 1 3 3意思是:
在一列中,连续有1个0的自序列出现了4次,连续有2个0的序列出现了1次,连续有3个0的序列出现了3次。
我们竖着看每一列,在一列中连续出现了i个0,则inc(s[i]);
就是统计一共个数不同的连续的0序列出现了几次。
第二题:
主程序部分,每一次for中,当I是奇数时,sum:=-sum; 当I是偶数时,sum:=4*sum;
子程序部分就是sum每次都加一的过程。{sum:=sum+1}
输入不是二的倍数,所以,在sum=400时,sum:=-sum,即,sum为-400

输出:1 4 2 1 3 3
输出:-400

是第十届初赛(提高组)试题的第三大题的第3、4小题。答案:1 4 2 1 3 3
-400

拜托~~~~
又是一个不知道缩进的