pascal超简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:41:04
1、山乡希望小学收到一箱捐赠图书,邮件上署名是“兴华中学高二班”,山乡希望小学校 长送来了感谢信,可是兴华中学高二年级有四个班,校长找来了四个班的班长,问他们是哪 个班做的这件好事。一班的班长说:“是四班做的。”二班的班长说:“是三班做的好事。”三 班的班长说:“不是我们班。” 四班的班长说:“三班的班长说的不对。”
四个班的班长都说不是自己班做的,这就难坏了校长,后来得知四个班的班长中有两个 说得是真话,有两个没有说真话,请你利用计算机的逻辑判断编一个程序,找出究竟是哪个 班做了这件好事。不能手算后直接打印结果。
2、A,B,C,D,E五个人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地 方睡着了,日上三竿,E第一个醒来,他将鱼数了数,平分成五分,把多余的一条扔进河中, 拿走一份回家去了,D第二个醒来,他并不知道有人已经走了,照样将鱼平分成五分,又扔 掉多余的一条,拿走自己的一份,接着C,B,A依次醒来,也都按同样的办法分鱼(平分成 五份,扔掉多余的一条,拿走自己的一份),问五人至少合伙捕到多少条鱼。
也许你能用数学办法推出鱼的条数,但我们的要求你编出一个程序,让计算机帮你算出鱼的总数。
3、(附加题)警察抓了A,B,C,D四个偷窃嫌疑犯,其中有一个人是小偷。审问中A说:“我不是小偷。”B说:“C是小偷”C说:“小偷肯定是D。”D说:“C在冤枉人。”现在已经知道四个人中三个人说的是真话,一个人说的是假话,问到底谁是小偷?

编好了还有分加!!!!

第一题:
这道题本身有问题,手工推得3,4都有可能,但这里还是给出这道题的程序(有两个解):
var i:integer;
begin
for i:=1 to 4 do
if ord(i=4)+ord(i=3)+ord(i<>3)+ord(i=3)=2 then writeln(i);
end.
第二题
var i,n,f:integer;
b:boolean;
begin
repeat
n:=n+4; f:=n div 4*5+1;
b:=true;
for i:=4 downto 1 do
if f mod 4=0 then
f:=f div 4*5+1
else begin
b:=false; break; end;
until b;
writeln(f);
end.
第三题
var i:integer;
begin
for i:=1 to 4 do
if ord(i<>1)+ord(i=3)+ord(i=4)+ord(i<>4)=3 then
case i of
1:writeln('A');
2:writeln('B');
3:writeln('C');
4:writeln('D');
end;
end.
临时写的,有小的语法错误请自己改正,谢谢!!!
这些题都很简单,我想你应该能够理解!

13