C语言经典面试算法题之日本谋杀案

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

  可以首先假设一个人是凶手,然后设定count,说对了count++,如果某种情况,count刚好为3,则假设正确。

#include<stdio.h>
void  murder_is(char murderer)
{
	int count = 0;
	if (murderer != 'A')
	{
		count++;
	}
	if (murderer == 'C')
	{
		count++;
	}
	if ('D' == murderer)
	{
		count++;
	}
	if (murderer != 'D')
	{
		count++;
	}
	if (count == 3)
	{
		printf("murderer is %c", murderer);
	}
	else
	{
		printf("%c不是凶手", murderer);
	}
}
int main()
{
	murder_is('B');
	getchar();
	return 0;
}

首先我们假设murder是B,看结果:


再假设murder是A,看结果:

再假设murder是c,看结果:

所以可以确定凶手是c.

猜你喜欢

转载自blog.csdn.net/superwangxinrui/article/details/80213986