c语言实现谁是凶手

题目要求:

警察通过排查确定杀人凶手必为4个嫌疑犯的一个。

以下为4个嫌疑犯的供词:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。

算法思路:分别假设A,B,C,D是凶手,分别判断四个人的话是否是真话,当有其中三个人是真话时得出凶手是谁,因此可以利用逻辑判断语句分别判断每句话,再将四个结果加起来,由于说的是真话时相当于加1,说假话相当于加0,故当相加和为3的时候,符合三个人说真话一个人说假话。

具体代码如下:


#include<stdio.h>


int main()
{    

	    // a说:不是我。

		//b说:是c。

		//c说:是d。

		//d说:c在胡说

	const char* str = " abcd";
	int kill = 0;//凶手编号

	for (kill = 1; kill <= 4; kill++)
	{

		if (((kill != 1) + (kill == 3) + (kill == 4) + (kill != 4)) == 3)
		{

			printf("%c", str[kill]);
		}


	}



	return 0;

}

该算法中利用kill作为凶手,A是1,B是2,C是3,D是4,遍历kill=1,2,3,4,当kill=n时则n对应的人是凶手,后利用逻辑判断是否和为3,为3的则是凶手。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值