目录
循环语句:while 语句,for 语句,do while 语句和其中的break、cotinue语句
循环语句
在C语言中,同一件事需要执行很多次的时候,我们可以使用循环语句。
循环语句:while 语句,for 语句,do while 语句
while循环语句
while语句的语法结构为:
while (表达式)
{
循环语句;
}
while语句的执行流程:
例如实现屏幕打印输出0~10的数字。
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
printf ("%d\n",i);
i++;//注意:i必须在循环内变化,否则程序会死循环。
}
return 0;
}
执行流程如下:
while语句中的break和continue
break介绍
如果想打印1~10中的1、2、3、4时,就需要用到break语句。
break代码实例:
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
if ( i == 5)
break;
printf ("%d\n",i);
i++;
}
return 0;
}
输出:
0
1
2
3
4
请按任意键继续. . .
执行流程如下:
break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有循环,直接终止循环。所以:while中的break是用永久终止循环,直接从while循环中跳出。
continue介绍
如果想打印1、2、3、4、6、7、8、9、10时就需要用到continue语句。
continue代码实例:
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
if ( i == 5)
continue;
printf ("%d\n",i);
i++;
}
return 0;
}
输出:
0
1
2
3
4
代码在输出4后,i++后i一直等于5,i一直进入if判断句,一直在执行continue语句,然后i一直等于5……程序一直处于死循环的状态。此时从continue跳到while语句的判断部分,一直判断,并没有对i进行调整。所以:要是循环变量的改变在continue下面,则循环变量还没来得及执行到变量调整语句,则循环变量不做调整,直接去判断语句,那么,程序将陷入死循环。
执行流程如下:
但是当把i++;
放在continue;
前面时:
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
i++;//此时还没打印i已经是从i+1 = 1开始了。
if ( i == 5)
continue;
printf ("%d\n",i);
}
return 0;
}
输出:
1
2
3
4
6
7
8
9
10
11
请按任意键继续. . .
执行流程如下:
continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,二十直接跳转到while语句的判断部分,进行下一次循环入口的判断。
for循环语句
for循环的语法结构:
for (表达式1;表达式2;表达式3)
{循环语句;}
( for (初始化部分;条件判断部分;调整部分)
{循环语句;})
for循环中的表达式1 为初始化部分,用于初始化循环变量的。表达式2为条件判断部分,用于判断循环时候终止。表达式3为调整部分,用于循环条件的调整。
注意:不可以在for循环内部修改循环变量,防止for循环失去控制
建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
for语句的执行流程:
使用for循环在屏幕上打印0~10的数字。
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i <= 10; i ++)
{
printf ("%d\n",i);
}
return 0;
}
输出:
0
1
2
3
4
5
6
7
8
9
10
请按任意键继续. . .
流程示意图如下:
for循环的变种语句:
变种1:
for ( ; ; )
{
printf ("HEHE\n");//无限打印HEHE
}
由此可以看出:for循环中的3个表达式语句都可以省略,但是建议不要随意省略语句。
变种2:
#include <stdio.h>
int main()
{
int x, y;
for (x =0, y = 0; x < 2 && y < 5; ++x, y++)
{
printf("HEHE ");//打印输出两个HEHE HEHE
}
return 0;
}
由此可以看出:for循环中的3个表达式可以结合逗号表达使用。
for语句中的break和continue
for循环中也可以出现break和continue,它们的意义和在while循环中是一样的。但也有些差异。
break介绍
代码实例:
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i ++)
{
if (i == 5)
break;//判断i==5后,执行break语句,直接终止循环
printf ("%d\n",i);
}
return 0;
}
输出:
1
2
3
4
请按任意键继续. . .
执行流程如下:
可以看到:for循环中判断i==5后,执行break语句,直接终止循环。
for中的break语句终止了整个循环,和while中的break语句意义相同,都是直接跳出循环。
continue介绍
代码示例:
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i ++)
{
if (i == 5)
continue;//跳出输出5的循环,直接往后继续输出
printf ("%d\n",i);
}
return 0;
}
输出:
1
2
3
4
6
7
8
9
10
请按任意键继续. . .
执行流程如下:
for循环中的continue和while中的执行流程和意义不一样。for循环中的continue语句执行后,跳过for循环中continue后面所有语句,去执行调整语句,将循环变量做调整。所以for循环中的continue语句可以说是只跳过一次循环变量要执行的相关代码。而while循环中,要是循环变量的改变在continue下面,则循环变量还没来得及执行到变量调整语句,所以循环变量不做调整,直接去判断语句,那么,程序将陷入死循环。
continue在for循环和while循环中的辨析:
continue在for循环:跳过for循环中continue后面所有语句,去执行调整语句,将循环变量做调整。
continue在while循环:如果循环变量的改变在continue下面,则跳过下面的语句和调整语句,直接去判断语句,则程序死循环。
do while循环语句
do语句的语法:
do
{循环语句;}
while(表达式);
do while语句的特点说明:
循环至少执行一次,适用的场景有限,所以不是经常使用。
do while是先做do操作,执行循环语句,然后再进行while判断。
do while 语句的执行流程图:
代码实例:
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n",i);
}while (i < 10);
return 0;
}
输出:
10
请按任意键继续. . .
执行流程如下:
可以由输出结果看到,do while语句是先执行do后面的循环语句,再进行while判断,也就是说do while语句,至少在程序中会执行一次。
do while 循环中的break和continue
break介绍:
代码实例:
#include <stdio.h>
int main()
{
int i = 0;
do
{
if (i == 5)
break;
printf("%d\n",i);
i ++;
}while (i < 10);
return 0;
}
输出:
0
1
2
3
4
请按任意键继续. . .
执行流程如下:
可以看出,do while中的break作用是跳出循环,跟for循环、while循环中的break作用一样。
continue介绍
代码实例:
循环条件在continue后面:
#include <stdio.h>
int main()
{
int i = 0;
do
{
if (i == 5)
continue;
printf("%d\n",i);
i ++;
}while (i < 10);
return 0;
}
输出:
0
1
2
3
4
当循环条件在continue前面时:
#include <stdio.h>
int main()
{
int i = 0;
do
{
i ++;
if (i == 5)
continue;
printf("%d\n",i);
}while (i < 10);
return 0;
}
输出:
1
2
3
4
6
7
8
9
10
请按任意键继续. . .
可以看出,do while中,当循环条件在continue后面时,打印输出了1 2 3 4和死循环,当循环条件在continue前面时,打印输出1 2 3 4 6 7 8 9 10。continue在do while中和在while中的意义一样。具体可以参考前面while中continue的执行流程和解释。