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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LEADTOOLS V22 for Python -Crack

LEAD Technologies Inc 是面向所有主要平台和编程语言的应用程序开发的人工智能 SDK 的领先提供商&#xff0c;很高兴地宣布在其最新的 LEADTOOLS 版本 22 更新中添加了完整的 Python 支持。 Python是一种动态的高级编程语言&#xff0c;广泛应用于科学计算、数据分析、人工智…

element 下拉组件获取对象

// 选择数据user:[{name:"小白",id:1,money:"100",love:"蛋糕"},{name:"小黑",id:2,money:"200",love:"奶茶"},{name:"小红",id:3,money:"300",love:"烧烤"},] <div><el…

激活函数总结(十九):激活函数补充(ISRU、ISRLU)

激活函数总结&#xff08;十九&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Inverse Square Root Unit &#xff08;ISRU&#xff09;激活函数2.2 Inverse Square Root Linear Unit (ISRLU)激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函…

Python科研数据可视化

在过去的20 年中&#xff0c;随着社会产生数据的大量增加&#xff0c;对数据的理解、解释与决策的需求也随之增加。而固定不变是人类本身&#xff0c;所以我们的大脑必须学会理解这些日益增加的数据信息。所谓“一图胜千言”&#xff0c;对于数量、规模与复杂性不断增加的数据&…

基础论文学习(5)——MAE

MAE&#xff1a;Masked Autoencoders Are Scalable Vision Learners Self-Supervised Learning step1&#xff1a;先用无标签数据集&#xff0c;把参数从一张白纸训练到初步预训练模型&#xff0c;可以得到数据的 Visual Representationstep2&#xff1a;再从初步成型&#x…

Linux(Ubuntu)安装docker

2017年的3月1号之后&#xff0c;Docker 的版本命名开始发生变化&#xff0c;同时将 CE 版本和 EE 版本进行分开。 Docker社区版&#xff08;CE&#xff09;&#xff1a;为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce 提供了简单的安装…

行式存储与列式存储

1.概述 数据处理大致可分为两大类&#xff0c;联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。 OLTP是传统关系型数据库的主要应用&#xff0c;用来执行一些基本的、日常的事务处理&#xff0c;比如数据库记录的增、删…

Vue2-快速搭建pc端后台管理系统

一.推荐二次开发框架 vue-element-admin Star(84k)vue-antd-admin Star(3.5k) 二.vue-element-admin 官网链接:https://panjiachen.github.io/vue-element-admin-site/zh/ 我这里搭建的是基础模版vue-admin-template(推荐) # 克隆项目 git clone https://github.com/PanJi…

html-dom核心内容--四要素

1、结构 HTML DOM (文档对象模型) 当网页被加载时&#xff0c;浏览器会创建页面的文档对象模型&#xff08;Document Object Model&#xff09;。 2、核心关注的内容&#xff1a;“元素”&#xff0c;“属性”&#xff0c;“修改样式”&#xff0c;“事件反应”。>四要素…

静态代码扫描持续构建(Jenkins)

前提条件 已正确安装、配置Jenkins环境&#xff0c;并装有 Gradle 插件、HTML 插件、SVN 插件等。如下图所示&#xff1a; 已正确安装、配置android sdk&#xff0c;在cmd窗口输入命令“android -h”,回车 配置步骤 打开Jenkins&#xff0c;新建一个job&#xff0c;输入项目…

uniapp日期选择组件优化

<uni-forms-item label="出生年月" name="birthDate"><view style="display: flex;flex-direction: row;align-items: center;height: 100%;"><view class="" v-

Cookie for Mac:隐私保护工具保护您的在线隐私

随着互联网的发展&#xff0c;我们每天都会浏览各种网站&#xff0c;享受在线购物、社交娱乐和学习资料等各种便利。然而&#xff0c;您是否曾经遇到过需要频繁输入用户名和密码的情况&#xff1f;或者不方便访问您常用的网站&#xff1f;如果是这样&#xff0c;那么Cookie for…

C语言:指针和数组(看完拿捏指针和数组)

目录 数组名的理解&#xff1a; 一维数组&#xff1a; 解析&#xff1a; 字符数组&#xff1a; 解析&#xff1a; 解析&#xff1a; 字符串数组&#xff1a; 解析&#xff1a; 解析&#xff1a; 一级指针&#xff1a; 解析&#xff1a; 解析&#xff1a; 二维数组&a…

SQL注入之HTTP头部注入

文章目录 cookie注入练习获取数据库名称获取版本号 base64注入练习获取数据库名称获取版本号 user-agent注入练习获取数据库名称获取版本号 cookie注入练习 向服务器传参三大基本方法:GPC GET方法&#xff0c;参数在URL中 POST&#xff0c;参数在body中 COOKIE&#xff0c;参数…

部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)

部署 Web 项目 1、获取 Linux 环境1.1、如何去买一个云服务器1.2、远程操作云服务器1.3、在 Linux 系统中搭建 Java Web 的运行环境。1&#xff09;安装 JDK&#xff08;使用包管理器 yum 来安装&#xff09;2&#xff09; 安装Tomcat3&#xff09;安装 MySQL。 1.4、在云服务器…

【Python爬虫】使用代理ip进行网站爬取

前言 使用代理IP进行网站爬取可以有效地隐藏你的真实IP地址&#xff0c;让网站难以追踪你的访问行为。本文将介绍Python如何使用代理IP进行网站爬取的实现&#xff0c;包括代理IP的获取、代理IP的验证、以及如何把代理IP应用到爬虫代码中。 1. 使用代理IP的好处 在进行网站爬…

前端开发工具: VSCode

VSCode 安装使用教程&#xff08;图文版&#xff09; | arry老师的博客-艾编程 1. 下载 在官方网站&#xff1a;https://code.visualstudio.com/ 下载最新版本的 VSCode 即可 2. VSCode 常见插件安装 所有插件安装后,需要重启一下才生效 2.1 简体中文语言包 2.2 编辑器主…

贝叶斯公式中的动词 命名技巧

一项血液化验有95%的把我诊断某种疾病&#xff0c;但是&#xff0c;这项化验用于健康人也会有1%的“伪阳性”结果(即如果一个健康人接受这项化验&#xff0c;则化验结果乌镇此人患有该疾病的概率是0.01)。如果该疾病的患者事实上只占总人口的0.5%&#xff0c;若某人化验结果为阳…

CSS内边距和外边距属性

外边距属性用margin&#xff1b;padding属性叫填充&#xff0c;或者也叫内边距&#xff1b; margin:标签与标签的距离&#xff0c;到包围它的元素的边框的距离&#xff1b; padding&#xff1a;内边距&#xff0c;用于控制内容与边框之间的距离&#xff1b; CSS padding&…

框架分析(5)-Django

框架分析&#xff08;5&#xff09;-Django 专栏介绍Django核心概念以及组件讲解模型&#xff08;Model&#xff09;视图&#xff08;View&#xff09;模板&#xff08;Template&#xff09;路由&#xff08;URLconf&#xff09;表单&#xff08;Form&#xff09;后台管理&…