某刑偵大隊對涉及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”);

}

}

兩個程式只是有兩行程式碼不一樣,但是第二個程式輸出是錯誤的

C語言題目: 某刑偵大隊對涉及6 個嫌疑人的一樁疑案進分析,得出初步結論:樁坐諝坐字柞y2013-11-22

if(C+D==0&&C+D==2)&& 應該是 || 吧