當前位置:首頁 » 編程語言 » 用c語言解決邏輯推理題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用c語言解決邏輯推理題

發布時間: 2023-08-25 19:34:26

『壹』 c語言打碎花瓶題目

int a[4] = {0}; // a[0]:甲;a[1]:乙;a[2]:丙;a[3]:丁

/*0表示沒打碎,1表示打碎:

* 甲說:乙沒有打碎,是丁打碎的 -> a[1]+a[3] == 1

* 乙說:我沒有打碎,是丙打碎的 -> a[1]+a[2] == 1

* 丙說:甲沒有打碎,是乙打碎的 -> a[0]+a[1] == 1

*/

if (a[1]+a[3] == 1 && a[1]+a[2] == 1 && a[0]+a[1] == 1)

為什麼上述條件這么寫呢?我猜測是因為「4個人中每個人要麼是誠實的,要麼總是說謊的。」我沒看懂這個條件。

此類邏輯推理題,說謊與誠實這個條件是很重要的,由此,我用C語言實現了另一道邏輯推理題,供參考。

『貳』 幾個關於邏輯運算的C語言題目

包括:1。&&邏輯與
2。||邏輯或
3。!邏輯非
邏輯運算符用於對包含關系運算符的表達式進行合並或取非
對於使用邏輯運算符的表達式,返回0表示「假」,返回1表示「真」。清物關於邏輯運算符的解釋
請注意:任何使用兩個字元做符號的運算符,兩字元之間不應有空格,即將==寫成=
=是錯誤的。
假設一個程序在同時滿足條件a<10和b==7時,必須執行某些操作。應使用關系運算符和邏輯運算符「與」來寫這個
條件的代碼。用&&表示「與」運算符,該條件代碼如下:
(a<10)
&&
(b==7);
類首正穗似地,「或」是用於檢查兩個條件中是否有一個為真的運算符。它由兩個連續的管道符號(||)表示。如果上例
改為:如果任者卜一語句為真,則程序需執行某些操作,則條件代碼如下:
(a<10)
||
(b==7);
第三個邏輯運算符「非」用一個感嘆號(!)表示。這個運算符對表達式的真值取反。例如,如果變數s小於10,程序
程序需執行某些操作,則條件代碼如下:
(s<10)

(!(s>=10))
//s不大於等於10
關系運算符和邏輯運算符的優先順序一般都低於算術運算符。例如,5>4+3的計算與5>(4+3)運算符是一樣的,即
先計算4+3,再執行關系運算。此表達示的結果為「假」,即,將返回0。
下面的語句
printf("%d",5>4+3);
將輸出
0
可以總結為:&&的結果是真真為真。||的結果是假假為假。

『叄』 C語言幫忙啊

假設B說的是對的,D反對,那麼B和D只有一個對的.因為車手中只有一名車手是對的,那麼否定A,可以斷定2號車不是最好的.同時也否定了C的說法,那麼C說的3號車不是最好的是錯的,所以D說的是對的,同時3號車是最好的.

所以設定的初始條件有隻有一個人說的是對的,只有一輛車是最好的.
所以應該從車手的角度來判斷問題,否定上面的答案.
第一步:如果A是正確的,那麼C和D的說法也是正確的,所以不能滿足只有一個人說的是對條件,所以A肯定不正確,也就排除了A和2號車.
第二步:如果B是正確的,那麼D的說法是錯誤.但C的說法是正確的,不滿足設定的條件,那麼排除了B和4號車
第三步:如果C是正確的,那麼B或者D是正確,不能滿足上述條件,所以C說的是錯誤,但是可以確定3號車;
第四步:如果D是正確的,由於排除了ABC的錯誤說法,所以D的說法是正確的.

四個循環

所以從數據結構的角度出發,定義好數據結構,明確各個關系非常重要,只有這樣才能有一個明確的判斷