文章目录
一、三种循环语句
1.while语句
2.do while语句
3.for语句
二、三种循环语句的比较
1、while语句与do while语句的比较
2、while语句与for语句的比较
3、三种语句的比较
前言
循环语句是一种使程序可以循环执行的语句,应用广泛且方便。
c语言中用于循环运行程序的结构有三种,分别是:while语句, do while语句和for语句。
一、三种循环语句
1.while语句
格式:
while(表达式)
{语句}
注意:
- while语句特点是先判断条件表达式,后执行循环体语句
- “语句”就是循环体。循环体可以是一个简单的语句,也可以是复合语句(需用花括号{}括起来的语句)
- 表达式的值为“真”(以非零表示)时,就执行循环体语句;为假(以0表示)时,就不执行循环体语句,退出循环
例如:在屏幕上连续打出十个数字
#include<stdio.h>
int main()
{
int i=1;
while(i<=10)
{
printf("%d",i);
i=i+1;
}
return 0;
}
看一下运行结果
2.do while语句
格式:
do
{
语句
}while(表达式)
注意:
- do while的语句特点是,先无条件执行循环体,然后判断循环条件是否成立。
例如:求1到100的和
#include<stdio.h>
int main()
{
int i=1,sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf("sum=%d\n",sum);
return 0;
}
结果如下
3.for语句
格式:
for(表达式1;表达式2;表达式3)
语句
注意:
☞for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值
。省略表达式1时,其后分号不可省略。如:
for( ;i<=10;i++)
☞如果表达式2省略,就不判断循环条件,循环无终止的进行下去。也就是认为表达式2始终为真。
for(i=1; ;i++)
☞表达式3可以省略,但应另外设法保证循环能正常结束。如:
for(i=1;i<=10; )
{ sum=sum+i;
i++;
}
☞可以省略表达式1和表达式3,只有表达式2,即只给循环条件。这种情况下,完全等同于while语句。for语句除了可以给出循环条件外,还可以赋初值,使循环变量自动增值。如:
i=1;
for( ;i<=100; )
{ sum=sum+i;
i++;
}
☞三个表达式都可以省略,例如:
for( ; ; ); //相当于while语句
即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止的执行循环体。
☞表达式1可以是一个设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。包含一个以上的简单表达式,中间用逗号隔开。如:
for(i=1,sum=0;i++)
sum=sum+i;
☞表达式2一般是关系表达式(如i<=100)或逻辑表达式(如a<b&&x<y),也可以是数值表达式或字符表达式,只要其值非0,就执行循环体。如:
for(x=10;x;x--)
sum=sum+x;
例如:求五个数中的最大值
#include<stdio.h>
int main
{
int a,b=0,c=0;
for(a=1;a<=5;a++)
{
scanf_s("%d",&b);
if(c<=b)c=b;
}
printf("max=%d\n",max);
return 0;
}
如果不使用for语句,如下:
#include<stdio.h>
int main
{
int a1,a2,a3,a4,a5,max;
printf("输入五个数的值: ");
scanf_s("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5);
max=a1;
if(max<a2)max=a2;
if(max<a3)max=a3;
if(max<a4)max=a4;
if(max<a5)max=a5;
printf("五个数中最大的值为:%d\n",max);
return 0;
}
数值越多,明显用for语句更简便。
二、三种语句的比较
1、while语句与do while语句的比较
➺循环结构表达式不同
➺执行时判断方式不同
- while语句先判断条件表达式,后执行循环体语句。
- do while语句先执行循环体,后判断循环条件是否成立。
➺执行次数不同
➺执行末尾的顺序不同
while循环程序:
#include<stdio.h>
int main()
{
int i,sum=0;
printf("please enter i,i=?");
scanf("%d",&i);
while(i<=10)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
please enter i,i=?1
sum=55
please enter i,i=?11
sum=0
do while语句循环程序:
#include<stdio.h>
int main()
{
int i,sum=0;
printf("please enter i,i=?");
scanf("%d",&i);
do
{
sum=sum+i;
i++;
}while(i<=10);
printf("sum=%d\n",sum);
return 0
}
please enter i,i=?1
sum=55
please enter i,i=?11
sum=11
结论:while语句与do while语句具有相同循环体的情况下,当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同;否则二者结果不相同。
2、while语句与for语句的比较
➺循环结构不同
➺执行条件的判断方式不同
- for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。
- while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)。
➺使用的目的不同
- for循环的目的是为了限制循环体的执行次数,使结果更精确。
- while循环的目的是为了反复执行语句或代码块。
➺语法不同
3、三种循环的比较
表达式1;//初始化操作
while(表达式2)
{
表达式3;//通常是i++
}
表达式1;//初始化操作
do
{
表达式3;//通常是i++
}while(表达式2);
for(表达式1;表达式2;表达式3)
{
循环体语句
}
- 三种循环都可以用来处理同一问题,一般情况下可以互相代替
- 用whie和do while时,循环变量初始化的操作应在while和do while语句之前完成,而for语句可以在表达式1中实现循环变量初始化
- 在while循环和do while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含是循环趋于结束的语句(如i++,或i=i+1等)。 for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。
- 这三种循环都可以用break跳出循环,用continue语句结束本次循环
总结
循环语句用于的程序主要是重复做大致相同的运算,可以将一些复杂的过程简单化。
使用循环语句可以帮助我们更简便的解决问题。