C语言中的循环语句有三种,while型,do...while型和for型。下面进行对它们进行详细的介绍。
while型
语法结构
while(表达式)
{
循环语句;
}
下面我们来看一个例子,打印整数1~10。
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
这样就打印出了1~10的数字。
在while型语句中,我们继续了解break和continue的用法。我们知道break决定出口,所以看这个例子。
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
break;
printf("%d ", i);
i++;
}
return 0;
}
此时,打印出来的是1~4。
我们再来看continue,它的作用是终止循环中的本次循环。
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
continue;
printf("%d ", i);
i++;
}
return 0;
}
打印1 2 3 4 之后,i=5,代码死循环。当代码执行到continue时,编译器跳过本次循环中的continue语句之后所有的代码,使i永远等于5,让代码死循环。
#include<stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
i++;
if (5 == i)
continue;
printf("%d ", i);
}
return 0;
}
此时,若将“i++;”语句放到“if(5==i)”之前,编译器将打印1 2 3 4 6 7 8 9 10 11,跳过5。
do...while型
语法结构
do
{
循环语句;
}
while(表达式);
在do...while型中代码至少循环一次,先循环在判断。例如打印1~10之间的整数。
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}
while (i <= 10);
return 0;
}
这样就打印出了1~10之间的整数,do...while型在循环语句中不常用,我们这里点到为止。
for型
语法结构
for(表达式1;表达式2;表达式3)
{
循环语句;
}
表达式1:初始化部分
表达式2:条件判断语句
表达式3:调整部分
还是打印1~10的整数,在for型中是这样实现的。
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
这样更简洁。在for循环中,break与continue与同样可用,break在for中也是跳出循环,和while型相同。我们直接看continue。看下面这个代码
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (5 == i)
continue;
printf("%d ", i);
}
return 0;
}
当i=5时,continue直接跳过之后代码,进入到“i++”,时i变为6,不会使代码陷入死循环。但这并不意味for型不会陷入死循环。
不可在for循环体内改变循环变量,防止for循环失去控制。例如下面这种情况:
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i = 5)
{
printf("haha ");
printf("%d ", i);
}
}
return 0;
}
代码失去控制,陷入打印5和haha的死循环。
还有一些for循环的变种:
-
#include<stdio.h> int main() { for (;;) { printf("haha "); } return 0; }
此代码一直打印haha,陷入死循环。可以看出,for循环代码的初始化,调整,判断部分都可以省略,但是判断部分如果被省略,那判断条件就是恒为真,导致死循环,建议不要省略。
-
#include<stdio.h> int main() { int x, y; for (x=0,y=0;x<2&&y<5;x++,y++) { printf("haha "); } return 0; }
for循环中可以一起放入多个变量。
for型循环的嵌套
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
int j = 0;
for (j = 1; j <= 10; j++)
{
printf("haha ");
}
}
return 0;
}
此时代码结果是100个haha。
我们再看这个代码,大家可以猜一下它循环几次:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 0,j=0; j=0; i++,j++)
{
printf("haha");
}
return 0;
}
它循环0次,因为它的判断语句是“j=0”,0为假,循环不进行。若把判断语句该为“j!=0”,代码又变成死循环。
今天的分享就到这里啦,持续战斗中。