C语言题目: 某刑侦大队对涉及6 个嫌疑人的一桩疑案进分析,得出初步结论:0
某刑侦大队对涉及6 个嫌疑人的一桩疑案进分析,得出初步结论:
1) A、B 至少有一人作案;
2) A、E、F 这3 人中至少有两人参与作案;
3) A、D 不可能是同案犯;
4) B、C 或同时作案,或与本案无关;
5) C、D 中有且仅有1 人作案;
6) 如果D 没有参与作案,则E 也不可能参与作案。
试编程,用枚举法通过逻辑分析找出作案人。
#include
void main()
{
int A,B,C,D,E,F;//0表示没作案,1表示作案
for(A=0;A<2;A++)
for(B=0;B<2;B++)
for(C=0;C<2;C++)
for(D=0;D<2;D++)
for(E=0;E<2;E++)
for(F=0;F<2;F++)
{
if(A==0&&B==0)
continue;
if((A==0&&E==0)||(A==0&&F==0)||(E==0&&F==0))
continue;
if(A==1&&D==1)
continue;
if((B==1&&C==0)||(B==0&&C==1))
continue;
if((C==1&&D==1)||(C==0&&D==0))
continue;
if(D==0&&E==1)
continue;
printf("作案人员有:");
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("\n");
}
}
#include
void main()
{
int A,B,C,D,E,F;//0表示没作案,1表示作案
for(A=0;A<2;A++)
for(B=0;B<2;B++)
for(C=0;C<2;C++)
for(D=0;D<2;D++)
for(E=0;E<2;E++)
for(F=0;F<2;F++)
{
if(A==0&&B==0)
continue;
if((A==0&&E==0)||(A==0&&F==0)||(E==0&&F==0))
continue;
if(A==1&&D==1)
continue;
if(B+C==1)
continue;
if(C+D==0&&C+D==2)
continue;
if(D==0&&E==1)
continue;
printf("作案人员有:");
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("\n");
}
}
两个程序只是有两行代码不一样,但是第二个程序输出是错误的