三、C语言中的分支与循环—if语句 (1)

在这一章节中我们的学习内容如下,咱们一步步来。

分支结构


1. if语句
2. 关系操作符
3. 条件操作符
4. 逻辑操作符:&& , || , !
5. switch语句

循环结构

6. while循环
7. for循环
8. do-while循环
9. break和continue语句
10. 循环的嵌套
11. goto语句

本章分支结构的学习内容如下:

三、C语言中的分支与循环—if语句 (1)

三、C语言中的分支与循环—关系操作符 (2)

三、C语言中的分支与循环—条件操作符 与逻辑操作符(3)

三、C语言中的分支与循环—switch语句(4)分支结构 完


本章循环结构的学习内容如下:

三、C语言中的分支与循环—while循环 (5)

三、C语言中的分支与循环—for循环 (6)

三、C语言中的分支与循环—do-while循环 (7)

三、C语言中的分支与循环—break和continue语句(8)循环结构 完  


 

1. if 语句的语法

注意if这句后面没有分号

1 if (表达式)
2     语句;

如果表达式为真,则语句执行;如果表达式为假,则后面那一语句不执行。

1)判断输入整数是奇数还是偶数

咱们思考这个判断条件,可以写成对该整数关于2取模的结果是否为0

同时注意if后的执行语句需要缩进,按下Tab键即可

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)//注意这句后面没有分号;
        //注意判断左右表达式是否相等的符号是“==”
	    printf("%d是偶数",num);
	return 0;
}

输入10

输入9后,因为if()括号内的表达式为假,该语句不执行

2.else的用法

对于奇数偶数这种非此即彼的问题,我们可以用if....else....来处理,如果为真就怎样,否则就怎样

我们来改善上一个代码

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
		printf("%d是偶数",num);//if后的表达式为真执行这一句
	else
		printf("%d是奇数", num);//否则,if后的表达式为假执行这一句
	return 0;
}

3. 如何让if和else控制多条语句

1)if和else默认控制一条语句,如果有多条,则代码运行出错;

如果只有if ,代码没有错误,但是从第二条往下就不归if管了,继续执行:

2)解决方案:加花括号

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
	{
		printf("%d是偶数\n", num);
		printf("%d可以被2整除\n", num);
	}
	else
	{
		printf("%d是奇数\n", num);
		printf("%d不可以被2整除\n", num);
	}
	return 0;
}

4.嵌套if

当我们的问题有多种选择的时候,可以选择嵌套的方法,主要是自己需要梳理清楚逻辑

1)判断输入的数是0,还是正数,负数

可以嵌套进if或者else的任意一个中

形式1 嵌套进if中

//判断输入的数是0,还是正数,负数
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num != 0)
    {
        if (num > 0)
		    printf("输入的值为正数");
		else
			printf("输入的值为负数");
	}	
	else
		printf("输入的值为0");
	
	return 0;
}

形式2 嵌套进else中

//判断输入的数是0,还是正数,负数
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num == 0)
		printf("输入的值为0");
	else
	{
		if (num > 0)
			printf("输入的值为正数");
		else
			printf("输入的值为负数");
	}
	return 0;
}

也可以用if else if else这种写法,注意想要控制多条语句时需要打上花括号

if-else if-else 结构是一种条件控制语句,用于在多个条件之间进行选择执行。这种结构允许程序根据不同的条件执行不同的代码块。下面是其基本结构和工作原理的解释:

if (condition1) 
{
    // 代码块1: 当 condition1 为真时执行
} 
else if (condition2) 
{
    // 代码块2: 当 condition1 为假且 condition2 为真时执行
} 
else if (condition3) 
{
    // 代码块3: 当 condition1 和 condition2 都为假且 condition3 为真时执行
} 
else {
    // 代码块4: 当所有上面的条件都不满足时执行
}

所以该问题的代码还可以写作:

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num == 0)
		printf("输入的值为0");
	else if(num > 0)
			printf("输入的值为正数");
	else
			printf("输入的值为负数");
	return 0;
}

2)练习题

  1. 输⼊⼀个⼈的年龄
  2. 如果年龄<18岁,打印"少年"
  3. 如果年龄在18岁⾄44岁打印"⻘年"
  4. 如果年龄在45岁⾄59岁打印"中⽼年"
  5. 如果年龄在60岁⾄89岁打印"⽼年"
  6. 如果90岁以上打印"⽼寿星"
这里涉及了&&,与操作符,我们下节继续
int main()
{
	int age = 0;//初始化
	int r = scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else
	{
		if (age <= 44)
			printf("青年\n");
		else if (age <= 59 && age >= 45)
			printf("中老年\n");
		else if (age <= 89 && age >= 60)
			printf("老年\n");
		else
			printf("老寿星\n");
	}
	return 0;
}

5. 悬空else问题

悬空else:当有多个 `if` 语句嵌套而没有足够的 `else` 语句时,就可能产生悬空else的情况。例如:

if (condition1)
    if (condition2)
        statement1;
    else
        statement2;

在这个例子中,`else` 语句到底是与第一个 `if` 语句匹配,还是与第二个 `if` 语句匹配呢?这就是悬空else问题。C和C++,有一个清晰的规则来处理这个问题:`else` 总是与最近的未匹配的 `if` 与之配对。因此,在上面的例子中,`else` 与第二个 `if`(`if (condition2)`)配对。

为了避免悬空else问题带来的混淆,建议总是使用大括号 `{}` 明确地指明 `if-else` 语句的范围,即使语句体只有一行。例如:

if (condition1)
 {
    if (condition2) 
    {
        statement1;
    }
} 
else 
{
    statement2;
}

这样的代码结构可以清晰地表达程序的逻辑,避免悬空else问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于VS2019的C++动态链接库DLL生成与调用

一、理论知识及实践经验 实验注意事项及部分程序编写规范&#xff08;部分源自ChatGPT-3.5&#xff09;&#xff1a; Ⅰ __declspec(dllexport)和__declspec(dllimport)是用于在C中定义动态链接库&#xff08;DLL&#xff09;的关键字。在编写动态链接库时&#xff0c;__declsp…

.babky勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 网络安全威胁不断进化&#xff0c;其中.babky勒索病毒引起了广泛关注。这篇文章91数据恢复将深入介绍.babky的狡猾特征&#xff0c;以及在遭受其袭击时如何高效地恢复被加密的数据&#xff0c;并提供实用的预防方法。当面对被勒索病毒攻击导致的数据文件加密…

mac环境下安装部署mysql5.7

下载安装包 进入官网下载MySQL5.7的安装包 https://www.mysql.com/downloads/ 安装包下载完成后双击pkg文件进行安装&#xff0c;无脑点下一步即可&#xff0c;注意安装完成后记得保存最后弹出框的密码 进入系统偏好设置&#xff0c;找到mysql&#xff0c;开启mysql服务…

详谈电商网站建设的四大流程!

在21世纪的互联网时代&#xff0c;电商网站的建设是每个企业发展不可缺少的一次机遇。企业商城网站建设成功也许会获得更大的了利润&#xff1b;如果网站建设不成功&#xff0c;那么也会带来一定的损失。所以建设电商网站不是那么一件简单的事情。那么电商网站制作流程是怎样的…

DoIP学习笔记系列:(八)车厂一般关于DoIP的相关测试分析

文章目录 1. 前言2. 基本项测试2.1 协议版本默认值2.2 车辆标识请求报文格式2.3 带EID的车辆标识请求报文格式2.4 带VIN的车辆标识请求报文格式2.5 否定响应码0x002.6 否定响应码0x012.7 否定响应码0x022.8 否定响应码0x042.9 路由激活应答码0x002.10 路由激活应答码0x012.11 路…

突发!博世「裁员」

对于未来几年的汽车行业需求变化&#xff0c;一级零部件供应商正在加快「降本增效」举措&#xff0c;犹如下游客户更加倾向于降本&#xff0c;而不是无休止的提升整车性能&#xff0c;比如&#xff0c;续航里程、智能化。 本周&#xff0c;全球汽车零部件龙头供应商博世宣布&am…

Linux学习第48天:Linux USB驱动试验:保持热情,保持节奏,持续学习是作为一个技术人员应有的基本素质和要求

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 最近更新的速度和频率大不如以前&#xff0c;主要原因还是自己有些懈怠了。学习是一个持续努力的过程&#xff0c;一旦中断&#xff0c;再想保持以往的状态可能要…

钡铼分布式IO在玻璃制造中的实时数据采集与监控应用介绍

导读 玻璃行业多年来一直广泛使用 PLC 来帮助管理生产过程所需的精确材料比例&#xff0c;完全依赖其PLC进行数据采集与控制&#xff0c;并且大量依靠人工来操作&#xff0c;所以这些高成本推动了对成本较低的替代方案的需求。 场景描述 某玻璃厂生产的玻璃生产包括配料段、熔…

性能测试之(六):JMeter 元件

元件&#xff08;多个类似功能组件的容器&#xff09; 组件&#xff1a;封装的方法&#xff0c;比如取样器中的发送请求的方法 一、常见的元件 1、取样器&#xff1a;发送请求2、逻辑处理&#xff1a;控制语句执行顺序3、前置处理器&#xff1a;在请求&#xff08;取样器&…

可狱可囚的爬虫系列课程 08:新闻数据爬取实战

前言 本篇文章中我带大家针对前面所学 Requests 和 BeautifulSoup4 进行一个实操检验。 相信大家平时或多或少都有看新闻的习惯&#xff0c;那么我们今天所要爬取的网站便是新闻类型的&#xff1a;中国新闻网&#xff0c;我们先来使用爬虫爬取一些具有明显规则或规律的信息&am…

陪诊系统|北京陪诊小程序提升陪诊服务效果

随着科技的不断发展&#xff0c;人们对于医疗服务的需求也越来越高。在过去&#xff0c;陪诊师和陪诊公司通常需要通过电话或传真等传统方式与医院进行沟通和安排。然而&#xff0c;现在有了陪诊小程序&#xff0c;这些问题得到了解决。本文将介绍陪诊小程序的开发流程和功能&a…

CSDN质量分批量查询

单个文章质量分查询地址&#xff08;点击右边地址&#xff09;&#xff1a; CSDN质量分查询 创作者身份认证审核标准 优质创作者申请条件&#xff1a; 粉丝数在5000以上近30日&#xff08;申请日算起&#xff09;原创文章数不少于4篇原创博文总数不少于100篇垂直领域原创数量…

CloudManager大数据本地环境标准部署文档

一、基本信息 文档目的&#xff1a;标准化、规范化Hadoop在本地化环境中部署所涉及的操作和流程&#xff0c;以便高效、高质地落地本地化环境部署的工作。 二、安装介质 FTP服务器&#xff1a; http://172.16.246.252:81/hadoopteam/cloudmanager/CDH-5.8.2-1.cdh5.8.2.p0.3…

swing快速入门(三十七)标签页

&#x1f308;注释很详细&#xff0c;直接上代码 上一篇 ⛱️新增内容 &#x1f525;1.设置标签页的位置与溢出内容布局方式 &#x1f525;2.设置标签图标与选中显示内容 &#x1f525;3.设置默认选中标签 &#x1f525;4.禁用标签 &#x1f525;5.获取选中标签的索引 &…

【文末送书】TVM编译器原理与实践

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

QT的坐标系统,回收机制、菜单栏,工具栏,状态栏,对话框及资源文件

QT的坐标系统&#xff0c;回收机制、菜单栏&#xff0c;工具栏&#xff0c;状态栏&#xff0c;对话框及资源文件 文章目录 QT的坐标系统&#xff0c;回收机制、菜单栏&#xff0c;工具栏&#xff0c;状态栏&#xff0c;对话框及资源文件1、QT的坐标系统&#xff1f;2、对象模型…

uni-app 从入门到精通 3天快速掌握 文字版 学习专栏

大家好&#xff0c;我是java1234小锋老师。 近日锋哥又卷了一波课程&#xff0c;uni-app 从入门到精通 3天快速掌握教程&#xff0c;文字版视频版。三天掌握。 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从…

百度Apollo:自动驾驶的领航者

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式&#xff1a;通过连接报名观看课程&#xff0c;即可免费获取精美周边 ⛳️活动链接&#xf…

获取CNN/DM适用于评估Bart的格式的数据集(类似于test.source、test.source.tokenized)

项目场景&#xff1a; 复现文本摘要任务评估CNN/DM数据集 问题描述 abisee老哥的代码获取的是bin格式的数据集 时间久远&#xff0c;一些依赖的配置版本难以复现 笔者需要能评估Bart 格式的数据集 形式类似于test.source、test.source.tokenized 解决方案&#xff1a; 经过坚…

婴儿专用洗衣机哪个牌子比较好?高性价比婴儿洗衣机推荐

随着家中新生命的降临&#xff0c;一大批婴儿专用的物品也陆续进入到家中&#xff0c;虽然有很多东西确实能在育儿之路上提供很多帮助&#xff0c;不过也有一些东西“很坑”。婴儿洗衣机这一产品是专为有婴幼儿的家庭或者有特殊需求的人士所研发的&#xff0c;它的容量以及体积…