残疾人网站:会编程的请进

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 18:36:58
4名专家按对4款赛车进行评论。
A说:2号赛车是最好的。
B说:4号赛车是最好的。
C说:3号赛车不是最佳赛车。
D说:B说错了
事实上只有一款赛车最佳,且只有一个专家说对了,其他三人都说错了,请编程输出最佳车的车号,以及哪位专家说对了。

#include<stdio.h>

void main()
{
int a,b,c,d;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
for(d=0;d<=1;d++)
{
if(a+b+c+d==1 &&
((a==1 && b==0 && c==1 && d==!b) ||
(a==0 && b==1 && c==1 && d==!b) ||
(a==0 && b==0 && c==1 && d==!b) ||
(a==0 && b==0 && c==0 && d==!b)
))
{
if(a==1)
{
printf("A");
printf("\ncar 2");
}
else if(b==1)
{
printf("B");
printf("\ncar 4");
}
else if(c==1)
{
printf("C");
printf("\ncan not find car!");
}
else if(d==1)
{
printf("D");
printf("\ncar 3");
}
}
}
printf("\n");
}

D
car 3

详细解释:
这是一个逻辑推理题:
根据题意,只有一款车最佳,只有一个专家说对了。设各专家分别为A,B,C,D
它们等于1的时候为说真话。且a+b+c+d==1;
若A说真话,则a==1,b==0,c==0,d==!b"因为D与B肯定是相互矛盾的"
2号车为最好
若B说真话, 则a==0,b==1,c==0,d==!b
4号车为最好
若C说真话,则a==0,b==0,c==1,d==!b
不能判断出哪种车最好
若D说真话,则a==0,b==0,c==0,d==!b
3号车为最好,因为C说错了。
它们以上每种组合的合都为1时才符合条件,a+b+c+d==1.

所以,A或B说正确时,实际上有两个车最好,即,A或B正确时,C肯定说错了,即无论A或
B说正确了,那么3号车也为最佳车了。所以程序运行下来。得到D说的正确。
所以3号车是最佳车。