C语言实现,简单实现数学,猜凶手和,游泳比赛编程判断

39 篇文章 0 订阅
27 篇文章 0 订阅


猜凶手

猜凶手
题目内容:
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:A说:不是我。//0(假)
B说:是C。//0
C说:是D。//0
D说: c在胡说//1
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写-个程序来确定到底谁是凶手

原理

这里假设a是凶手
如果a是凶手3假1,真不满足条件,不满足就换个人假设直到3个人说了真话,1个人说的是假话。成立

实现方法(假设法)

 	int killer = 0;
for (killer = 'a'; killer <= 'd'; killer++){
if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3){
		printf("killer = %c\n", killer);
  }
}

结果

在这里插入图片描述

游泳比赛

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:

A选手说: B第二, 我第三;
B选手说:我第二,E第四; .
C选手说:我第一,D第二;
D选手说: C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半, 请编程确定比赛的名次。

实现方法(穷举法)

原理

把所有的可能显示出来进行过滤在这里插入图片描述

int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
	for (a = 1;a <= 5;a++)
	{
		for (b = 1;b <= 5;b++)
			for (c = 1;c <= 5;c++)
			{
				for (d = 1;d <= 5;d++)
				{
					for (e = 1;e <= 5;e++)
					{
						if (((b == 2) + (a == 3) == 1) &&
							((b == 2) + (e == 4) == 1) &
							((c == 1) + (d == 2) == 1) &&
							((c == 5) + (d == 3) == 1) &&
							((e == 4) + (a == 1) == 1))
						{
							
								printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);
						}
					}
				}
			}

	}

加上过滤12345名一人只有一个if (a * b * c * d * e == 120)

结果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值