用c語言程序判斷誰是小偷
題目:
警察局抓了a,b,c,d四名偷竊嫌疑犯,當中只有一個是小偷,審問結果如下:
a說:“我不是小偷。”
b說:“c是小偷。”
c說:“小偷肯定是d。”
d說:“c在冤枉人。”
現在已經知道4個人中3人說的是真話,一個說的是假話,那么誰是小偷?
分析:
如果不用代碼,讓讀者硬做這題的話,思路往往是一個個假設過去,如假設a是小偷,然后判斷4個人的話是不是3真1假。
用程序判斷真假很簡單,但如何記錄真假的個數呢,這里用到一個技巧,就是“邏輯和”,利用C語言中,Ture為1,False為0來做。
這個算法實質上是模擬了人的思考方式。
1 # include <stdio.h> 2 /** 3 警察局抓了a,b,c,d四名偷竊嫌疑犯,當中只有一個是小偷,審問結果如下: 4 a說:“我不是小偷。” 5 b說:“c是小偷。” 6 c說:“小偷肯定是d。 7 d說:“c在冤枉人。” 8 現在已經知道4個人中3人說的是真話,一個說的是假話,那么誰是小偷? 9 */ 10 int main(void){ 11 for(int x =1;x<=4;x++) 12 { 13 int y = (x!=1)+(x==3)+(x==4)+(x!=4); 14 if(y == 3){ 15 //printf("%d 是小偷。",x); 16 printf("%c 是小偷。",64+x);//C 是小偷。Press any key to continue 17 break; 18 } 19 } 20 return 0; 21 }
輸出結果:
C 是小偷。Press any key to continue
