内容正文:
5.3 直到型循环do-while语句
5.3.1引例
例5.5 用do-while语句求解1~100的累加和。
main()
{ int i=1,sum=0;
do
{ sum+=i; i++;}
while (i<=100); /*循环继续条件:i<=100*/
printf("sum=%d
",sum);}
下一页
返回
5.3 直到型循环do-while语句
例5.6 求满足1+1/2+1/3+……+1/i>limit的最小i值,limit的值由键盘输入。
main()
{ int i=0;
double sum=0.0,limit;
printf("Please input limit:");
scanf("%lf",&limit);
do { i++; sum+=1.0/i; }
while (sum<=limit); /*循环继续条件*/
printf("i=%d
",i); }
上一页
下一页
返回
5.3 直到型循环do-while语句
5.3.2do-while语句
1. do-while语句的一般格式
do { 循环体语句组;}
while (表达式); /*本行的分号不能缺省*/
2.do-while语句的执行过程
(1)执行循环体语句组。
(2)求解表达式。如果表达式的值为非0(逻辑真),则转向(1)继续执行;否则,转向(3)。
(3)执行do-while的下一条语句。
上一页
下一页
返回
5.3 直到型循环do-while语句
3.说明
(1)do-while语句的特点是“先执行,后判断”,无论一开始表达式的值为非0(真)还是0(假),循环体语句组都至少被执行一次,这一点与while语句和for语句不同。
(2)while语句中的(2)~(4)说明同样适用于do-while语句。
上一页
返回
5.4 循环结构的嵌套
若循环语句中的循环体内又完整的包含另一个或多个循环语句,称为循环嵌套。前面介绍的三种循环都可以相互嵌套,循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。例如,二层循环嵌套(又称二重循环)结构如下:
返回
5.5 break语句与continue语句
5.5.1break语句
1.引例
例5.11 从键盘输入一个整数n,判断n是否为素数。
main()
{ int n,i;
printf("Input a number:");
scanf("%d",&n);
for (i=2; i<n; i++)
if (n%i==0) break; /*有任一数能整除就不是素数,不再继续循环*/
if (i==n) printf("%d is a prime number.
",n);
else printf("%d is not a prime number.
",n);
}
下一页
返回
5.5 break语句与continue语句
2.break语句的格式和功能
格式:break;
功能:强制跳出循环结构,转向执行循环语句的下一条语句。
3.说明
(1)break语句可用于三种循环语句的任意一种语句及switch语句中。如例5.11用于for循环语句中。
(2)循环嵌套时,内层循环体中的break语句只跳转到本层循环结构之后,而不是跳转到外层循环结构之后。
(3)break语句给循环语句提供了一个非正常出口,即使得循环结构有一个入口和两个出口,这是结构化程序设计所不允许的。因此不提倡使用。
上一页
下一页
返回
5.5 break语句与continue语句
5.5.2continue语句
1.引例
例5.12 把10~50之间不能被3整除的数输出。
main()
{ int i=0,n=10;
while (n<=50)
{ if (n%3==0) { n++;continue; } /*转向判断while后的表达式是否非0(真)*/
printf("%5d",n);
i++; n++;
if (i%10==0) printf("
"); }
printf("
"); }
上一页
下一页
返回
5.5 break语句与continue语句
2.continue语句的格式和功能
格式:continue;
功能:跳过循环体其余语句,对于for循环语句,转向表达式3的计算;对于while和do-while循环语句,转向循环继续条件的判定。
break和continue语句对循环控制的影响如图5-4