C语言入门 Day_10 判断的进阶

news2024/11/15 18:22:27

目录

         前言

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的观点和思想,我要感谢他们对我的启发和帮助。

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

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

相关文章

快速排序三种思路详解!

一、快速排序的介绍 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中 的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;…

电脑excel文件误删怎么恢复?分享6种有效方法

在日常办公中&#xff0c;电脑中存储的Excel文件可能会遭遇误删的意外情况&#xff0c;如何快速恢复误删的Excel文件成为许多人关注的热点。本文将介绍几种有效的方法&#xff0c;希望能够帮助您恢复误删的Excel文件。 方法1、从回收站恢复 检查电脑的回收站&#xff0c;如果E…

数字孪生是什么?工厂数字孪生实例分析

数字孪生是建筑物或城市等物理实体的 3D 模型&#xff0c;数字孪生具有实时、连续的数据&#xff0c;可实时更新其功能和流程&#xff0c;从而为工程师提供分析和优化生产流程的数据支撑。简单来说&#xff0c;数字孪生是物理实体的 3D 模型&#xff0c;3D 模型的动画由真实实体…

行业冠军NANK南卡再添新高度,打造百元级开放式蓝牙耳机新标杆!

​最近&#xff0c;国内最受欢迎的开放式耳机品牌NANK南卡推出了一款名为OE CC的产品&#xff0c;它以0感0压为卖点。不断根据用户的反馈进行优化&#xff0c;现如今这款耳机正式在各大平台上架销售。它采用了先进的技术&#xff0c;重新定义了百元级别开放式耳机的三个标准。这…

GD32-舵机的原理

GD32-舵机的原理 舵机的现一脉宽与舵机转动角度 旋转编码器的原理 顺时针&#xff1a;A的下降沿时&#xff0c;B处于高电平&#xff1b; 逆时针&#xff1a;A的下降沿时&#xff0c;B处于低电平&#xff1b; #ifndef _ENCODER_DRIVE_H #define _ENCODER_DRIVE_H#include &quo…

Matlab图像处理运算方法-非线性点运算

常见的非线性灰度变换为对数变换和幂次变换。 对数变换 对数变换的一般表达式为&#xff1a; tclog(1s) 其中c为尺度比例常数&#xff0c;s为输入图像灰度值&#xff0c;t为变换后的输出图像灰度值。在如下图所示的对数曲线上&#xff0c;函数…

node-red - 读写操作redis

node-red - 读写操作redis 一、前期准备二、node-red安装redis节点三、node-red操作使用redis节点3.1 redis-out节点 - 存储数据到redis3.2 redis-in节点 - 查询redis数据 附录附录1&#xff1a;redis -out节点示例代码附录2&#xff1a;redis -in节点示例代码 一、前期准备 安…

ensp-IPsec vpn配置

ensp-IPsec vpn配置 &#x1f4ce;IPsec VPN配置.docx&#x1f4ce;IPSec.zip

Windows和Linux卸载anaconda的完整解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

drag handle是什么意思?

Drag handle" 是一个术语&#xff0c;通常用于描述在用户界面&#xff08;如软件应用程序、网页等&#xff09;中用于拖拽或调整元素的小型图标、区域或手柄。它是一种交互式设计元素&#xff0c;用户可以通过拖拽它来改变界面上的元素的位置、大小或其他属性。 “Drag h…

数字孪生技术在3大行业的重点应用

数字孪生技术是利用模拟仿真技术将实体对象数字化的技术。它基于虚拟现实、人工智能和云计算等技术&#xff0c;能够创建与真实物体相同的数字模型&#xff0c;并通过实时监测和分析手段&#xff0c;提供关于该物体的全面数据&#xff0c;从而优化产品开发和生产过程。数字孪生…

熊猫:完整的初学者指南

pandas&#xff1a;完整的初学者指南 一、说明 在你的Python开发人员或数据科学之旅中&#xff0c;你可能已经多次遇到“熊猫”这个词&#xff0c;但仍然需要弄清楚它的作用。以及数据和熊猫之间的关系。所以让我向你解释一下。 根据最新估计&#xff0c;每天创建 328.77 亿 TB…

二分查找逻辑

目录 二分查找 查找逻辑 题目练习 题目描述 代码示例 总结 二分查找 二分查找是我们经常使用的一种算法&#xff0c;他的逻辑是 在升序或者降序且无重复元素的数组中&#xff0c;比较目标值和数组中间值的方法&#xff0c;每次缩小一半的搜索范围&#xff0c;相比遍历可…

Unity Alembic闪烁问题

最近在做项目时&#xff0c;发现Clo3D导出的服装abc动画&#xff0c;导入到Unity中后(已提前导入Alembic插件)&#xff0c;运行时屏幕会闪烁(变黑)。 经过几轮测试&#xff0c;发现是切线的问题。解决办法很简单。将abc文件上的Tangents属性值改为None即可。

一篇关于CPU的硬核知识分享

不管你玩硬件还是做软件&#xff0c;你的世界都少不了计算机最核心的 —— CPU。 01CPU是什么&#xff1f; CPU与计算机的关系就相当于大脑和人的关系&#xff0c;它是一种小型的计算机芯片&#xff0c;通常嵌入在电脑的主板上。 CPU的构建是通过在单个计算机芯片上放置数十亿…

app.js和页面.js 实现全局传参

实现全局传参的几个步骤&#xff1a;1. 在页面.js文件中 输入 const appgetApp() 2.便可以在页面中引用app.js中的globalData中的数据。 注意点&#xff1a;app.js中是使用的是this.globalData (调用自身的数据&#xff09; 页面.js中使用的是app.globalData&#xff08;引用ap…

Web 应用框架 Express 构建 RESTful API

Express框架 Express 是 Node.js 平台上最常用的 Web 应用框架之一&#xff0c;它简洁、灵活且易于使用。Express 提供了一组强大的功能和工具&#xff0c;可以帮助开发者快速构建 Web 应用程序和 RESTful API。 以下是 Express 框架的一些主要特点和功能&#xff1a; 轻量级…

c++11 标准模板(STL)(std::basic_istringstream)(五)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

国家管网:围绕招标全链路,聚焦提升招标管理数智化水平

“要深化供应链管理系统应用&#xff0c;推动全面应用电子招标平台开展工程建设项目招标&#xff0c;实现招标工作过程透明、效率提升和监管有力。” ——国家管网董事长 张伟 作为能源领域新的“国家队”&#xff0c;国家管网立足新变局应对新挑战&#xff0c;着力提升产业链…

vite按需引入elementPlus ,并自定义主题色

1. 首选无论是按需引入还是全引入都需要先安装elementPlus npm i element-plus 2. 按需引入elementPlus&#xff0c;可参照官网 a. 安装unplugin-vue-components 和 unplugin-auto-import npm install -D unplugin-vue-components unplugin-auto-import b. 配置vite.config.…