当前位置: 首页 > news >正文

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能够处理两种不同的情况&#xff0c;如果&#xff08;if&#xff09;满足条件&#xff0c;我们就执行这几行代码&#xff1b;否则&#xff08;else&#xff09;的话&#xff0c;我们就执行…...

机器学习基础13-基于集成算法优化模型(基于印第安糖尿病 Pima Indians数据集)

有时提升一个模型的准确度很困难。如果你曾纠结于类似的问题&#xff0c;那 我相信你会同意我的看法。你会尝试所有曾学习过的策略和算法&#xff0c;但模型正确率并没有改善。这时你会觉得无助和困顿&#xff0c;这也是 90%的数据科学家开始放弃的时候。不过&#xff0c;这才是…...

Rancher部署k8s集群

Rancher部署 Rancher是一个开源的企业级容器管理平台。通过Rancher&#xff0c;企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。 首先所有节点部署docker 安装docker 安…...

前端油猴脚本开发小技巧笔记

调试模式下&#xff0c;单击选中某dom代码&#xff0c;控制台里可以用$0访问到该dom对象。 $0.__vue___ 可以访问到该dom对应的vue对象。 jquery 对象 a,a[0]是对应的原生dom对象&#xff0c;$(原生对象) 得到对应的 jquery 对象。 jquery 选择器&#xff0c;加空格是匹配下…...

软考高级系统架构设计师系列之:搭建论文写作的万能模版

软考高级系统架构设计师系列之:搭建论文写作的万能模版 一、选择合适的模版二、论文摘要模版1.论文摘要模版一2.论文摘要模版二3.论文摘要模版三4.论文摘要模版四三、项目背景四、正文写作五、论文结尾六、论文万能模版一、选择合适的模版 选择中、大型商业项目,一般金额在2…...

多线程常见面试题

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

Java接收json参数

JSON 并不是唯一能够实现在互联网中传输数据的方式&#xff0c;除此之外还有一种 XML 格式。JSON 和 XML 能够执行许多相同的任务&#xff0c;那么我们为什么要使用 JSON&#xff0c;而不是 XML 呢&#xff1f; 之所以使用 JSON&#xff0c;最主要的原因是 JavaScript。众所周知…...

赤峰100吨每天医院污水处理设备产品特点

赤峰100吨每天医院污水处理设备产品特点 设备调试要求&#xff1a; 1、要清洗水池内所有的赃物、杂物。 2、对水泵及空压机等需要润滑部位进行加油滑。 3、通电源&#xff0c;启动水泵&#xff0c;检查转向是否与箭头所标方向一致。用水动控制启动空压机&#xff0c;检查空压机…...

nodejs+vue+elementui健身房教练预约管理系统nt5mp

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

视频分割合并工具说明

使用说明书&#xff1a;视频分割合并工具 欢迎使用视频生成工具&#xff01;本工具旨在帮助您将视频文件按照指定的规则分割并合并&#xff0c;以生成您所需的视频。 本程序还自带提高分辨率1920:1080&#xff0c;以及增加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分享&#xff0c;打开手…...

Java的锁大全

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

Leetcode80. 删除有序数组中的重复项 II

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

电脑显示“Operating System not found”该怎么办?

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

简析SCTP开发指南

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

把Android手机变成电脑摄像头

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

Linux线程篇(中)

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

深度学习优化入门:Momentum、RMSProp 和 Adam

目录 深度学习优化入门&#xff1a;Momentum、RMSProp 和 Adam 病态曲率 1牛顿法 2 Momentum:动量 3Adam 深度学习优化入门&#xff1a;Momentum、RMSProp 和 Adam 本文&#xff0c;我们讨论一个困扰神经网络训练的问题&#xff0c;病态曲率。 虽然局部极小值和鞍点会阻碍…...

LeetCode 面试题 01.09. 字符串轮转

文章目录 一、题目二、C# 题解 一、题目 字符串轮转。给定两个字符串 s1 和 s2&#xff0c;请编写代码检查 s2 是否为 s1 旋转而成&#xff08;比如&#xff0c;waterbottle 是 erbottlewat 旋转后的字符串&#xff09;。 点击此处跳转题目。 示例1: 输入&#xff1a;s1 “wa…...

系统上线安全测评需要做哪些内容?

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

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...