C趣味程序百例(15)新娘和新郞
48.新娘和新娘
三对新人参加婚礼,三个新娘是A、B、C,三个新娘是X、Y、z,有人不知道谁要和谁结婚,于是问了六对新人中的三对,听到的回答是这样的:A说他要和X结婚;x说她的未婚夫是C;c说要和z结婚,男人听后知道他们在开玩笑。这全是谎言。请编程找出谁将与谁结婚。
*问题分析及算法设计
A、B、C分别用1、2、3表示,X和A结婚为“X=1”,Y没有和A结婚为“Y!=1"。可以根据题目中的描述来写表达式:
x!=1 A没嫁给X
x!=3 X的未婚夫不是C
z!=3 C不嫁Z
题目也暗示X,Y,Z新娘不能结婚,所以有:
x!=y和x!=z和y!=z
穷尽上述所有可能情况,代入上述表达式进行推理运算。如果假设情境使得上述表达式的结果全部为真,则假设情境为正确结果。
*程序和程序注释
# include
void main()
{
int x,y,z;
for(x = 1;x for(y = 1;y for(z = 1;z if(x!=1&&x!=3&&z!=3&&x!=y&&x!=z&&y!=z) /*判断配偶是否满足题意*/
{
printf ("x会嫁给% c. \ n ",' a '+x-1);/*打印判断结果*/
printf ("y将嫁给% c. \ n ",' a '+y-1);
printf("Z将与%c结婚,\n ",' A '+Z-1);
}
}
*运行结果
X会嫁给B.
Y会嫁给C.
Z会嫁给a。
0条评论