#include
int main()
{
int s,a,b,c,d; /*变量s代表做好事的同学,abcd代表ABCD同学的说法的正确性*/
for(s='A';s<='D';s++) /*穷举可能性,用字符'A'--'D'代表4个同学*/
{
a=(s!='A'); /*A说不是我: s!='A'*/
b=(s=='C'); /*B说是C : s=='C'*/
c=(s=='D'); /*C说是D: s=='D'*/
d=(s!='D'); /*D说C胡说: s!='D'*/
if((a+b+c+d)==3) /*如果有3个人说的是真的就结束循环并输出*/
{
printf("做好事的同学是:%c\n",s);
break;
}
}
return 0;
}
结果:
用表达式,思路有点混乱,但是我知道答案是C
#include
//答案是C说假话.
int main(void) {
int A = 1, B = 0, C = 0, D = 0;
if (A && C && D && !D) {
printf("A");
return 0;
}
A = 0, B = 1, C = 0, D = 0;
if (!A && !C && D && !D) {
printf("B");
return 0;
}
A = 0, B = 0, C = 1, D = 0;
if (!A && C && !D && !D) {//D说实话也就是说D不是.
printf("C");
return 0;
}
A = 0, B = 0, C = 0, D = 1;
if (!A && C && D && !D) {
printf("D");
return 0;
}
}