1樓:匿名使用者
分析:我們判斷的方法是:先假設某人是小偷,然後判斷四個嫌疑犯說的話是不是有三句真的,一句假的。如果是,則假設成立,找到小偷。
用『a』,』b』,』c』,』d』 四個字元分別代表a,b,c,d這四個人。用變數x代表小偷。
則四個嫌疑犯說的話可以轉化為四個關係表示式:
a說:「我不是小偷。」 x<>』a』
b說:「c是小偷。」 x=『c』
c說:「小偷肯定是d。」 x=『d』
d說:「c在冤枉人。」 x<>』d』
我們為x賦值,即假設某人是小偷,如:x『a』,即假設a是小偷,然後判斷四個嫌疑犯說的話是不是有三句真的一句假的。
下面是我寫的,都對,希望能幫助你:
program ex(input,output);
var x:char; n:integer;
begin
for x:=『a』 to 『d』 do begin
n:=0;
if x<>』a』 then n:=n+1;
if x=』c』 then n:=n+1;
if x=』d』 then n:=n+1;
if x<>』d』 then n:=n+1;
if n=3 then writeln(x,』 is a thief.』);
end;
end.
要加分哦~呵呵~
2樓:匿名使用者
哎,什麼警察抓小偷啊,這種小事就不用我工藤新一上場了。
若a說謊,則b、c、d是真話,因為a說謊,所以a是小偷,又因為b說c是小偷,矛盾。
若b說謊,則a、c、d是真話,而c、d兩人的話又矛盾了。
若c說謊,則a、b、d是真話,可以判斷出c是小偷,沒有矛盾哦。
若d說謊,則a、b、c是真話,b、c有矛盾了。
所以說,咳咳,毛利小五郎登場。
**就是你------------c!!!!!!!!!!!!!
3樓:
program sd;
var t:char;
begin
for t:='a' to 'd' do
if ord(t<>'a')+ord(t='c')+ord(t='d')+ord(t<>'d')=3 then writeln(t);
end.
ord(true)=1,ord(false)=0,取它們的值就可判斷出有幾個是真.
4樓:
列舉一下誰說假話然後判斷一下剩下的是不是真話
pascal高手請進
vari,f,a integer begin readln a f 0 for i 2 to a div 2 doif a mod i 0 then f 1 if f 0 then writeln yes else writeln no end.其實你弄乙個 哨兵 比較方便 錯誤 for迴圈中的if...
急啊!!高手請進,C高手請進,急啊!!!!!!!
首先防毒 如果是有病毒殺了先 然後查記憶體 可能就要重灌了 最後硬碟也可能出問題 膝上型電腦 建議你還是送修。你即使弄清楚了又有何用?自動動手修的話,到時只怕廠商的維修部門會以這個作為藉口來向你收取本來你不應該交的費的。電腦突然重啟,並反覆重啟,基本可以判定為中病毒了,教你個防毒思路 首先插入系統光...
戀愛高手請進啊
呼叫情聖 你就老老實實說你心中的想法 她的意思是,你光一句做你女朋友就完了?一點實際行動也沒有?追女孩子,怎麼也得出點血吧.你太直接了,凡事都要有個過程,先對她好,多聯絡,有一段時間了以後,再跟她說,我喜歡你。恭喜你!你已經成功了一半,接著就是多多關心她,照顧她,在某個恰當的時機,說一句 i lov...