1樓:
a,b,c,d:boolean;
a=1; b=0; c=0; d=0; //如果是a
if ((not (not a))and(c)and(d)and(not d))or ((not a)and(not c)and(d)and(not d))or
((not a)and(c)and(not d)and(not d))or((not a)and(not c)and(d)and(not (not d)))
then writeln('a');
a=0; b=1; c=0; d=0;//如果是b
if ((not (not a))and(c)and(d)and(not d))or ((not a)and(not c)and(d)and(not d))or
((not a)and(c)and(not d)and(not d))or((not a)and(not c)and(d)and(not (not d)))
then writeln('a'); //和上面一樣,可以放到函式裡面
a=0; b=0; c=1; d=0;
...a=0; b=0; c=0; d=1;
...這是我的想法,太久沒寫pascal,不太標準
2樓:善良的茹毛飲血
選c 就是c
看看是誰做的好事 c語言!!!!!!
3樓:匿名使用者
做了好事不留名,意思就是有一個人說了謊話,因此分四種情況,以abcd分別說了謊為四個條件來算,最後輸出滿足的結果。正確程式如下:
#include
void main()
}供參考:)
4樓:
編這個還真不會...不過,按邏輯推理的話
4個同學的話中你看d,他說“有一個人說的不對”從這裡開始推理....
我就直接告訴你答案自己推,
a不是我,是對的
b是c,是對的
c是d,是錯的
所以d說c是錯的。ok
5樓:
c 語言中程式設計出來就是c 這個答案。
不用c 程式設計就不知道了。
因為在c 語言程式設計中。你首先定義的a,b,c ,d。 a 說不是。
就一定不是了(程式中你得用這句話做判定,來排除a )。只有 c,d有可能(b沒人說,所以沒他的份)。然後c說的d 。
d說c不對,就只有c 了。
程式設計就算了吧。我討厭程式設計。
根據上面的思路,自己搞定吧。不難,學了點c 的都行。
6樓:匿名使用者
#include
int logic(int a, int n);
int main()
printf("%c\n", 'a'+ans);
}int logic(int assert, int n)else
}/* 驗證 */
while (res)
if (check == 1)
break;
}if (i != n)
return ans;
else
return -1;
} 思路是這樣的他們中間有且只有一個人在說謊, 把這個說謊的人說的話取反, 和另外三個人的話取交集, 會得到唯一的一個做好事的人. 程式分別假設這四個人中一個人說謊, 其他人說實話,
求三個真話和一個取反的謊話(=真話)的交res, 然後判斷res中是否只包含一個人(有幾位是1), 就得到了結果 。
7樓:雙月夜雪
#include
int main()
;int b[4]=;
for(i=0;i<4;i++)
a[i]=0;
}getchar();}