编辑
大家好!我是保护小周ღ,本期为大家带来的是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使用才能实现真正的分支;
举个例子:
实现输入一个成绩,判断成绩的级别,不及格,及格,良好,优秀,非常优秀。
intmain() { intreport=0;//成绩printf("请输入一个成绩判断级别:"); scanf("%d",&report); //那么怎么我们怎么设置条件呢,switch (report/10)//整型表达式,“条件” { case1: case2: case3: case4: case5: printf("成绩不及格\n下次好好努力"); break;//只有遇到break;以后case 判断才会停下来,默认是继续执行的//所以case 1:case 2:……可以跟case 5:共用一个printf(),case6: case7: printf("已及格,成绩良好,继续努力"); break; case8: printf("已及格,成绩优秀,继续保持"); break; case9: //这个有问题,因为101,102,103,等数字/10之后都变成10了,满分则是100分,所以switch()函数也有不方便的地方。//使用if语句,我们就则可以精准的控制数据范围。case10:printf("已及格,成绩非常优秀"); } return0; }
编辑
是不是有点复杂,我感觉比 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博客
感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*
文章存在借鉴,如有侵权请联系修改删除!编辑