C语言每日一题(10):无人生还



  • 文章主题:无人生还🔥
  • 所属专栏:C语言每日一题📗
  • 作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶
  • 个人主页:[₽]的个人主页🏄🌊

目录


前言

编程起因

最近刚刷到过一个有关逻辑判断的猜凶手的题目,于是想着能不能将其带入到无人生还^1^的背景中去重新设计一下这个题目,增强题目趣味性的同时还能更加好的锻炼我们的编程思维,于是有了这篇文章的设计。

项目介绍

情节简介

士兵岛上现在只剩下了四个人,眼看着桌上的小士兵只剩下了四个,四个人更加的诚惶诚恐,生怕下一个对应童谣死的就是自己,剩下的人分别是维拉教师,隆巴德队长,阿姆斯特朗医生以及布洛尔侦探(这里简用A,B,C,D进行标记)。为了避免被单独被杀,四个人聚集在了一起,他们一边互相猜忌,一边讨论谁最有可能伪造了自己独处时的经历,这个人要么和欧文先生串通一气,要么就是欧文先生本人。

讨论内容

讨论内容简记如下:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说。

找出凶手

假设二刷《无人生还》的你依稀记得这四个人中有三个说的是假话一个说的是真话,那么伪造经历的到底是谁呢?请运用编程来查出这个人。


设计思路

1.整体逻辑

方法一

运用依次假设法以此判断每个人是伪造者时条件是否为真

方法二

运用逻辑推断法直接得出要么D是伪造者,要么D不是,在依次判断条件,真就是D,假就是C。

2. 具体逻辑

方法一

设置四个变量代表凶手,分别将其赋值为0,从a开始一次通过赋值为1来假设伪造经历的人,在运用分支语句将四句话变成判断语句的形式在相加,如果三真一假成立的话则和为1,判断其和是否为3,若为3,则找出凶手,若不为一,则将a赋值回1洗清a的嫌疑后再继续假设下一个人。

方法二

既然四个人说的话中三真一假,仔细观察可知C和D的话互相矛盾,C说D是伪造经历的那个人,D说C说谎,那么只要假设D是否是这个人即可,如果D是时条件判断也是真就是D,反之就是C。


代码展示

方法一:依次假设法(最容易想到的方法)

c 复制代码
#include <stdio.h>
int main()
{
	int a = 0, b = 0, c = 0, d = 0;
	if (a = 1)//假设伪造者是A
	{
		if (((a != 1) + (c == 1) + (d == 1) + !(d == 1)) == 3)//判断是否符合三假一真条件
		{
			printf("The killer is A\n");
		}
		else
		{
			a = 0;
		}
	}
	if (b = 1)
	{
		if (((a != 1) + (c == 1) + (d == 1) + !(d == 1)) == 3)
		{
			printf("The killer is B\n");
		}
		else
		{
			b = 0;
		}
	}
	if (c = 1)
	{
		if (((a != 1) + (c == 1) + (d == 1) + !(d == 1)) == 3)
		{
			printf("The killer is C\n");
		}
		else
		{
			c = 0;
		}
	}
	if (a = 1)
	{
		if (((a != 1) + (c == 1) + (d == 1) + !(d == 1)) == 3)
		{
			printf("The killer is D\n");
		}
		else
		{
			d = 0;
		}
	}
	return 0;
}

方法二 :逻辑推断法(较容易想到,速度最快,结构最简单)

c 复制代码
#include <stdio.h>
int main()
{
	int a = 0, b = 0, c = 0, d = 0;
	if (d = 1)//假设伪造者是D
	{
		if (((a != 1) + (c == 1) + (d == 1) + !(d == 1)) == 3)//判断是否符合三假一真条件
		{
			printf("The killer is D\n");//是则伪造者是D
		}
		else
		{
			printf("The killer is C\n");//不是伪造者只能是C
		}
	}
	return 0;
}

效果展现


结语

以上就是我对无人生还这个项目的解题思路,代码以及效果展示,那么你猜到凶手是谁了吗?😄希望对你的C语言学习有所帮助!作为刚学编程的小白,可能在一些设计逻辑方面有些不足,欢迎评论区进行指正!看都看到这了,点个小小的赞或者关注一下吧(当然三连也可以~),你的支持就是博主更新最大的动力!让我们一起成长,共同进步!


  1. 《无人生还》(And Then There Were None,1939年发行时书名为Ten Little Niggers,后改为Ten Little Indians),是英国推理小说作家阿加莎·克里斯蒂创作的长篇小说,出版于1939年。

    该小说讲述了一起发生在荒岛之上的连环谋杀案。《无人生还》融合了犯罪小说之外的故事类型。如文中对不少人物,特别是布伦特小姐和维拉的心理活动有着大段描写,有些段落接近意识流小说的写法。 ↩︎

相关推荐
USER_A0011 小时前
【C语言】第五期——函数
c语言
StickToForever4 小时前
第4章 信息系统架构(五)
经验分享·笔记·学习·职场和发展
李白同学7 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
楼台的春风8 小时前
【MCU驱动开发概述】
c语言·驱动开发·单片机·嵌入式硬件·mcu·自动驾驶·嵌入式
Moonnnn.8 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
南宫生9 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
技术小齐9 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
竹言笙熙9 小时前
代码审计初探
学习·web安全
日记成书9 小时前
物联网智能项目
物联网·学习