【C++】逻辑题目

文章讨论如何将一道关于识别小偷的逻辑推理问题转化为编程任务,通过遍历嫌疑人并分析他们的话语真假,实现程序自动找出真凶。
摘要由CSDN通过智能技术生成

题目

看一道很简单的小学数学题。

警察局抓了A、B、C、D四名偷窃嫌疑犯,其中有一人是小偷。审问中A说:“我不是小偷。”B说:“C是小偷。”C说:“小偷肯定是D。”D说:“C在冤枉人。”现在已经知道四个人中三个人说的是真话,一个人说的是假话,问到底谁是小偷?

这道题派一名小学生来都会做;可是现在要编程求出来,很多人就没思路了。


解题

  1. 既然A、B、C、D中有一人是小偷,那么我们就先循环遍历这四个人

    for(char t='A'; t<='B'; t++){}
    

  2. 现在我们已经遍历出了待定的小偷,接下来就要判断当前待定小偷符不符合条件了。

    1. 先将每个人说的话都写成表达式,就分别可以得到'A'!=t'C'==tt=='D't!='D'
    2. 而,已知有三句话是真话,也就是说这些表达式中有三个表达式的值为true1)、一个为false0)。
    3. 那么,我们就只需要将这些表达式全部加起来,判断和是否等于3即可。如果成立,就说明当前待定小偷符合条件,直接输出。
    if(('A'!=t)+('C'==t)+(t=='D')+(t!='D')==3){
    	printf("%c", t);
    }
    

完整代码就是这样。

#include<cstdio>
int main(){
	for(char t='A'; t<='D'; t++){
		if(('A'!=t)+('C'==t)+(t=='D')+(t!='D')==3){
			printf("%c", t);
		}
	}
	return 0;
}

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件专业C语言课程设计题目:实现一个简单的学生信息管理系统 这个学生信息管理系统主要包含以下基本功能: 1. 显示菜单:系统开始运行后,会显示一个菜单,列出系统提供的功能选项。 2. 添加学生信息:用户可以输入学生的姓名、年龄、性别和学号等基本信息,并将其保存到系统中。 3. 删除学生信息:用户可以根据学号来删除指定学生的信息。 4. 修改学生信息:用户可以根据学号来修改指定学生的信息。 5. 查询学生信息:用户可以根据学号来查询指定学生的信息,并将其显示出来。 6. 显示所有学生信息:用户可以选择显示系统中所有学生的信息。 7. 退出系统:用户选择退出系统后,程序结束运行。 针对这个课设题目,我们可以使用C语言来实现一个简单的控制台程序。可以使用结构体来定义学生的基本信息,通过动态数组或链表来保存学生信息,使用菜单驱动程序来实现各个功能。 在实现的过程中,我们需要根据用户的选择调用相应的函数实现各个功能。比如,用户选择添加学生信息时,就调用添加学生信息的函数;用户选择查询学生信息时,就调用查询学生信息的函数。 对于每个功能,我们需要实现相应的输入和输出,以便用户进行操作和查看结果。我们还需要考虑边界情况的处理,比如用户输入学号不存在时,我们应给出相应的提示信息。 通过这个学生信息管理系统的设计和实现,可以帮助学生加深对C语言的理解和实践,提高编程能力和逻辑思维能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值