早教吧 育儿知识 作业答案 考试题库 百科 知识分享

请教FREEPASCAL12.警察局抓了A、B、C、D四名偷窃嫌疑犯,其中有一个人是小偷。审问中A说:“我不是小偷。”B说:“C是小偷。”C说:“小偷肯定是D。”D说:“C在冤枉人。”现在已经知道

题目详情
请教 FREE PASCAL
12. 警察局抓了A、B、C、D四名偷窃嫌疑犯,其中有一个人是小偷。审问中A说:“我不是小偷。”B说:“C是小偷。”C说:“小偷肯定是D。”D说:“C在冤枉人。”现在已经知道四个人中三个人的是真话,一人说的是假话,问到底谁是小偷?
▼优质解答
答案和解析
var f:array['a'..'d'] of boolean;
s:longint;
ch:char;
begin
for ch:='a' to 'd' do
begin
f[ch]:=true; //枚举谁是小偷,做标记
s:=0; //说真话数量计数器
if not f['a'] then inc(s); //a不是小偷则计数器加一
if f['c'] then inc(s); //c是小偷则s+1
if f['d'] then inc(s); //d是小偷则s+1
if not f['d'] then inc(s); //d不是小偷则s+1
if s=3 then writeln(ch); //如果说真话的数量有三句说明当前枚举的小偷是正确的
f[ch]:=false; //释放标记,枚举下个小偷
end;
end.
希望楼主采纳