使用C语言来做逻辑题

题目如:

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为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’;

题二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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值