break-word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">do-while语句的一般形式为:
break-word; margin: 0px; padding: 10px; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif;">do
语句
while(表达式);
这个循环与while循环的不同在于:它先执行循环体语句一次,再判断表达式的值,若为真(非0)则继续执行循环体语句;直到表达式的值为假(0)时才退出循环。do-while语句和while语句的区别在于do-while是先执行后判断,因此,do-while循环至少要执行一次循环体语句。而while语句是先判断后执行,如果条件不满足,则一次循环体语句也不执行。一般用while语句所编写的程序也可以用do-while来编写。do-while执行流程如图4-3表示。
图4-3 do-while语句执行过程
【例4-3】用do-while语句计算从1加到100的值
分析:本题要求sum=1+2+3+…+100,循环变量i的值从1-100递增,i的初值为1、终值为100,累加器sum的初值为0(sum=sum+i)。
程序的算法流程图如图4-4所示。
根据流程图写出的程序如下:
#include <stdio.h>
int main(){
int i,sum=0;
i=1;
do{
sum=sum+i;
i++;
}while(i<=100);
printf("%d\n",sum);
return 0;
}
程序运行结果:
5050
【例4-4】while和do-while循环比较。
1. while循环
#include <stdio.h>
int main( ){
int sum=0,i;
scanf("%d",&i);
while(i<=10){
sum=sum+i;
i++;
}
printf("sum=%d",sum);
return 0;
}
输入11时的运行结果:
11
sum=0
2.do-while循环:
#include <stdio.h>
int main( ){
int sum=0,i;
scanf("%d",&i);
do{
sum=sum+i;
i++;
}while(i<=10);
printf("sum=%d",sum);
return 0;
}
当输入11时的运行结果:
11
sum=11
在本例中,当i=11时, while循环先判断条件“i<=100”不成立,循环体一次也没有执行,所以输出sum=0;而do-while循环是先执行循环体“sum=sum+i; i++;”,这时sum=0+11即sum=11,i=12已经计算好了再来判断条件“i<=100”是否成立来决定是否进入下一次循环。