A说:不是我
B说:是C
C说:是D
D说:C说谎
三人说的是真话,一人说假话。编一程序找出做好事的人
2.某地刑侦大队涉及六个嫌疑人的一桩疑案惊醒分析:
A、B至少有一人作案
A、E、F三人中至少有两人参与作案
A、D不可能是同案犯
B、C或同时作案,或与本案无关
C、D中有且仅有一人做案
如果D没有参与作案,则E也不可能参与作案
编一程序,将作案人找出
用C或是C++都可以
main() { int k; for(k=1;k<=4;k++) if((k!=1)+(k==3)+(k==4)+(k!=4)==3) printf("是%c做的好事!",64+k); } /**************其中k!=1代表A说的话"不是我干的" k==3代表B说的话"是C干的" k==4代表C说的话"是D干的" k!=4代表D说的话"C说谎(即不是D干的)" 其中以1234代表ABCD 最后"64+K"是为了输出ABCD(A的ASCII码是65)*******************************************/ #include<stdio.h> #include<conio.h> main() {int A,B,C,D,E,F; clrscr(); for(A=0;A<=1;A++) for(B=0;B<=1;B++) for(C=0;C<=1;C++) for(D=0;D<=1;D++) for(E=0;E<=1;E++) for(F=0;F<=1;F++) if((!(!A&&!B))&&((A&&E&&F)||(A&&E&&!F)||(A&&!E&&F)||(!A&&E&&F))&&(!(A&&D))&&((B&&C)||(!B&&!C))&&((C&&!D)||(!C&&D))&&(!(!D&&E))==1) {
if(A)printf("A"); if(B)printf("B"); if(C)printf("C"); if(D)printf("D"); if(E)printf("E"); if(F)printf("F"); printf("is suspects!"); } return 0; }
[此贴子已经被作者于2005-9-22 13:56:17编辑过]