已解决问题

pascal 用for循环来做下列几道题

[ 标签:pascal 循环,pascal,下列 ]

有几道用FOR循环做的题:

1.选票统计:有a,b,c,d四位候选人,n位投票人,统计时,a,b,c,d以外的字符为弃权,按得票的多少打印出候选人的代号及其票数。
2.a,b,c,d四名小偷嫌疑人,只有一个是真的,
a说 我不是
b说 c是
c说 d肯定是
d说 c冤枉人
他们说的话其中3人为真一人为假,求小偷是谁?

4⒌° 仰視┌ 回答:1 人气:117 解决时间:2009-11-04 21:03
  
满意答案

2.答案是C。代码:

program tou;
var t:char;
begin
for t:='a' to 'd' do
if ord(t<>a)+ord(t=c)+ord(t=d)+ord(t<>d)=1 then writeln(t);
readln;
end
.

解释:
ord(true)=1
ord(false)=0,这样一来, ord(t<>'a')+ord(t='c')+ord(t='d')+ord(t<>'d')通过循环得到的thief的结果如果相加等于3

回答人的补充   2009-11-03 23:27

1. 代码:

program tongji;
var i,s,n:integer;
t:char;
begin
readln(n);
for i:=1 to n do
begin
readln(t);
if t='a' then inc(a)
else if t='b' then inc(b)
else if t='c' then inc(c)
else if t='d' then inc(d)
else inc(s);
end;
writeln('A:',a,' ','B:',b,' ','C:',' ','D:',' ');
writeln('qi quan: ',s); {这行输弃权票}
end;

回答采纳率:71.4% 2009-11-03 23:12
评价答案
  • 是否解决问题(参与评价0次)
  • 1
  • 0
  • 0
  • 是否原创答案(参与评价0次)
  • 0
  • 0

相关内容