本章则开始讲述分支与循环的下半部分,循环的内容,本章我们要学习while,for,do while这三大循环类型和go to语句,接下来我们一个一个来看。
1.while循环
1.语法
while循环与if语句有相似之处,最直观的就是语法形式
if
(
表达式
)
语句
;
while
(
表达式
)
语句
;
我们发现在语法结构上while循环与if语句相同,但它们有什么区别呢
#include <stdio.h>
int main()
{
if(1)
printf("hehe\n"); //if后边条件满⾜,打印⼀次hehe
return 0;
}
#include <stdio.h>
int main()
{
while(1)
printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe
return 0;
}
其实while循环就比if语句多了个循环
2.while循环流程图
为了更直观的表示while循环,我们用流程图来看
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语
句,语句执⾏完后再继续判断,是否进⾏下⼀次判断
这里的break与continue下面会讲述,大家不用担心
3.练习
了解了while循环的流程之后,我们接下来看个例题
eg:输⼊⼀个正的整数,逆序打印这个整数的每⼀位
eg:输入123 打印 3 2 1
1.
要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:123%10得到3
2.
要想去掉n的最低位,找出倒数第⼆位,则使⽤
n=n/10
操作就可以去掉最低位的,如n=123/10得到12,12相较于123就去掉了最低位,12%10就得到倒数第⼆位2。
3.
循环1和2两个步骤,在n变成0之前,就能到所有的位
2.for循环
1.语法
for
(
表达式
1
;
表达式
2
;
表达式
3
)
语句;
//
如果循环体想
包含更多的语句,可以加上⼤括号
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
注意:
1.表达式1仅进行一次,同时也可以省略不写
2.三个表达式都可以省略,但是会陷入死循环eg:for( ;;)
2.for循环流程图
⾸先执⾏ 表达式
1
初始化循环变量,接下来就是执⾏ 表达式
2
的判断部分, 表达式
2
的结果如果
==0,则循环结束; 表达式
2
的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表达3 ,调整循环变量,然后再去 表达式
2
的地⽅执⾏判断, 表达式
2
的结果是否为0,决定循环是否继 续。
3.练习
同样的我们看个例题
eg:计算1~100之间3的倍数的数字之和
我们发现每次进入循环都要判断,有没有不用if进行判断呢
我们每次进入循环都对i+3就相当与都是3的倍数
3.do-while循环
1.语法
do
语句;
while
(
表达式
)
;
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳
出循环;
⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表
达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
因此do-while循环至少会循环一次,而这就是它的特点
2.流程图
在
do while
循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
3.练习
eg:输⼊⼀个正整数,计算这个整数是⼏位数
输⼊:1234 输出:4
4.break和continue语句
相信大家在已经对三个循环有了初步的了解,但是肯定还有疑问,在这三个循环的流程图中continue与break有什么作用呢,下面为大家解答
1.break
首先是break,在三个循环当中,它的作用都是一样的,都是终止循环
注意:如果有循环嵌套,则需要多个break进行处理
2. continue
continue 是继续的意思,在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续进⾏
下⼀次循环的判断。
whlie循环中的continue与do-while的continue处理方式是一样的,但与for循环中的处理方式是不同的
我们先来看while循环中的continue
我们发现程序并没有停下,而是陷入了死循环
当i等于5后,就执⾏continue,直接跳过continue后的代码,去循环的判断的地⽅
因为这⾥跳过了
i = i+1
,所以
i
⼀直为
5
,程序陷⼊和死循环
那如果是for循环呢
我们发现程序结束,但是没有打印5
所以在
for
循环中
continue
的作⽤是跳过本次循环中
continue
后的代码,直接去到循环的调
整部分。
5.循环的嵌套
和分支一样,循环也有嵌套
我们看一个例题
eg:找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。
1.
要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
2.
假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤循环解决。
3.
如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。
6.go to语句
C语⾔提供了⼀种⾮常特别的语法,就是
goto
语句和跳转标号,
goto
语句可以实现在同⼀个函数
内跳转到设置好的标号处
next相当与一个标记符号,表示go to 语句要跳转到哪个地方
goto
语句,在多层循环的代码中,如果想快速跳出使⽤ goto
就⾮常的⽅便了。
7.结语
到这里分支与循环的内容也结束了
但是我们的编程之路还很遥远,加油