内容正文:
单招零距离·计算机专业综合·下册
第二节do一while循环
知识体系
[do一while循环的格式、do一while循环的运行过程
do一while循环解决实际问题的一般步骤
do一while循环与while循环的区别
知识梳理
©2
一、do一while循环的格式
l.do一while语句的一般格式为:
do
{循环体:》
while(表达式);
2.运行过程:
这个循环与while循环的不同点在于:它先执行
中的语句,然后再
是否为真,如果为
则继续循环;如果为
,则终止循环。
3.说明:
(1)do-while循环
循环体语句。此处注意条件表达式后面有一个
不能少,否则是
错误。循环体如果只有一句,可以省略大括号,两句以上则应用
大括号以复合语句形式出现。
(2)在循环体中或表达式中应有使循环趋向于
的语句,即有最终使表达式为
的情况,否则也会出现
现象。
(3)同一个问题可以用while循环,也可以用do一while循环来解决问题,但有时要注意
写法上的调整。
二、do一while循环解决实际问题的一般步骤
1.设置循环初始条件;
2.把要重复执行的语句部分放在循环体中;
3.设法在循环体中或条件表达式中改变条件致使循环能够满足一定的条件后结束循环;
4.确定好循环的条件表达式。
典例精析
©⊙
【例1】写出下列程序的执行结果:
#include "stdio.h"
int main()
int i,sum=0;
i=1;
·84·
总复习方案·第五章循环结构程序设计
do
{sum=sum+i;
i十+;
}while(i<=5);
printf("%d
",sum);
【分析】i从1变化到5,且全部加到sum中,但最终i为6使循环退出。
【答案】15
【例2】写出下列程序的执行结果:
#include "stdio.h"
int main()
int i,sum=0;
i=5;
do
sum=sum+i;
while(i--<0);
printf("%d
",sum);
}
【分析】i一开始为5,加到sum中,5<=0不成立,退出循环。但i还要自减一次,为4。
【答案】5
【例3】写出下列程序的运行结果:
#include "stdio.h"
int main()
(int x=3;
do
{printf("%3d",x-=2);
}while(!(--x));
printf("%d ",x);
【分析】注意循环结束后还要输出一次x。
【答案】程序运行结果:
1-2-3
【例4】从键盘输人12345一1回车,则下面程序运行的结果是:
int main()
int n,k=0;
do
scanf("%d",&n);
k十=n;
)while(n!=-1);
printf("k=%d,n=%d",k,n);
}
·85·
单招零距离·计算机专业综合·下册
【答案】k=14,n=-1
【例5】编程求sum=-2-(一2+4)+(-2+4-6)-.+(一2+4-6-..一100),要
求用do一while循环书写。
#include "stdio.h"
int main()
{inti,t=0,sum=0,f1=-1,f2=-1;
i=2;
/*米米*米*米米***米*米关米BEGIN米米米米米*兴米米米希关关关米
/*兴米米米米米关*关关米关关关米END兴米米关米米关米米关米米米关米/
printf("%d
",sum);
}
【答案】
do{t=t+i¥f1;
sum=sum+t f2;
f1=-f1;f2=-f2;
i+=2;
}while(i<=100);
巩固练习
C
1.以下说法错误的是()
A.while循环是先判断条件表达式,后执行循环体语句
B.do一while和for循环均是先执行循环体语句,后判断表达式
C.while和do一while循环变量初始化的操作应在循环体语句之前完成
D.三种循环语句的循环体均可以由空语句
2.以下语句执行后的结果是()
int x=5;
do
printf("%d
",x--);
}while(x<0);
A.5
B.4
C.3
D.没有任何输出结果
3.执行如下语句后,x的值是()
int x=10;
do
{x一一;
)while(--x);
A.1
B.0
C.-1
D.没有结果
·86·
总复习方案·第五章循环结构程序设计
4.写出下列程序的运行结果:
include "stdio.h"
int main()
char chl='a',ch2='a',middle;
do
if(chl==ch2)chl++;ch2++;
if(chl<=ch2)chl++;
if(ch1>=ch2)ch2++;
}while(chl!=ch2);
while(chl!=ch2);
{++chl;
ch2+=2;
middle=chl;
ch2=middle;
chl=ch2;
printf("%c,%d",chl,ch2);
5.写出下列程序的运行结果:
#include "stdio.h"
int main()
int left,right,a=2,b=3,t;
left=0;right=9;
do
{t=a;
a=b;
b=t;
a++;b++;
left++;right--;
)while(left<=right);
printf("a=%d,b=%d",a,b);
6.编程判断153各位数值的立方和是否等于它本身,请完成程序:
include "stdio.h"
int main()
{
int digit,j=153,sum=0,x;
x=j;
do
·87·
单招零距离·计算机专业综合·下册
{
/著兴著兴米米米关柴米米*米米**END*装米米米米米米米米*****/
}while(x!=0):
if(sum==j)printf("%d yes",sum);else printf("%d no",sum);
拓展练习
1.写出下列程序的运行结果:
include "stdio.h"
int main()
int i=1;
do
if(i++%3==1)continue;
else printf("%d ",i);
)while(i<10);
}
2.写出下列程序的运行结果:
#include "stdio.h"
int main()
int a,b,i;
a=2;b=10;
i=1;
do
switch(i)
case 1:a++break;
case 2:b++;
case 3:a++;b++;break;
default:a+=2;b+=3;
i+=2;
}while(i--<=4);
printf("a=%d,b=%d,i=%d",a,b,i);
}
·88·
总复习方案·第五章循环结构程序设计
3.程序填空题:有一数列,2,3/2,5/3,8/5,13/8…,编写程序求该数列前8项及之和,请填空:
#include "stdio.h"
int main()
int i;
float fl=1,f2=1,f3,sum=0;
i=1;
do
{f3=f1+f2;
printf("%.3f\t",f3/f2):
sum=
f1=f2;
f2=f3;
)while(
printf("
sum=%.3f",sum);
技能实践
1.程序填空题:计算机自动出题,100以内的整数减法题给小学生做,要求被减数大于减
数,若做对了给予表扬,做错了允许重做,当连续做错三次,计算机就将正确结果告诉小学生。
下面给出的程序功能是随机产生两个100以内的整数形成一个减法式子,并实现按上述规则
解答。请填空:
#include "stdio.h"
include "time.h"
#include "stdlib.h"
int main()
inti,x,y,t,c;
int n=0,flag=0;
srand((unsigned)time(NULL));
x=rand()%100+1;
y=rand()%100+1;
if (x<y)(t=x;x=y;y=t;}
printf("%d-%d=",x,y);
do
printf("Please input your answer");
scanf("%d",&c);
n十+;
if
printf("%s","OK");
flag=1;
·89·
单招零距离·计算机专业综合·下册
else if(n==3)
printf("%d-%d=%d",x,y,x-y);
}while(
);
}
2.程序改错题:m和n为两个正整数,求它们的最大公约数和最小公倍数(注:两数的最
小公倍数为两数的积除以两数的最大公约数)。(最大公约数要求用辗转相除法)(要求用o
一while循环编写)程序中有三处错误,请改正。
#include "stdio.h"
int main()
int m,n,r,t;
int gbs,gys;
int x,y;
m=25;n=45;
x=m;y=n;
do
{
/米米*****米米米米米米米米*f0ud米米米米***米米米米米为*关*
r=n%m;
m=n;
n=r;
}while(r!=0);
/米*米米米米米米米米¥米米米米米f0und米米米米米***兴米米米米*米米/
gbs=x*y/n;
/米米米米***米米米米米米米米米f0und米米米***米米米米米*米***/
gys=r;
printf("gbs=%d,gys=%d
",gbs,gys);
3.程序设计题:从键盘上输入一个十进制小数,输出它的二进制形式。如:输入0.45,则
输出为:0.450000=0.01110
#include "stdio.h"
int main()
float num;
int d,t=0;
scanf("%of",&num);
printf("%f=0."num);
do
·90·
总复习方案·第五章循环结构程序设计
}while(num!=0&.&.t<=4);
第三节for循环
知识体系
GY⊙
[for循环的格式、for循环的运行过程
for循环的使用说明
循环问题常见算法
知识梳理
C⊙
一、for循环的格式
1.在C语言中,for语句使用最为灵活,它完全可以
while循环和do一while循环。
它的一般形式为:
2.运行过程:
它的执行过程如下:
(1)先求解
(2)求解
,若其值为真(非0),则执行for语句中指定的
,然后执行
下面第(3)步;若其值为
,则
,转到第5)步。
(3)求解
(4)转回上面第
步继续执行。
(5)循环结束,执行for语句下面的后续语句。
3.说明:
for语句最简单的应用形式也是最容易理解的形式如下:
for(
)循环体;
循环变量赋初值一般是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个
,它决定什么时候退出循环:循环变量增量,定义循环控制变量每循环
一次后按什么方式变化。这三个部分之间用“”分开。
for(i=1;i<100;i+)sum=sum+i;
先给i赋初值1,判断i是否小于等于100,若是则执行循环体语句,之后值增加1。再重
新判断,直到条件为假,即D100时,结束循环。
相当于:
·91·sum=sum+t∗flag;
flag=-flag;
i++;
}
【技能实践】
1.(1)m%n (2)x∗y/n
2.(1)floats=0,k=1;改为floats=1,k=1;
(2)while(k>0.001)改为 while(k>=0.001)
(3)k=1/n∗(n+1);改为k=1/(n∗(n+1));
3.while(n! =0)
{m=m∗10+n%10;
n=n/10;
}
第二节 do-while循环
【知识梳理】
一、do-while循环的格式
2.循环体 计算表达式的值 真 假
3.(1)至少要执行一次 分号 语法
(2)结束 假 死循环
【巩固练习】
1.B 2.A 3.B
4.c,99
5.a=8,b=7
6.digit=x%10;
sum=sum+digit∗digit∗digit;
x=x/10;
【拓展练习】
1.3 4 6 7 9 10
2.a=5,b=13,i=4
3.(1)sum+f3/f2 (2)++i<=8或i++<8
【技能实践】
1.(1)x-y==c (2)n<3&&flag==0
2.(1)r=n%m;改为r=m%n;
(2)gbs=x∗y/n;改为gbs=x∗y/m;
(3)gys=r;改为gys=m;
3.num=num∗2;
d=num;
printf("%d",d);
t++;
num=num-d;
第三节 for循环
【知识梳理】
一、for循环的格式
1.取代 for(表达式1;表达式2;表达式3)循环体
2.(1)表达式1
(2)表达式2 循环体 假(0) 结束循环
(3)表达式3
(4)(2)
3.循环变量赋初值 循环条件 循环变量增量
关系表达式或逻辑表达式 ;
(1)选择项 ;
(2)循环控制变量
(3)死循环
(4)循环控制变量
【巩固练习】
1.B 2.B 3.D
4.1 2 3 4
3 6 9 12
5.sum=9
【拓展练习】
1.结果为:a=2,b=8,c=46,ch=B
2.2 3 5 8 13
3.for(i=1;i<=n;i++)
{p∗=i;
s+=1/p;
}
4.for(i=2;i<=n-1;i++)
if(n%i==0)
{flag=0;
break;
}
【技能实践】
1.(1)k=10 (2)d-t∗k
2.(1)for(i=1;i<10;i++)改为for(i=1;i<=
10;i++)
(2)s=s+h改为s=s+h+r;
(3)h=r/2改为h=r;
3.sum+a/b;
printf("%.3f\t",a/b);
r=b;
b=a;
a=x+a;
第四节 循环结构的嵌套
【知识梳理】
一、循环辅助语句
1.终止并跳出 结束循环 终止并跳出最近一层
2.本次循环 尚未执行 是否执行循环体 判断
81
单招零距离计算机专业综合下册