C语言入门 Day_10 判断的进阶
目录
前言
1.多重判断
2.代码块
3.条件运算符
3.易错点
4.思维导图
前言
if和else能够处理两种不同的情况,如果(if)满足条件,我们就执行这几行代码;否则(else)的话,我们就执行那几行代码。
再现实生活中我们很可能会面临两个以上的选择。
比如如周一我就吃麦当当,周四我就吃肯德鸡,如果是其他时间我就随便吃吃。
这里就有三种不同的,相互独立的情况
比较简单直接的做法是写三次if语句,分别判断三种情况。
if(today_is_monday){printf("今天吃麦当当\n");
}
if(today_is_thursday){printf("今天吃肯德鸡\n");
}
if(!today_is_monday && !today_is_thursday){printf("今天随便吃吃\n");
}
我们可以看到,最后一个判断是一个很复杂的判断条件,首先是今天不是 (!today_is_monday),然后是今天不是周四(!today_is_thursday),最后还要并且(!today_is_monday && !today_is_thursday),今天既不是周一,也不是周四。
if(!today_is_monday && !today_is_thursday){printf("今天随便吃吃\n");
}
所以我们可以用多重判断,来规避这种“剩下的情况”需要写的复杂判断语句,以及简化整个代码的复杂程度!
1.多重判断
1.1
同样是一周的每天吃什么的问题,我们可以写这样的代码
if (today_is_monday){printf("今天吃麦当当\n");
} else if(today_is_thursday){printf("今天吃肯德基\n");
} else {printf("今天随便吃吃\n");
}
1.第一次判断,今天是不是周一
2.如果是的话,打印输出吃麦当当
3.第二次判断,如果今天是周四的话
4.如果是的话,打印输出今天吃肯德鸡
5.第三次判断,余下的所有情况
6.就打印输出今天随便吃吃
1.2
跟之前的代码对比,我们用一个else替代了复杂的判断条件语句,即节省了代码量,又易于阅读,还减少了出错的可能😁。
使用三个if的时候,我们需要对三个if判断的条件都做清晰的界定;
但是使用if-else if-else判断结构的时候,我们只需要对前两个的判断条件做清晰的界定,除此以外的所有情况,都在else里面执行。
判断一个整数是负数还是0还是正数0:
int number_a=5;
if(number_a<0){printf("这是一个负数\n");
}
else if(number_a==0){printf("这是0\n");
}
else {printf("这是一正数\n");
}
1.先做第一次判断number_a < 0:
2.然后填入第二个判断条件的关键字,else和if:
3.填入最后一个判断关键字else:
输出结果
这是一个正数
if
、else if
、 else
三者是独立互斥的关系,就是说,程序只会执行其中一个分支的代码块。要么执行if的代码块,要么执行else if的代码块,如果前两个条件都不符合,就执行else的代码块。
1.3
判断一个城市的规模,人口小于100是小型城市,人口大于等于100且小于1000是中型城市,人口大于等于1000是大型城市:
int city_population=2100;
if(city_population<100){printf("小型城市\n");
} else if(city_population<1000){printf("中型城市\n");
} else{printf("大型城市\n");
}
输出结果
大型城市
我们注意到和判断语句if,else如影随形的还有一个特殊的符号,花括号{}
,它把某一分支的代码括了起来,连接在了一块。
同一个花括号里面的代码,都会从上到下顺序执行,这些一个花括号里面的代码还有个名字叫做代码块。
2.代码块
2.1
我们来看一下代码块的构成:
bool bo_1=true;
if(bo_1){printf("代码块的第一行代码\n");printf("代码块的第二行代码\n");printf("代码块的第三行代码\n");
}
1.花括号{}
2.一个代码块里面的三行代码
一对花括号“括起来”的代码集合叫做代码块
(Code Block),代码块中的代码会按由上至下的顺序执行。
2.2
我们来看看代码的执行顺序,这里会执行if的代码块:
bool bo_1=true;
if(bo_1){printf("代码块的第一行代码\n");printf("代码块的第二行代码\n");printf("代码块的第三行代码\n");} else {printf("代码块的第一行代码\n");printf("代码块的第二行代码\n");printf("代码块的第三行代码\n");
}
1.第一行执行的代码,定义一个布尔变量
2.第二行执行的代码,进行判断
3.第三行执行的代码,打印输出
4.第四行执行的代码,打印输出
5.第五行执行的代码,打印输出
2.3
这里会执行else的代码块:
bool bo_1 = false;
if (bo_1){printf("代码块一的第一行代码\n");printf("代码块一的第二行代码\n");printf("代码块一的第三行代码\n");
} else {printf("代码块二的第一行代码\n");printf("代码块二的第二行代码\n");printf("代码块二的第三行代码\n");
}
1.第一行执行的代码,定义变量
2.第二行执行的代码,进行判断
3第三行执行的代码,判断结果为假,执行else分支
4.第四行执行的代码,代码块中的第一行代码
5.第五行执行的代码,代码块中的第二行代码
6.第六行执行的代码,代码块中的第三行代码
2.4
例如:
int her_age = 20;
if(her_age > 18){printf("这个女生的年龄超过了18岁\n");printf("所以她已经成年了\n");
}
print("结束\n");
输出结果
这个女生的年龄超过了18岁
所以她已经成年了
结束
2.5
定义变量her_age的时候赋值10:
int her_age=10;
if (her_age > 18){printf("这个女生的年龄超过了18岁\n");printf("所以她已经成年了\n");
}
print("结束\n");
输出结果
结束
前一个代码是执行了if中的代码块,所以输出了三行字;后一个代码是没有执行if中的代码块,所以只输出了一行字。
结合多重判断我们可以看到,每一个判断条件都会有一个自己的判断分支的代码块。
根据判断条件进入不同的代码分支,进而执行不同的代码块。
3.条件运算符
3.1
C语言中有个条件运算符可以快速的实现简单的if-else功能,我们来学习一下!
定义两个变量a,b,然后运用条件运算符给b赋值
int a=100;
int b;
b=(a>10)?1:0;
1.定义两个整型变量a和b
2.条件运算符的结构A?B:C
3.条件运算符的判断条件(a > 10)
4.判断条件为真,得到冒号:前面的值
5.判断条件为假,得到冒号:后面的值
如果a大于10这个比较运算的结果为真,b的值就是1,如果为假,b的值就是0。
3.2
例如:
int number_c=100;
int number_result;
int number_result=(int number_c>10)?1:0;
输出结果
1
4.易错点
eg:
条件运算符的基本格式:
A ? B : C
当A为真时,结果为B;A为假时,结果为C。
5.思维导图
在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。
相关文章:

C语言入门 Day_10 判断的进阶
目录 前言 1.多重判断 2.代码块 3.条件运算符 3.易错点 4.思维导图 前言 if和else能够处理两种不同的情况,如果(if)满足条件,我们就执行这几行代码;否则(else)的话,我们就执行…...
机器学习基础13-基于集成算法优化模型(基于印第安糖尿病 Pima Indians数据集)
有时提升一个模型的准确度很困难。如果你曾纠结于类似的问题,那 我相信你会同意我的看法。你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善。这时你会觉得无助和困顿,这也是 90%的数据科学家开始放弃的时候。不过,这才是…...
Rancher部署k8s集群
Rancher部署 Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。 首先所有节点部署docker 安装docker 安…...
前端油猴脚本开发小技巧笔记
调试模式下,单击选中某dom代码,控制台里可以用$0访问到该dom对象。 $0.__vue___ 可以访问到该dom对应的vue对象。 jquery 对象 a,a[0]是对应的原生dom对象,$(原生对象) 得到对应的 jquery 对象。 jquery 选择器,加空格是匹配下…...
软考高级系统架构设计师系列之:搭建论文写作的万能模版
软考高级系统架构设计师系列之:搭建论文写作的万能模版 一、选择合适的模版二、论文摘要模版1.论文摘要模版一2.论文摘要模版二3.论文摘要模版三4.论文摘要模版四三、项目背景四、正文写作五、论文结尾六、论文万能模版一、选择合适的模版 选择中、大型商业项目,一般金额在2…...

多线程常见面试题
常见的锁策略 这里讨论的锁策略,不仅仅局限于 Java 乐观锁 vs 悲观锁 锁冲突: 两个线程尝试获取一把锁,一个线程能获取成功,另一个线程阻塞等待。 乐观锁: 预该场景中,不太会出现锁冲突的情况。后续做的工作会更少。 悲观锁: 预测该场景,非常容易出现锁冲突。后…...

Java接收json参数
JSON 并不是唯一能够实现在互联网中传输数据的方式,除此之外还有一种 XML 格式。JSON 和 XML 能够执行许多相同的任务,那么我们为什么要使用 JSON,而不是 XML 呢? 之所以使用 JSON,最主要的原因是 JavaScript。众所周知…...
赤峰100吨每天医院污水处理设备产品特点
赤峰100吨每天医院污水处理设备产品特点 设备调试要求: 1、要清洗水池内所有的赃物、杂物。 2、对水泵及空压机等需要润滑部位进行加油滑。 3、通电源,启动水泵,检查转向是否与箭头所标方向一致。用水动控制启动空压机,检查空压机…...

nodejs+vue+elementui健身房教练预约管理系统nt5mp
运用新技术,构建了以vue.js为基础的私人健身和教练预约管理信息化管理体系。根据需求分析结果进行了系统的设计,并将其划分为管理员,教练和用户三种角色:主要功能包括首页,个人中心,用户管理,教…...

视频分割合并工具说明
使用说明书:视频分割合并工具 欢迎使用视频生成工具!本工具旨在帮助您将视频文件按照指定的规则分割并合并,以生成您所需的视频。 本程序还自带提高分辨率1920:1080,以及增加10db声音的功能 软件下载地址 https://github.com/c…...
2023java面试深入探析Nginx的处理流程
推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stablediffusion资料分享 「java、python面试题」来自UC网盘app分享,打开手…...

Java的锁大全
Java的锁 各种锁的类型 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。 先说概念。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数…...

Leetcode80. 删除有序数组中的重复项 II
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 class Solu…...

电脑显示“Operating System not found”该怎么办?
“Operating System not found”是一种常见的电脑错误提示,这类错误会导致你无法成功启动Windows。那么电脑显示“Operating System not found”该怎么办呢? 方法1. 检查硬盘 首先,您可以测试硬盘是否存在问题。为此,您可以采取以…...

简析SCTP开发指南
目录 前言一、SCTP基本概念二、SCTP开发步骤1. **环境配置**:2. **建立Socket**:3. **绑定和监听**:4. **接收和发送数据**:5. **关闭连接**: 三、 C语言实现SCTP3.1SCTP客户端代码:3.2 SCTP服务器端代码&a…...

把Android手机变成电脑摄像头
一、使用 DroidCam 使用 DroidCam,你可以将手机作为电脑摄像头和麦克风。一则省钱,二则可以在紧急情况下使用,比如要在电脑端参加一个紧急会议,但电脑却没有摄像头和麦克风。 DroidCam 的安卓端分为免费的 DroidCam 版和收费的 …...

Linux线程篇(中)
有了之前对线程的初步了解我们学习了什么是线程,线程的原理及其控制。这篇文章将继续讲解关于线程的内容以及重要的知识点。 线程的优缺点: 线程的缺点 在这里我们来谈一谈线程健壮性: 首先我们先思考一个问题,如果一个线程出现…...

深度学习优化入门:Momentum、RMSProp 和 Adam
目录 深度学习优化入门:Momentum、RMSProp 和 Adam 病态曲率 1牛顿法 2 Momentum:动量 3Adam 深度学习优化入门:Momentum、RMSProp 和 Adam 本文,我们讨论一个困扰神经网络训练的问题,病态曲率。 虽然局部极小值和鞍点会阻碍…...
LeetCode 面试题 01.09. 字符串轮转
文章目录 一、题目二、C# 题解 一、题目 字符串轮转。给定两个字符串 s1 和 s2,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottle 是 erbottlewat 旋转后的字符串)。 点击此处跳转题目。 示例1: 输入:s1 “wa…...

系统上线安全测评需要做哪些内容?
电力信息系统、航空航天、交通运输、银行金融、地图绘画、政府官网等系统再正式上线前需要做安全测试。避免造成数据泄露从而引起的各种严重问题。 那么系统上线前需要做哪些测试内容呢?下面由我给大家介绍 1、安全机制检测-应用安全 身份鉴别 登录控制模块 应提供…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...