很有意思的c語(yǔ)言的測(cè)試題咯,考考你對(duì)他的了解熟悉程度,題目是這樣的。有三對(duì)情侶參加婚禮,三個(gè)新郞為A、B、C,三個(gè)新娘為X、Y、Z.有人不知道誰(shuí)和誰(shuí)結(jié)婚,于是詢問(wèn)了六位新人中的三位,但聽(tīng)到的回答是這樣的:A說(shuō)他將和X結(jié)婚;X說(shuō)她的未婚夫是C;C說(shuō)他將和Z結(jié)婚。這人聽(tīng)后知道他們?cè)陂_(kāi)玩笑,全是假話。請(qǐng)編程找出誰(shuí)將和誰(shuí)結(jié)婚。
問(wèn)題分析與算法設(shè)計(jì):將A、B、C三人用1,2,3表示,將X和A結(jié)婚表示為”X=1″,將Y不與A結(jié)婚表示為”Y!=1″.按照題目中的敘述可以寫出表達(dá)式:
x!=1 A不與X結(jié)婚
x!=3 X的未婚夫不是C
z!=3 C不與Z結(jié)婚
題意還隱含著X、Y、Z三個(gè)新娘不能結(jié)為配偶,則有:
x!=y且x!=z且y!=z
窮舉以上所有可能的情況,代入上述表達(dá)式中進(jìn)行推理運(yùn)算,若假設(shè)的情況使上述表達(dá)式的結(jié)果均為真,則假設(shè)情況就是正確的結(jié)果。
程序說(shuō)明與注釋
#include
int main()
{
int x,y,z;
for(x=1;x<=3;x++) /*窮舉x的全部可能配偶*/
for(y=1;y<=3;y++) /*窮舉y的全部可能配偶*/
for(z=1;z<=3;z++) /*窮舉z的全部可能配偶*/
if(x!=1&&x!=3&&z!=3&&x!=y&&x!=z&&y!=z) /*判斷配偶是否滿足題意*/
{
printf(“X will marry to %c.n”,’A’+x-1); /*打印判斷結(jié)果*/
printf(“Y will marry to %c.n”,’A’+y-1);
printf(“Z will marry to %c.n”,’A’+z-1);
}
}
*運(yùn)行結(jié)果
X will marry to B. (X與B結(jié)婚)
Y will marry to C. (Y與C結(jié)婚)
Z will marry to A. (Z與A結(jié)婚)