编程题:猜凶手 (C语言实现)

#include<stdio.h>
int main()
{
	int killer = 0;
	for (killer = 'a'; killer <= 'd';killer++)
	{
		if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
		{
			printf("凶手是:%c", killer);
		}
	}
	return 0;
}

只有3个人说真话 1个人说假话
A;不是我 B:是C   C:是D   D:C在胡说

依次假设A,B,C,D是凶手,例如先假设A是凶手,则A说的是假话,B说的是假话,C说的是假话,D说的是真话。 所以总共是3个人说假话,1个人说真话 不符合

假设B是凶手,则A说的是真话,B说的是假话,C说的是假话,D说的是真话。 所以总共是2个人说假话,2个人说真话 不符合

假设C是凶手,则A说的是真话,B说的是真话,C说的是假话,D说的是真话。 所以总共是1个人说假话,3个人说真话 符合

假设D是凶手,则A说的是真话,B说的是假话,C说的是真话,D说的是假话。 所以总共是2个人说假话,2个人说真话 不符合

编程实现:
创建变量killer (凶手)
建立个循环,以killer为A开始依次比对4个条件,若不满足3个为真则,A++,设B为凶手,再比对4个条件,直至满足3个为真,则那时killer的值为凶手。

猜你喜欢

转载自blog.csdn.net/Groic/article/details/121310609
今日推荐