三、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后的表达式为真执行这一句elseprintf("%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("输入的值为正数");elseprintf("输入的值为负数");}	elseprintf("输入的值为0");return 0;
}

形式2 嵌套进else中

//判断输入的数是0,还是正数,负数
int main()
{int num = 0;scanf("%d", &num);if (num == 0)printf("输入的值为0");else{if (num > 0)printf("输入的值为正数");elseprintf("输入的值为负数");}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("输入的值为正数");elseprintf("输入的值为负数");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");elseprintf("老寿星\n");}return 0;
}

5. 悬空else问题

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

if (condition1)if (condition2)statement1;elsestatement2;

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

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

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

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

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

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

相关文章

Python 微服务架构指南

概要 微服务架构作为一种设计风格&#xff0c;它将应用程序构建为一套小服务的集合&#xff0c;每个服务实现特定的业务功能&#xff0c;这些服务可以独立部署、扩展并围绕特定业务能力构建。Python 凭借其简洁易读的语法和强大的库生态系统成为实现微服务的受欢迎选择。本文将…

【番外】【Airsim in Windows ROS in WSL2-Ubuntu20.04】环境配置大全

【番外】【Airsim in Windows &ROS in WSL2-Ubuntu20.04】环境配置大全 【前言&#xff08;可省略不看&#xff09;】1.在windows上面部署好UE4AirSim联合仿真环境2.在windows上面部署wsl2系统以及在wsl2上面部署ubuntu系统3.安装好ubuntu系统之后&#xff0c;目前只能在命…

河北首例:黑科技人工心脏为终末期心衰患者带来新希望

近日&#xff0c;河北工程大学附属医院心脏中心成功完成河北省首例左心室辅助装置植入&#xff08;人工心脏&#xff09;&#xff0c;为终末期心衰患者提供了除心脏移植以外新的解决方案。 55岁刘女士因间断胸闷气短7年&#xff0c;诊断为扩张型心肌病&#xff0c;经过规范的“…

Unity AVProVideo安卓播放视频问题

Pico4播放全景8K视频播放不了&#xff0c;普通视频也播放不了解决方案&#xff1a; 1.Vulkan去掉&#xff0c;或者优先级放下面2.Pico4打包ARM64&#xff0c;插件里arm64里的几个库都设置arm64&#xff0c;平台选择安卓 Pico其他设置参考官方文档即可。

LDD学习笔记 -- Linux内核模块

LDD学习笔记 -- 内核模块 简介LKM类型Static Linux Kernel ModuleDynamic Linux Kernel ModuleLKM编写语法 syntax详细描述内核头文件用户空间头文件Module Initialization FunctionModule Cleanup FunctionKeyword & Tag宏 __init __exitLKM入口注册Module Metadate&#…

win10提示“KBDSF.DLL文件缺失”,游戏或软件无法启动运行,快速修复方法

很多用户在日常使用电脑的时候&#xff0c;或多或少都遇到过&#xff0c;在启动游戏或软件的时候&#xff0c;Windows桌面会弹出错误提示框“KBDSF.DLL文件缺失&#xff0c;造成软件无法启动或运行&#xff0c;请尝试重新安装解决”。 首先&#xff0c;先来了解DLL文件是什么&a…

基于springboot的java读取文档内容(超简单)

读取一个word文档里面的内容&#xff0c;并取出来。 代码&#xff1a; SneakyThrowsGetMapping(value "/readWordDoc")ApiOperationSupport(order 1)ApiOperation(value "文档读取 ", notes "文档读取 ")public R ReadWordDoc () {System.o…

使用vue实现一个网页的贴边组件。

使用vue实现一个网页的贴边组件。 先来看效果&#xff1a; 2024-01-04 10.46.22 https://www.haolu.com/share/V00O6HWYR8/36207fc21c35b2a8e09bf22787a81527 下面是具体代码实现&#xff1a; 1、父组件。&#xff08;用于贴边展示的组件&#xff09; <template>&…

XCTF-Misc1 USB键盘流量分析

m0_01 附件是一个USB流量文件 分析 1.键盘流量 USB协议数据部分在Leftover Capture Data域中&#xff0c;数据长度为八个字节&#xff0c;其中键盘击健信息集中在第三个字节中。 usb keyboard映射表&#xff1a;USB协议中HID设备描述符以及键盘按键值对应编码表 2.USB…

PC网站或H5网站接入客服系统

网页链接接入 PC网站或H5网站可以通过多种方式接入客服系统&#xff0c;直接访问或跳转聊天链接&#xff0c;是最简单的一种方式 获取聊天链接 前往【部署】【团队设置】【网站接入】可以找到聊天链接&#xff0c;直接把该链接放入自己网站的任何位置&#xff0c;就可以点击直…

Ansible的Shell命令配置自动补全

一、【Ansible简介】 Ansible一词据笔者所知最早来源于小说《安德的游戏》&#xff0c;其中的人族势力为了解决星际间远距离通信对星舰控制的延迟问题&#xff0c;作者贴心的虚构了一个叫做安塞波的概念&#xff0c;这个概念甚至在之后被很多小说复用&#xff0c;比如《盲视》…

判断完全数-第11届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第27讲。 判断完全数&#…

【Vue2+3入门到实战】(22)VUE3之组合式API - setup、reactive和ref函数、computed、watch、生命周期函数详细讲解

目录 一、组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖 二、组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 三、组合式API - computed四、组合式API - watch1. 侦听单个数据2. 侦听多个数据…

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

一、图的遍历的定义&#xff1a; 从图的某个顶点出发访问遍图中所有顶点&#xff0c;且每个顶点仅被访问一次。&#xff08;连通图与非连通图&#xff09; 二、深度优先遍历&#xff08;DFS&#xff09;&#xff1b; 1、访问指定的起始顶点&#xff1b; 2、若当前访问的顶点…

Linux下误删除后的恢复操作测试之extundelete工具使用

一、工具介绍 extundelete命令的功能可用于系统删除文件的恢复。在使用前&#xff0c;需要先将要恢复的分区卸载&#xff0c;以防数据被意外覆盖。 语法格式&#xff1a;extundelete [参数] 文件或目录名 常用参数&#xff1a; --after 只恢复指定时间后被删除的文件 --bef…

基于Java SSM框架实现健康管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现健康管理系统演示 JSP技术 JSP是一种跨平台的网页技术&#xff0c;最终实现网页的动态效果&#xff0c;与ASP技术类似&#xff0c;都是在HTML中混合一些程序的相关代码&#xff0c;运用语言引擎来执行代码&#xff0c;JSP能够实现与管理员的交互&#xf…

uniapp上传图片,上传头像,多张图片上传,图片回显,图片删除,图片预览

效果图&#xff1a; 上代码不废话&#xff1a; <template><view class"familyCreateMemory"><view class"box"><view class"title"><view>文字&#xff1a;</view><textarea :maxlength"-1"/…

自制数据库空洞率清理工具-C版-02-EasyClean-V1.1(支持南大通用数据库Gbase8a)

一、环境信息 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43.34.27468a27EasyClean版本V1.1 二、简述 工作和兴趣相结合的产物&#xff0c;既能更好的完成工作&#xff0c;也能看看自…

微信小程序-页面开发

文章目录 微信小程序第二章2. 页面开发2.1 创建开发页面2.2 修改项目首页2.3 页面的结构和样式设计2.3.1 WXML结构设计2.3.1.1 什么是WXML2.3.1.2 WXML的常见标签2.3.1.3 WXML的特点 2.3.2 WXSS样式设计2.3.2.1 什么是WXSS 2.4 组件库的使用和自定义组件2.4.1 小程序中的组件分…

java基于SSM的校内信息服务发布系统的设计与实现+vue论文

校内信息服务发布系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定校内信息服务发…