(求解答思路)有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事
有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事.A说:不是我。
B说:是C。
C说:是D。
D说:他胡说。
已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人.
怎么用c语言编程来判断啊。以及设计思想是怎么样的??主要讲下思想,谢谢!
#include<stdio.h> int main() { enum Studnet{A,B,C,D}; enum Studnet y,ly; for (y=A;y<=D;y++) { int t=0; for (ly=A;ly<=D;ly++,t=0) { if (ly!=A) t+=y!=A; else t+=y==A; if (ly!=B) t+=y==C; else t+=y!=C; if (ly!=C) t+=y==D; else t+=y!=D; if (ly!=D) t+=y!=D; else t+=y==D; if (t==4) break; } if (t==4) break; } switch(y) { case A:printf("A\n");break; case B:printf("B\n");break; case C:printf("C\n");break; case D:printf("D\n");break; } return 0; }