在我们编写代码实现一定功能时,或许会遇到输入重复的指令的情况。如果我们将代码重复编写会太过麻烦,又或者是重复次数太多而不太现实。这时我们就需要运用循环语句,来实现在满足一定条件下时可重复运行的程序。在可实现重复的循环语句中有三大类:
1.while语句 2.for语句 3.do- while语句
下面我将对三种语句进行详细解释。
1.while语句
在while语句中包含循环条件与循环语句。循环条件是指在满足条件下,进而执行循环语句。其格式为:
while(循环条件)
{
循环语句
}
例:打印满足小于输入的数字的所有奇数(while语句)
#include <stdio.h>
int main()
{
int x;
printf("please input a number: ");
scanf("%d",&x);
while(x>0)
{
if(x%2!=0)
{
printf("%d",x);
}
x--;
}
return 0;
}
注意:循环语句中一定要有如上图的循环变量 (x--),如果没有循环变量,则会导致循环条件一直在满足的状态下,从而导致循环体在无限循环(无限打印),我们称之为死循环。若需要使用死循环则可以在循环条件处写上1【while(1)】,意为始终为1(真),无限循环。
2.for语句
此语句与while语句功能完全相同,都是为了满足在满足一定条件下从而是循环体重复执行。不同的为,此语句更加方便观察循环变量和循环条件,因为此语句会将循环变量的初始值、循环条件、循环变量的变化值放在一起,逻辑结构清晰可见。其格式为:
for(循环变量的赋值或引用;循环条件;循环变量的变化条件)
{
循环语句
}
由此可见循环变量的初始值、循环条件、循环变量的变化值在for后的()全部都可以观察,因此这就是比while语句更加直观的优点。在()中的第一部分“循环变量的赋值或引用”中我们可以引用在for语句前就已经赋值的变量,也可以在这里对已经赋值的变量进行重新赋值(在循环体中会优先使用这个部分的变量赋值);第二部分的“循环条件”中与while语句中循环条件相同,在满足这个条件时,循环语句就会重复执行,也可以利用这里的循环条件进行有目的的死循环;第三部分的“”“循环变量的变化条件”与while语句中的循环变量相同,只不过这里会将循环变量从循环体中提出来放到这里的第三部分,可以更加直观的清楚for语句结构。
例:打印满足小于输入的数字的所有奇数(for 语句)
#include<stdio.h>
int main()
{
int x;
printf("please input a number: ");
scanf("%d",&x);
for(x;x>0;x--)
{
if(x%2!=0)
{
printf("%d",x);
}
}
return 0;
}
注意:for语句中()中的循环变量的变化条件可以写在循环体中 ,但是()中的两个“;”不能省略,否则为格式错误。
3.do-while语句
此语句与while语句极其相似,都由循环条件与循环体构成,区别在于此语句的循环条件在循环体的后方,也就是说,此语句为先执行循环体在进行循环条件的判断(无论如何都会至少执行一次循环体),若不满足条件则不进行下一次循环。其格式为:
do{
循环体
}
while(循环条件)
例:打印满足小于输入的数字的所有奇数(do-while语句)
#include<>
int mian()
{
int x;
printf("please input a number: ");
scanf("%d",&x);
do
{
if(x%2!=0)
{
printf("%d",x);
}
}
while(x>0)
ruturn 0;
}
注意:因为此语句为先进行循环体后进行循环条件的判断(无论如何都至少会执行一次循环体),所以在我们与while做区分时需要注意二者在完成同一任务时,循环条件的判断有略微的差距。