【C语言】【典例详解】【刷题】猜名次猜凶手【循环练习】

news2024/10/6 14:28:09

目录

猜名次问题

典例题目

题目分析:

代码实现:

运行结果:

猜凶手问题 

典例题目

题目分析

代码实现:

运行结果:


猜名次问题

典例题目

猜名次:
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
 


题目分析:

暴力求解:

直接用5层for循环遍历;

两条件:

条件1:A,B,C,D,E选手每个人只能有一个名次,可以知道他们的名次乘积为1*2*3*4*5=120;

条件2:由题目可知,每个选手都说对了一半;C语言中,如果条件为真结果为1,为假即为0;

所以第二个条件可以用这个性质得出:(A==3)+(B==2)==1&&    
                                                             (B==2)+(E==4)==1&&
                                                             (C==1)+(D==2)==1&&
                                                             (C==5)+(D==3)==1&&
                                                             (E==4)+(A==1)==1


代码实现:

int main()
{
	printf("ABCDE的名次依次为:\n");
	int A, B, C, D, E;
	for (A = 1; A < 6; A++)
	{
		for (B = 1; B < 6; B++)
		{
			for (C = 1; C < 6; C++)
			{
				for (D = 1; D < 6; D++)
				{
					for (E = 1; E < 6; E++)
					{
						if((A==3)+(B==2)==1&&	
						   (B==2)+(E==4)==1&&
						   (C==1)+(D==2)==1&&
						   (C==5)+(D==3)==1&&
						   (E==4)+(A==1)==1&&
						   A*B*C*D*E==120)
						{
						printf("%d %d %d %d %d", A, B, C, D, E);
						}
					}
				}
			}
		}
	}
	return 0;
}

运行结果:



猜凶手问题 

典例题目

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


题目分析

这题和猜名次问题非常相似,所以我们可以用猜名次的思想一样解决

因为猜名次问题A,B,C,D,E都是等于某个名次,都是数

1.所以我们这里规定如果是凶手就为1,不是就为0;

2.这里有4个人,所以用4层for循环

3.两个条件:

条件1:因为他们当中只有一个人说了假话,所以类似猜名次问题,条件可改为

(((A != 1) + (C == 1) + (D == 1) + (D != 1) == 3) && (A + B + C + D == 1))

条件2:因为凶手只有一个,只有一个为1,所以条件可以是:

A+B+C+D==1

4.最后再判断谁是1,如果是1就打印谁的名字


代码实现:

int main()
{
	int A, B, C, D;
	for (A=0;A<2;A++)
	{
		for (B = 0; B < 2; B++)
		{
			for (C = 0; C < 2; C++)
			{
				for (D = 0; D < 2; D++)
				{
					if (((A != 1) + (C == 1) + (D == 1) + (D != 1) == 3) && (A + B + C + D == 1))
					{
						if (A == 1)
						{
							printf("凶手是A\n");
						}
						if (B == 1)
						{
							printf("凶手是B\n");
						}
						if (C == 1)
						{
							printf("凶手是C\n");
						}
						if (D == 1)
						{
							printf("凶手是D\n");
						}
					}
				}
			
			}
		}
	}
	return 0;
}

运行结果:

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VM虚拟机配置

1、安装环境 1&#xff09;需要安装的软件 2&#xff09;安装vm 3&#xff09;安装centos系统 2、VM虚拟机NAT模式上网设置 1&#xff09;vm虚拟机设置 启动虚拟机选择【虚拟网络编辑器】 选择NAT模式&#xff0c;更改下面的子网IP&#xff0c;改成你需要的任何一个子网…

大数据:诞生大数据,概述、大数据软件生态,Apache Hadoop概述

大数据&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要学&#x…

专业的 Code 128 条码标签如何创建?

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理&#xff0c;并…

Linux 系统的中断子系统基本框架(一)

中断是大家用的最多的功能&#xff0c;不管是单片机还是 Linux 系统&#xff0c;都需要用到中断&#xff0c;对它的深入理解是非常必要的。 为什么需要中断&#xff1f; 答案&#xff1a;处理器的速度比外设快很多&#xff0c;内核必须要处理其他任务&#xff0c;只有当外设准…

在centos上安装splint

lint lint是最著名的C语言工具之一&#xff0c;是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析&#xff0c;一般由UNIX系统提供。 工具介绍 与大多数C语言编译器相比&#xff0c;lint可以对程序进行更加广泛的错误分析&#xff0c;是一…

Day56【动态规划】583.两个字符串的删除操作、72.编辑距离

583.两个字符串的删除操作 力扣题目链接/文章讲解 视频讲解 1、确定 dp 数组下标及值含义 dp[i][j]&#xff1a;以下标 i 为结尾的字符串 word1&#xff0c;和以下标 j 为结尾的字符串 word2&#xff0c;想要达到相等&#xff0c;所需要删除元素的最少次数为 dp[i][j] 2、…

【1110. 删点成林】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给出二叉树的根节点 root&#xff0c;树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现&#xff0c;我们就把该节点从树上删去&#xff0c;最后得到一个森林&#xff08;一些不相交的…

LeetCode——可被三整除的偶数的平均值

#全国科技者工作日—为创新和未来而努力# 目录 1、题目 2、题目解读 3、代码 1、题目 2455. 可被三整除的偶数的平均值 - 力扣&#xff08;Leetcode&#xff09; 给你一个由正整数组成的整数数组 nums &#xff0c;返回其中可被 3 整除的所有偶数的平均值。 注意&#xff…

论文阅读:Directed Greybox Fuzzing

一、论文相关信息 二、现有研究的不足 现有的Greybox模糊器&#xff08;GF&#xff09;无法有效地定向到有问题的更改或补丁、关键系统调用或危险位置、或定向到我们希望重现的已报告漏洞的堆栈跟踪中的函数。 三、知识点 &#xff08;1&#xff09;introduction 定向模糊测试…

第二章(一):Django框架的模型(Model)

系列文章目录 备注&#xff1a;这里是Django系列文章的所有文章的目录 第一章(一) : Django框架如何创建项目、创建应用、创建templates&#xff1b;如何启动django项目&#xff1b; 第一章(二)&#xff1a;Django框架的模式、路由、视图&#xff1b; 第一章(三)&#xff1a;Dj…

learn C++ NO.7——C/C++内存管理

引言 现在是5月30日的正午&#xff0c;图书馆里空空的&#xff0c;也许是大家都在午休&#xff0c;也许是现在37摄氏度的气温。穿着球衣的我已经汗流浃背&#xff0c;今天热火战胜了凯尔特人&#xff0c;闯入决赛。以下克上的勇气也激励着我&#xff0c;在省内垫底的大学中&am…

JS的异或运算XOR

概念 异或&#xff08;xor&#xff09;是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”&#xff0c;计算机符号为“xor”。 两个值相同时&#xff0c;返回false&#xff0c;否则返回true。也就是说&#xff0c;XOR可以用来判断两个值是否不同。 JavaScript 语言…

企业级信息系统开发——Spring Boot加载自定义配置文件

文章目录 一、使用PropertySource加载自定义配置文件&#xff08;一&#xff09;创建Spring Boot Web项目ConfigDemo01&#xff08;二&#xff09;创建自定义配置文件&#xff08;三&#xff09;创建自定义配置类&#xff08;四&#xff09;编写测试方法&#xff08;五&#xf…

一键部署属于自己的ChatGPT-Next-Web

完整功能刚需&#xff1a; OpenAI 注册登录之后给的 api Key GitHub账号 Netlify账号 Tip&#xff1a; 注册 OepenAI账号 需要用国外手机号 这里建议去一些渠道购买账号 十块钱不到如果访问 OpenAI 的话 一定要挂欧美节点 否则禁止IP访问 概率会被封号为什么用 Netlify 托…

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑&#xff0c;而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…

SuperMap iDesktopX扩展开发之GPA算子扩展

作者&#xff1a;dongyx SuperMap iDesktopX是超图研究院推出的一款跨平台的桌面GIS软件&#xff0c;兼容Windows和Linux&#xff0c;同时iDesktopX也采用的是插件式扩展开发框架&#xff0c;支持定制开发。 使用iDesktopX定制开发有以下优势&#xff1a; ⚫ 采用 Swing 图形界…

VM虚拟机仿真网络问题

在电子数据取证中&#xff0c;拿到一个镜像需要仿真的时候&#xff0c;经常会遇到网络问题。尤其是Linux服务器镜像&#xff0c;例如centos操作系统的镜像&#xff0c;一般镜像会有固定IP设置&#xff0c;仿真起来后&#xff0c;系统与本机不能建立连接&#xff0c;不能连接互联…

VSCode远程连接Ubuntu使用LLDB调试程序

VSCode已经具有远程开发的能力&#xff0c;可以使用SSH连接到Linux/MacOS进行远程开发&#xff0c;包括编译与调试&#xff0c;只需要安装Remote Development插件即可&#xff0c;如果想使用CMake管理项目&#xff0c;则需要将VSCode的CMake以及CMake Tools插件安装在远程机器上…

SpringBoot自定义打印横幅

众所周知&#xff0c;springboot项目启动的时候会打印横幅&#xff0c;横幅内容就是spring; 而spring boot提供了一个Banner接口用于处理启动横幅&#xff0c;默认情况下启动会打印如下信息 . ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( (…

分布式系统

一.分布式理论基础 1.CAP理论 CAP定理是分布式系统中的重要理论&#xff0c;在一个分布式系统中最多只能同时满足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition tolerance&#xff09;这三项中的…