Pascal程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/11 15:27:51
1.有4个学生,上地理课时提出我国四大淡水湖的排序如下:
甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三;
丙:洪泽湖最小,洞庭湖第三;
丁:鄱阳湖最大,太湖最小,洪泽湖第三,洞庭湖第三;
对于各个湖泊应处的地位,每个人只说对了一个。
根据以上情况,编一个程序,让计算机判断各个湖泊应处在第几位。

2.现在面值分别为3分、5分、8分、10分和12分的邮票,每种邮票的张数分别为30张,20张,25张,15张和10张,编程输出用些邮票可贴出多少种不同的邮票面值

3.7.打印杨辉三角形的前10行。杨辉三角形如图:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

4.传说中有一个残暴的国王,喜欢杀戮百姓。有一次,他抓到30个百姓并要一一杀掉。在这30个百姓中间有一个聪明人,他站出来对国王说:“请国王大发慈悲,赦免二人不死。”国王问:“赦免哪二人不死?”那个聪明人回答说:“我们30个人围成一圈,从1开始报数,凡数到5的人就拉出去杀掉。剩下的人继续从1开始报数,循环反复,直到剩下两个人为止,这两个人被赦免。”
国王一听很有意思,采纳了聪明人的建议,赦免了两个人,而那个聪明人就是其中之一。请你设计一个程序,由计算机判断聪明人要站在什么位置,才能躲过这一场屠杀

5.设计一个程序,让计算机找出40个自然数来,使得其中任意两个数之差均不相等。

需要以上程序的源码
最主要就是后一个。只要把那个做出来我就给他分。
5.设计一个程序,让计算机找出40个自然数来,使得其中任意两个数之差均不相等

5.
var a:array[1..32767]of boolean;
b:array[1..40]of integer;
i,s,t:integer;
begin
for i:=1 to 32767 do a[i]:=false;
write(1:8,2:8);
a[1]:=true;
b[1]:=1;
b[2]:=2;
s:=2;
repeat
i:=1;
while a[i] do i:=i+1;
write(b[s]+i:8);
b[s+1]:=b[s]+i;
for i:=1 to s do
a[b[s+1]-b[i]]:=true;
s:=s+1;
until s=40;
writeln;
end.
一楼的是pascal?

...

把1和2放进数组S中;
把1放进数组CHA中;
当寻找下一个自然数时,要把这个自然数与数组S中的每一个数相减,再判断所得的差是否在数组CHA中;
如果所得的差不在数组CHA中,说明又找到一个满足条件的自然数。把这个自然数放进数组S中,同时把这个自然数与数组S中原有的每一个自然数的差记录在数组S中去。
如果所得的差与数组CHA中的某一个数重复,说明这个自然数不符合条件,继续寻找下一个自然数。
重复步骤(3),直到找到40个自然数为止。
程序清单:

CLS
INPUT "n="; n
DIM s(n), cha(3000)
s(1) = 1: s(2) = 2
cha(1) = 1: s = 2: y = 2: PRINT 1, 2,
1 : y = y + 1
FOR k = 1 TO s
PRINT k, y, s(k), cha(y - s(k))
IF cha(y - s(k)) = 1 THEN GOTO 1