一、循环控制结构与循环语句
上一篇介绍了选择控制,这一篇介绍关于循环控制结构与循环语句
循环结构通常有两种类型:
(1)当型循环结构,表示当条件P成立(为真)时,反复执行A操作,直到条件P不成立(为假)时结束循环。
(2)直到型循环结构,表示先执行A操作,在判断条件P是否成立(为真),则反复执行A操作,直到条件P不成立(为假)时结束循环。
C语言提供 for , while ,do-while 三种循环语句(Loop Statement)来实现循环结构。循环语句在给定条件为真的情况下,重复执行一个语句序列,这个被重复执行的语句序列称为循环(Body of Loop)。
1.while语句
while语句属于当型循环。其一般形式为:
while(循环控制表达式)
{
语句序列
}
while语句中的循环控制表达式是在执行循环体之前测试的。
其执行过程如下:
(1)计算循环控制表达式的值;
(2)如果循环控制表达式的值为真,那么就执行循环体中的语句,并返回步骤(1);
(3)如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句。
为了使程序易于维护,建议即使循环体内只有一条语句,也将其用花括号括起来。这是因为当需要在循环体中增加语句时,如果忘记加上花括号,那么仅while后面的第1条语句会被当做循环体中的语句来处理,从而导致逻辑错误。
2.do-while语句
do-while语句属于直到型循环。其一般形式为:
do
{
语句序列
}while(循环控制表达式);
与while语句不同的是,do-while语句中的循环控制表达式是在执行循环体之后测试的。
do-while语句的执行过程如下:
(1)执行循环体中的语句;
(2)计算循环控制表达式的值;
(3)如果循环控制表达式的值为真,那么返回步骤(1);
(4)如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句。
可见,对do-while语句来说,由于是先执行循环体后计算并判断循环控制条件为真还是为假,所以循环体内的语句将至少被执行一次。
3.for语句
for语句属于当型循环结构。它的使用方式非常灵活,在C语言程序中的使用频率也最高,其一般形式如下:
for(初始化表达式;循环控制表达式;增值表达式)
{
语句序列;
}
初始化表达式的作用是为循环控制变量初始化(Initialization),即赋初值,它决定了循环的起始条件;
循环控制表达式是循环控制条件(Loop Control Condition);
增值表达式的作用是每执行一次循环后将循环控制变量增值。
for和while可进行等价实现,与for语句等价的while语句形式是:
初始化表达式;
while(循环控制表达式)
{
语句序列
增值表达式;
}
当已在for语句前面为循环控制变量赋初值时,初始化表达式可以省略;
当已在循环体中改变了循环控制变量时,增值表达式可以省略。
如:
初始化表达式;
for(;循环控制表达式;增值表达式)
{
语句序列
}
初始化表达式;
for(;循环控制表达式;)
{
语句序列
增值表达式;
}
逗号运算符:
逗号运算符可把多个表达式连接在一起,构成逗号表达式,起作用是实现对各个表达式的顺序求值。
二、例题:
1.输入n,并计算出1+2+3+…+n的值。
for:
#include <stdio.h>
int main()
{
int n,i;
int sum=0;
printf("请输入n:");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
sum=sum+i;
}
printf("sum=%d",sum);
}
do-while:
#include <stdio.h>
int main()
{
int sum=0;
int i,n;
printf("输入一个数n:");
scanf("%d",&n);
i=1;
do
{
sum+=i;
i++;
}while(i<=n);
printf("sum=%d",sum);
}
while:
#include <stdio.h>
int main()
{
int sum=0;
int i,n;
printf("输入一个数n:");
scanf("%d",&n);
i=1;
while(i<=n)
{
sum+=i;
i++;
}
printf("sum=%d",sum);
}