C語(yǔ)言猜兇手及類似題目的實(shí)現(xiàn)示例_第1頁(yè)
C語(yǔ)言猜兇手及類似題目的實(shí)現(xiàn)示例_第2頁(yè)
C語(yǔ)言猜兇手及類似題目的實(shí)現(xiàn)示例_第3頁(yè)
C語(yǔ)言猜兇手及類似題目的實(shí)現(xiàn)示例_第4頁(yè)
C語(yǔ)言猜兇手及類似題目的實(shí)現(xiàn)示例_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第C語(yǔ)言猜兇手及類似題目的實(shí)現(xiàn)示例目錄描述:思路及分析:現(xiàn)在,我們來(lái)看和它相似的第二道題目:描述:思路及分析:第三道題目:描述:思路及分析:總結(jié):

描述:

日本某地發(fā)生了一件謀殺案,警察通過(guò)排查確定殺人兇手必為4個(gè)嫌疑犯的一個(gè)。

以下為4個(gè)嫌疑犯的供詞:

A說(shuō):不是我。

B說(shuō):是C。

C說(shuō):是D。

D說(shuō):C在胡說(shuō)

已知3個(gè)人說(shuō)了真話,1個(gè)人說(shuō)的是假話。

現(xiàn)在請(qǐng)根據(jù)這些信息,寫一個(gè)程序來(lái)確定到底誰(shuí)是兇手。

思路及分析:

從來(lái)沒(méi)有做過(guò)類似題目的同學(xué)第一次看見(jiàn)這道題,可能有點(diǎn)發(fā)懵。然后開(kāi)始考慮假設(shè),排列組合,枚舉等等...但是這道題的代碼結(jié)果會(huì)讓你大吃一驚。

首先,要考慮的是如何用代碼表示A,B,C,D這四個(gè)人說(shuō)的話?我們定義一個(gè)char變量killer來(lái)表示兇手。最能想到的就是如果某個(gè)人說(shuō)的話是成立的話,將他的結(jié)果為1(類似于bool類型),否則就是0。這樣的想法是正確的。A說(shuō),不是A,那么,可以表示為killer!=A。判斷成立的話,他就會(huì)返回1,否則,返回0。類似的,其他3個(gè)人說(shuō)的話也可以這樣來(lái)表示。最后,根據(jù)3個(gè)人說(shuō)了真話,1個(gè)人說(shuō)了假話得知返回的總和為3。比如,我們假設(shè)A就是兇手,那么根據(jù)四個(gè)人說(shuō)的話,A說(shuō)了假話,B也說(shuō)了假話,和條件是不符合的。這樣之后,只是判斷了A的情況,B,C,D的情況還沒(méi)有判斷,只需要加一個(gè)循環(huán)就可以了。

C語(yǔ)言代碼如下:

#includestdio.h

intmain(void)

charkiller='A';

for(killer='A';killer='D';killer++)

if((killer!='A')+(killer=='C')+(killer=='D')+(killer!='D')==3)

printf("thekilleris%c",killer);

return0;

}

結(jié)果如下:

現(xiàn)在,我們來(lái)看和它相似的第二道題目:

描述:

兩個(gè)乒乓球隊(duì)進(jìn)行比賽,甲隊(duì)為ABC三人;乙隊(duì)為XYZ三人;抽簽決定比賽名單,有人向隊(duì)員打聽(tīng)比賽的名單,A說(shuō)他不和X比,C說(shuō)他不和Z比。請(qǐng)編程輸出所有可能的對(duì)陣方案,并統(tǒng)計(jì)方案的個(gè)數(shù)。

思路及分析:

這道題和猜兇手那道題目的方法是一致的,都是直接把題目的文字描述轉(zhuǎn)換為代碼描述。直接使用for循環(huán)即可。代碼如下:

#includestdio.h

intmain(void)

charA=0;

charB=0;

charC=0;

for(A='X';A='Z';A++)

for(B='X';B='Z';B++)

for(C='X';C='Z';C++)

if((A!='X')+(C!='Z')==2)

if(A!=BB!=CC!=A)

printf("AVS%c,BVS%c,CVS%c\n",A,B,C);

return0;

}

結(jié)果如下:

第三道題目:

5位運(yùn)動(dòng)員參加了10米臺(tái)跳水比賽,有人讓他們預(yù)測(cè)比賽結(jié)果:

A選手說(shuō):B第二,我第三;

B選手說(shuō):我第二,E第四;

C選手說(shuō):我第一,D第二;

D選手說(shuō):C最后,我第三;

E選手說(shuō):我第四,A第一;

比賽結(jié)束后,每位選手都說(shuō)對(duì)了一半,請(qǐng)編程確定比賽的名次。

思路及分析:

暴力破解法即可。代碼如下:

#includestdio.h

intmain(void)

inta=0,b=0,c=0,d=0,e=0;

for(a=1;aa++)

for(b=1;bb++)

for(c=1;cc++)

for(d=1;dd++)

for(e=1;ee++)

if(((b==2)+(a==3)==1)//B第二,我第三

((b==2)+(e==4)==1)//我第二,E第四

((c==1)+(d==2)==1)//我第一,D第二

((c==5)+(d==3)==1)//C最后,我第三

((e==4)+(a==1)==1))//我第四,A第一

if(a*b*c*d*e==120)

printf("%d%d%d%d%d\n",a,b,c,d,e);

return0;

}

總結(jié):

最后一道題目來(lái)看,出現(xiàn)了驚人的五個(gè)for循

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論