当前位置:网站首页>C语言——分支语句和循环语句
C语言——分支语句和循环语句
2022-08-01 23:06:00 【保护小周ღ】
大家好!我是保护小周ღ,本期为大家带来的是C语言的分支语句和循环语句,详细的介绍了 if()、 switch() 这两种分支语句,以及while()、do while ()、for(),三种循环语句,还有两个控制语句的用法:break和continue;保姆级讲述,包您一看就会,快来试试吧~
目录
一、什么是语句?
C语言语句可以分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
控制语句用于控制程序的执行流程,用来实现程序的各种结构方式。
C语言是结构化的程序设计语言,几乎所有的C代码都是由以下三种结构组成的。
- 顺序结构
- 选择结构
- 循环结构
C语言有9种控制语句,可以分为以下三类:
- 条件判断语句也叫分支语句:if 语句、switch 语句;
- 循环语句:for 语句、while 语句、do while 语句;
- 转向语句:break 语句、continue 语句、return 语句、goto 语句。
二、分支语句(选择语句)
2.1 if() 语句
不知道大家有没有用过Excel 表里面的 if 函数,if(条件,表达式1,表达式2),如果条件成立,则执行表达式1,如果条件不成立,则执行表达式2。而且,if 语句里,也可以嵌套 if 语句。
举个例子:
用通俗一点的话来讲就是,如果成绩<60分,执行表达式1,输出“不及格”,如果成绩>=60,就要执行表达式2,这时候表达式2是嵌套的 if 判断语句,所以又执行一下判断,此时要处理的数据范围是 >=60,如果,成绩小于80,此时数据范围就是60<=成绩<80,执行第二个if 语句表达式1,输出“良好”,如果成绩在>=60,的情况下且不小于80,则执行执行第二个if 语句表达式2,输出“优秀”
C语言当中 if() 语句大同小异,逻辑是相似的,在 if() 语句中,条件:0为假,非0为真 ,条件成立,为真,执行表达式1;条件不成立,为假,执行表达式2。
2.1.1 if() 语句的语法结构
语法结构:
if (表达式)
语句;
if (表达式)
语句1;else
语句2;
这个else可以理解为否则
多分支(if的嵌套)
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;
else的匹配:else是和它离的最近的 if 匹配的。
例1:
我们还可以这样写:
例2:经典的 if语句的嵌套
给大家解释一下:什么是复合语句,控制语句break;随后在循环语句中会给大家讲。
2.1.2 复合语句
如果条件成立,要执行多条语句,则使用复合语句,这里的一对 { } 就是一个代码块(复合)。
复合语句从形式上看是多个语句的组合,但在语法意义上它是一个整体,相当于一条语句,所以凡是可以用简单语句的地方都可以用复合语句来实现。
作用:
1、在程序设计中复合语句被看成是一条语句,而不是多条语句。
2、在只能使用单条语句的地方可以执行多条指令。
3、这里只能写一条指令,而用复合语句就可以满足一条指令的限制,而执行多条指令。
举个例子:
如果你好好学习,以后可以找到好offer,走上人生巅峰,如果你不好好学习,毕业就等于失业,此时如果你家里有80套房子,可以继承家业,否则回家种地吧。
首先博主跟大家介绍一个函数 strcmp() 把这个函数弄明白了,咱们举得例子才能玩的转。
strcmp,是C/C++的库函数,在string.h 头文件里,作用是比较两个字符串。
strcmp()函数一般形势:strcmp(字符串1,字符串2);
设这两个字符串为 str1,str2,则strcmp(str1,str2);
若str1 ==str2,则函数返回值为0;
若str1 < str2(字符串长度),则函数返回值为负数;
若str1 > str2,则函数返回值为正数;
例3: 利用多分支判断,(if嵌套)
2.2 switch 语句
switch语句也是一种分支语句。 常常用于多分支的情况。
switch 有一种说法是叫它开关函数,为什么叫开关函数呢,因为他的执行流程就像遍历一排开关,找到符合条件的开关,就打开开关,通电了之后对应的灯就亮了(语句就执行了),但是呢,如果我们不想继续遍历开关了,在灯使用完之后,就要把整个电路断电,break;终止。如果没有找到符合条件的开关,我们也有相应的操作,这个之后讲。
switch 语句中的break则是跳出函数体,不继续执行该case后面的语句(默认继续执行)。
2.2.1 switch 的语法结构
switch()里面的表达式必须是整型表达式。通俗一点可以理解为,整个表达式的结果为整型。
case 后面的必须是整型常量表达式,1,2,3等,不允许是变量。
switch() 语句支持嵌套,就像 if 语句一样,case 执行语句时语句可以是另一个switch()语句。
在switch()语句中,break;就像是灵魂,搭配break使用才能实现真正的分支;
举个例子:
实现输入一个成绩,判断成绩的级别,不及格,及格,良好,优秀,非常优秀。
#include<stdio.h>
int main()
{
int report = 0;//成绩
printf("请输入一个成绩判断级别:");
scanf("%d",&report);
//那么怎么我们怎么设置条件呢,
switch (report/10)//整型表达式,“条件”
{
case 1:
case 2:
case 3:
case 4:
case 5: printf("成绩不及格\n下次好好努力");
break;//只有遇到break;以后case 判断才会停下来,默认是继续执行的
//所以case 1:case 2:……可以跟case 5:共用一个printf(),
case 6:
case 7: printf("已及格,成绩良好,继续努力");
break;
case 8: printf("已及格,成绩优秀,继续保持");
break;
case 9:
//这个有问题,因为101,102,103,等数字/10之后都变成10了,满分则是100分,所以switch()函数也有不方便的地方。
//使用if语句,我们就则可以精准的控制数据范围。
case 10:printf("已及格,成绩非常优秀");
}
return 0;
}
是不是有点复杂,我感觉比 if 语句实现相同的功能还要麻烦。
2.2.2 default子句
如果表达的值与所有的case标签的值都不匹配怎么办?程序也并没有错,只是所有case语句都会跳过,什么也不会发生,如果我们需要在所有case标签没有匹配值的情况下给出一些提示,
例如:输入错误,case 不匹配,请重新输入。就给人一个提示。
这个时候我们就可以使用 default:
default:子句的位置,可以写在任何一个case标签可以出现的位置,也在开头也可以,最后也可以,当 switch 表达式的值不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。
每个switch 语句中最好写入一条default 子句,最好在子句后面再加上一个break;
三、循环语句
我们通过学习了 if 语句知道了,当条件满足时,执行 if 后面的“语句”。但是语句只能执行一次。
我们生活中有很多事情需要我们重复判断执行,那在程序中我们应该怎么办呢?
C语言中给我们引入了 while,do while ,for 语句可以实现循环。
关于循环语句,打个比方,就像是汽车上的轮胎,你挂挡、给油,发动机打火,轮胎就可以一直重复的旋转(循环)。当然想让车走什么路,去哪里,干什么,取决于开车的人,轮子老老实实的转。
当你过个马路等红绿灯停下来时,离合,空挡、踩刹车,发动机都不需要熄火,绿灯亮,挂挡、给油车就可以直接跑,轮子继续转(continue),
哎呀,开着开着你发现轮胎居然漏气了,你想了一下,门前有一堆碎玻璃,应该给轮胎划了一道口子,导致呢轮子转着转着就漏气了,为了保证安全,你就停车熄火了(break)
如果你已经到达目的地,不想让轮子转了,刹车、发动机熄火,轮子就不转了(条件终止循环 或break;)
当然你也可以让车子不停下来,一直跑,轮胎一直转,会有什么结果?(死循环)
最后呢,油没了,车子就不跑了,轮子就不转了。(内存耗尽,程序挂掉)
3.1 while 语句
while 语句的语法结构:
while(表达式)
循环语句;
while()里面的表达式往往是循环的终止条件,条件成立为真,不成立为假,0为假,非0为真。
关于终止循环我们也可以使用控制语句break;来实现。
循环语句,我们可以使用复合语句,达到循环一段程序的目的。
例1:
我们还可以这样写:
break就是中止的意思,常常用来终止循环,但是外层如果还有循环,是不能跳出外层循环范围的。只能终止包含break的循环
例2://在屏幕上打印1-10的数字。
3.1.1 控制语句break;
break就是中止的意思,常常用来终止循环,但是外层如果还有循环,是不能跳出外层循环范围的。只能终止包含break的循环,switch中的break则是跳出函数体,不继续执行该case后面的语句(默认继续执行)。break 语句终止最近的封闭 do while、 for、 switch, while 语句的执行。循环中的break是用于永久终止循环的。
这段代码的含义就是循环打印1,2,3,4,5这五个数,打印5次。
我们把内部循环加入break;试一试;
3.1.2 控制语句 continue;
continue 在while循环中的作用就是: continue 是用于终止本次循环的(一次),也就是本次循环中continue 后边的代码不会再执行, 而是直接跳转到while语句的判断部分,条件成立,继续循环,条件不成立,就终止循环。
例1:
由上例可知,当 i 等于3 的时候 if 语句条件成立,执行了continue,跳出本次循环,continue 后边的代码没有再执行了。所以没有打印 3。但是跳出本次循环后,循环条件成立,还是继续执行了循环。直到循环条件不成立为止。
例2:
为什么这次 3 后面的数没有打印呢,还是相同的道理, 当i 等于3时,if 语句条件成立执了continue; 跳出来本次循环,所以后面的 i 没有执行自增,所以 i 又以 3的值重复循环,然后跳出循环,结果陷入了死循环,所以 3 后面的值没有打印。这一点大家一定要注意。
3.2 do while 语句
这个一看啊,就是while的亲戚,用法也八九不离十,咱就不多介绍了,
do while 就一句话,不管三七二十一,先执行一次循环,再来判断条件是否成立。
所以使用do while 根据实际使用的场景,不经常使用。
其他的用法跟 while()差不了多少,就是可以先执行一次程序,再判断要不要继续循环。
3.3 for 语句
最后一个了,咱们就干脆直接一点,关于for 语句,博主是很喜欢用的,经常在控制下标的时候使用,很方便。
语法结构:
for(表达式1; 表达式2; 表达式3)
循环语句;//同样可以是复合语句 { }
表达式1:表达式1 为初始化部分,用于初始化循环变量的。
表达式2:条件判断,用于判断循环的终止。
表达式3:为调整部分,用于循环条件的调整,驱使循环结束。
注意:三个表达式之间用分号(;)隔开
文邹邹的,直接上代码感受:
//使用for循环 在屏幕上打印1-10的数字。
三个表达式相信大家都能够理解。
如果我们用 while 循环实现相同的功能,两个语句之间又有什么差距呢?
我们可以看出两个语句要实现相同的功能,同样需要 “三个表达式”,三个部分。
我们可以根据个人爱好选择使用。实际当中 for 语句使用的最多。
3.3.1 不一样的 for
for 循环中的三个表达式——初始化部分,判断部分,调整部分,都可以省略。//不建议都省略
for 使用多个变量控制循环,
//使用for循环 在屏幕上打印1-10的数字。
至此,C语言的分支、循环语句的基本使用方法博主已经分享完了,大家可以自己动手敲敲代码,感受一下。希望对大家有所帮助。
本期收录于博主的专栏——C语言,适用于编程初学者,感兴趣的朋友们可以订阅,查看其它“C语言基础知识”。C语言_保护小周ღ的博客-CSDN博客
感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ **,°*:.*( ̄▽ ̄)/$:*.°**
文章存在借鉴,如有侵权请联系修改删除!
边栏推荐
- 【好书推荐】第一本无人驾驶技术书
- 从0到100:招生报名小程序开发笔记
- Wechat Gymnasium Reservation Mini Program Graduation Design Finished Work Mini Program Graduation Design Finished Product (2) Mini Program Function
- [机缘参悟-58]:《素书》-5-奉行仁义[遵义章第五]
- 数据库表设计规则
- 关于ETL的两种架构(ETL架构和ELT架构)
- Chapter 19 Tips and Traps: Common Goofs for Novices
- leetcode刷题
- 添加大量元素时使用 DocumentFragments
- 计算由两点定义的线的角度
猜你喜欢
PHP算法之电话号码的字母组合
img 响应式图片的实现(含srcset属性、sizes属性的使用方法,设备像素比详解)
y84.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十五)
APP专项测试:流量测试
Small application project works WeChat stadium booking applet graduation design of the finished product (1) the development profile
复现gallerycms字符长度限制短域名绕过
文件查询匹配神器 【glob.js】 实用教程
xctf攻防世界 Web高手进阶区 web2
D - Linear Probing- 并查集
Quarantine and downgrade
随机推荐
03. GO language variable definition, function
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
xctf attack and defense world web master advanced area web2
部门项目源码分享
SAP Spartacus Accessibility E2E 端到端测试
Create virtual environments with virtualenv and Virtualenvwrapper virtual environment management tools
NgRx Store createSelector 的单步调试和源代码分析
小程序毕设作品之微信体育馆预约小程序毕业设计成品(1)开发概要
Flutter基础学习(一)Dart语言入门
String - Trie
复现gallerycms字符长度限制短域名绕过
隔离和降级
毕业作业
Prufer sequence
ROS2初级知识(8):Launching启动多节点
文件查询匹配神器 【glob.js】 实用教程
npm npm
联邦学习在金融领域的发展和应用
C#大型互联网平台管理框架源码:基于ASP.NET MVC+EF6+Bootstrap开发,支持多数据库
从0到100:招生报名小程序开发笔记