【C语言】分支语句和循环语句

   

大家好!我是保护小周ღ,本期为大家带来的是C语言分支语句循环语句,详细的介绍了 if()、 switch() 这两种分支语句,以及while()do while ()for(),三种循环语句,还有两个控制语句的用法:breakcontinue;保姆级讲述包您一看就会,快来试试吧~

目录

一、什么是语句?

二、分支语句(选择语句)

2.1 if() 语句

2.1.1 if() 语句的语法结构

2.1.2 复合语句

2.2 switch 语句

2.2.1 switch 的语法结构

2.2.2 default子句

​编辑

三、循环语句

3.1 while 语句

3.1.1 控制语句break;

3.1.2 控制语句 continue;

3.2 do while 语句

3.3 for 语句

3.3.1 不一样的 for 


一、什么是语句?

C语言语句可以分为以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

控制语句用于控制程序的执行流程,用来实现程序的各种结构方式。

C语言是结构化的程序设计语言,几乎所有的C代码都是由以下三种结构组成的。

  1. 顺序结构
  2. 选择结构
  3. 循环结构

C语言有9种控制语句,可以分为以下三类:

  1. 条件判断语句也叫分支语句:if 语句、switch 语句;
  2. 循环语句:for 语句、while 语句、do while 语句;
  3. 转向语句: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博客

感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ  *★,°*:.☆( ̄▽ ̄)/$:*.°★* 

文章存在借鉴,如有侵权请联系修改删除!​​

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保护小周ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值