1、日本某地发生了一件谋杀案,根据供词及其真假情况写一个程序来确定到底谁是凶手 2、根据运动员的预测结果及其预测的正确情况,写程序确定名次

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

代码思路:首先创建一个字符变量murderer表示凶手,让其从A到D遍历。然后将四个人的供词用表达式写出来,相加,放入if语句的判断条件中,三真一假(即为3)。能满足条件进入if语句的murderer即为凶手。
A的供词:murderer != ‘A’;
B的供词:murderer == ‘C’;
C的供词:murderer == ‘D’;
D的供词:murderer != ‘D’;

int main()
{
	char m = 0;
	for (m = 'A'; m <= 'D'; m++)
	{
		if ((m != 'A') + (m == 'C') + (m == 'D') + (m != 'D') == 3)//if的括号里表达式是真则为1,假则为0
		{
			printf("the murderer is %c\n", m);
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述

2、5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

代码思路:与上个问题类似,先创建5个整形变量a、b、c、d、e表示五位运动员A、B、C、D、E的名次。再将它们依次从第一名~第五名(即1到5)遍历。然后将5名运动员的预测结果用表达式写出来,放入if语句的判断条件中去。能满足条件进入if语句的a、b、c、d、e就是正确排名
注意:这里除了运动员的预测结果,还有一个隐含条件:五名运动员的名次各不相同,分别为1、2、3、4、5

由于每位选手都只说对了一半,因此每位选手预测的两个名次中一个为真,一个为假。表达式相加为1:
A:(b == 2) + (a == 3) == 1
B:(b == 2) + (e == 4) == 1
C:(c == 1) + (d == 2) == 1
D:(c == 5) + (d == 3) == 1
E:(e == 4) + (a == 1) == 1
隐含条件:
a * b * c * d * e == 120(注意:不能表示为a+b+c+d+e==15,当他们的和为15时也可能名次重复,例如:1、2、2、5、5)

int main()
{
	int a = 0; //创建5个变量表示各选手名次
	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 ((a == 3) + (b == 2) == 1 &&
							(b == 2) + (e == 4) == 1 && 
							(c == 1) + (d == 2) == 1 && 
							(c == 5) + (d == 3) == 1 && 
							(a == 1) + (e == 4) == 1 &&
							(a*b*c*d*e==120))//a、b、c、d、e各不相等,它们分别为1~5,故它们的乘积必为120
						{
							printf("a=%d, b=%d, c=%d, d=%d, e=%d\n", a, b, c, d, e);
						}
					}
				}
			}
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值