c语言200例 007 婚礼上的谎言

问题:三对情侣参加婚礼,3个新郎a、b、c,3个新娘x、y、z,有人想知道究竟谁和谁结婚,于是就问新人中的三位,得到如下提示:a说他将和x结婚;x说他的未婚夫是c;c说他将和z结婚。这人事后知道他们都在开玩笑,说的全是假话,那么究竟谁与谁结婚呢?

运行结果如下

思考:如果用“a = 1”表示新郎a和新娘x结婚,同理,如果新郎a不与新娘x结婚则写成“a!=1”,把x, y, z使用1,2,3表示,根据题意可以得到如下的表达式

a!=1 a不与x结婚

c!=1 c不与x结婚

c!=3 c不与z结婚

利用for循环来穷举,并且用if进行条件判断使三者同时成立,要用到逻辑运算符 &&

到这里就结束了吗?

请各位仔细思考,题中的隐藏条件,那就是三个新郎不能互相结婚(没有歧视同性恋,这里只是逻辑思考要求)

所以我们还应该要注意

a != b

b != c

a != c 

最终写出来的代码如下

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a, b, c;
	for (a = 1; a <= 3; a++)
		for (b = 1; b <= 3; b++)
			for(c = 1; c <= 3; c++)
				if(a != 1 && c != 1 && c != 3 && a != b && a != c && b != c)
				{
					printf("%c 将嫁给 A\n", 'X' + a - 1);
					printf("%c 将嫁给 B\n", 'X' + b - 1);
					printf("%c 将嫁给 C\n", 'X' + c - 1);
				}
	return 0;
} 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值