小偷问题:A,B,C,D四个人,A说:我不是小偷;B说:C是小偷;C说:D是小偷;D说:C冤枉人。

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:46:13
PASCAL语言
要求过程

program l_thief;
var
thief:char;
procedure findthief;
var
i:char;
begin
for i:=\'A\' to \'D\' do
begin
if ord(i<>\'A\')+ord(i=\'C\')+ord(i=\'D\')+ord(i<>\'D\')=3 then break;
end;
thief:=i;
end;
begin
findthief;
writeln(thief);
end.

往往最着急说不是小偷的人是小偷
所以说A是小偷
我说对了吗?
哈哈.....

我想B应该是,B为什么知道C是小偷!

分析:题目的意思是只有一个是小偷,4个人中有一个人说谎,说谎的人就是小偷。扣住这一点分别假设某人为小偷,来判别4个人说的话真假,当3个人说的话是真的,就是这个题的解。用C++编程如下:
#include<iostream>
using namespace std;
int main()
{
char thief;
for (thief='a';thief<='d';thief++)
if ((thief!='a')+(thief=='c')+(thief=='d')+(thief!='d')==3) cout<<thief<<endl;
}

我不会PASCAL语言 ,但你可以转化一下就行了,程序输出结果为C,C是小偷。那我们代入4个人说的话:
1、A