第5章循环控制结构作业.
高树芳C语言程序设计--第五章

VC程序代码
21
5.4
for循环结构
相关知识:
求解表达式1
1.for语句 见执行过程图。 2. for语句的说明 三个表达式均可省略, 但两个分号不可省略。
假 计算表达式2 真 循环体语句
求解表达式3
for语句的后续语句
22
5.2
while(当型)循环结构
[课堂训练5-4] 用for循环编程实现倒计时效果。即在屏幕上 固定位置显示10,然后清除之,再显示9,之后 是8……,至到1。
是成绩非-1等。
10
5.2
while(当型)循环结构
相关知识:
1.while语句的一般形式 2.while语句的说明 3.循环结构的构造方法 4.if语句与循环语句的区别
11
5.2
while(当型)循环结构
[课堂训练5-2] 计算s=1+1/2+1/3+1/4+„„+1/n,直到s大于或等 于3为止,输出n的值。 提示: 这是“标志”型循环。设置实型变量s并设初值为 0.0,设置整型变量i并设初值为1,循环条件是 s<=3,重复内容是s=s+1.0/i,注意要使用1.0实型 常量,或者将1或i作强制类型转换,将其转换为 实数,否则运算结果为0。
20
5.4 for循环结构 案例5-6 跳动的“O”
[案例任务]
编程实现字符“O”从屏幕的左端移动到右端。每一 秒种移动一下,形成跳动的效果。运算结果大致如 下。
[解决方案]首先显示一个O,延时片刻,然后光标
后退(用转义字符),再显示一个空格和一个O。循 环以上功能直到光标到屏幕最右端。
WIN-TC程序代码
[解决方案]该循环至少执行1次,使用do„while
第5章 循环结构1

说明:
(3)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值) 例如:for(i=1;i<=10;i++) sum=sum+i; (4)三个表达式均可缺省,但起分割作用的两个分号 不可省略。 例如:for( ; ; ) i=1;for(;i<=10;i++) sum=sum+i; 或 for(i=1;i<=10;) {sum=sum+i;i++;} • 表达式1省略,应在for之前对循环变量赋初值 • 表达式2省略,则不判断条件,循环无终止进行下去 • 表达式3省略,则应另设法保证循环的结束
5.4
循环的嵌套
一个循环体内又包含另一个完整的循环结构称为循 环的嵌套。
① while() {… while() {…} } ② do {… do {…} while(); } while() ; ③ for(;;) { for(;;) {…} }
5.4
④ while() {… do {…} while(); … } 说明:
在许多问题中都需要用到循环结构,如
要求计算全校每个学生的平均成绩,计算两 个正整数的最大公约数和最小公倍数等都需
要用到循环控制。C语言中有三种循环语句, 分别是while语句、do…while语句和for语 句。
5.1 while循环语句
while循环语句是用来实现“当型”循环结构的。 它的特点是先判断表达式,后执行语句。 格式: while(表达式) 语句; 该语句的执行顺序是:先计算表达式的值,再判 断其值是否为“真”(即非0)。若结果为“真”, 则执行语句;此过程重复执行,直到表达式的值为 “假”(即为0)时,结束循环。其流程图和N-S图 分别如图5-1和5-2所示。
第5章-循环结构程序设计PPT优秀课件

5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
18
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
条件表达式 值为真?
格式:
Do <语句块> [Exit Do] <语句块>
Loop [While | Until <条件表达式>]
23
5.3.1 后测型Do…Loop循环语句
说明:
后测型Do…Loop循环语句与前测型Do…Loop循环语句的主 要区别在于:
后测型要先执行一次循环体,再判断条件;而前测型要 先判断条件,然后根据判断结果决定是否执行循环体。因此 对于后测型,不管条件是否满足,循环体至少有一次执行机 会。
16
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。Do…Loop循环的应 用具有很强的灵活性,主要体现在:它既能指定循环 开始条件,又能指定循环结束条件;既能构成前测型 Do…Loop循环语句,又能构成后测型Do…Loop循 环语句。
25
5.3.1 后测型Do…Loop循环语句 【例5-10】将400~600间能够被3整除的数 输出(上机练习)
【例5-11】(略)
26
5.4 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。
5循环结构及其应用

5.2 实现循环结构的语句
do-while语句的执行过程是: 首先执行一次循环体语句,然后计算表达式(循环条件)的值,若结 果为“真”(非零),返回执行循环体语句,重复上述过程,直到表 达式的值为“假”(零)时结束循环,流程控制转到while语句的下 一语句。 do-while语句执行流程如图5-3所示。
执行程序后得到的输出结果为: 程序分析: 从本例可以看到,循环就是重复执行某些操作,本例用while语句来 实现这一循环过程,其中条件i<=30成立与否,决定着循环是否继续 进行,因此称之为循环条件,程序中被重复执行的语句称为循环体语 句,比如语句{ printf(“*”);i++; }。图5-1是本例的循环结构执行流程。 循环结构是程序的第三种基本结构。用循环结构解决问题的关键就是 找出循环继续与否的条件和需要重复执行的操作即循环体语句。 程序设计中任何循环都必须是有条件或有限次的循环,一定要注意避 免循环一直进行无法正常结束的情况(即死循环)发生。
上一页
下一页
返 回
5.2 实现循环结构的语句
【例5-2】显示1~10的平方。 【编程思路】 (1)定义变量i,并赋初始值1,用i来表示底数和行数,让i在循环体 中递增加。 (2)循环结束条件为i<=10,即底数增加到10的时候进行最后一个循 环。 (3)循环体中使用printf函数输出平方数。 【程序代码】 #include "stdio.h" main( ) { int i=1; while (i<=10) /* 循环条件*/ 上一页 下一页 返 回
上一页
下一页
返 回
5.2 实现循环结构的语句
【例5-5】求n!,即求n的阶乘,n由键盘输入。 【编程思路】 求阶乘实际上是求累乘,即求1*2*3*……*n。累乘与累加除运算类型 不同外,其执行过程相同。 程序代码】 #include "stdio.h" main( ) { int i=1,n; long s=1; printf("please input n:"); scanf(“%d”,&n); 上一页 下一页 返 回
Python语言程序设计第五章循环结构程序设计

14
第5章
循环结构程序设计
5.2 for语句 结构
1. for语句一般形式: for 目标变量 in 序列对象: 循环体语句 说明:
for语句的首行定义了目标变量和遍历的序 列对象,后面是需要重复执行的语句块。语 句块中的语句要向右缩进,且缩进量要一致。
15
第5章
循环结构程序设计
注意:
(1)for语句是通过遍历任意序列的元素来建立 循环的。 (2)for 语句也支持一个可选的else块,一般格 式如下: for 目标变量 in序列对象: 语句块 else: 语句
5
第5章
循环结构程序设计
在while语句中使用else子句
while exp: 循环体 else: 语句
Python可以在循环语句中使用else子句,即构 成了while.......else循环结构。
6
第5章
循环结构程序设计
例 :求
100
n 1
n
开始 sum,n=0,1 n<=100
1)问题分析:
29
第5章
循环结构程序设计
5.4 循环控制语句
有时候我们需要在循环体中提前跳 出循环,或者在某种条件满足时,不执行 循环体中的某些语句而立即从头开始新的 一轮循环,这时就要用到循环控制语句 break、continue和pass语句。
30
第5章
循环结构程序设计
(1) break语句
一般格式 break 功能
371printdddijk40728python语言程序设计第5章循环结构程序设计第5章循环结构程序设计循环结构程序设计51while语句当型循环52for语句结构53循环的嵌套54循环控制语句55循环结构程序举例2第5章循环结构程序设计循环结构的基本类型exptaf
cyu第5章循环(新)

for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
int i=1;s=0; while(i<1) ( ) { s=s+i; i=i+1; } printf("s=%d\n",s); ( ) }
17
int i=1,s=0; do { s=s+i; i=i+1; } while(i<1); printf("s=%d\n",s);
左边的程序结果为:s=0,而右边的程序结果为 而右边的程序结果为:s=1。 左边的程序结果为 而右边的程序结果为 。
折扣(y) 无 1% 2% 5% 10%
3
本章目标
理பைடு நூலகம்为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别
4
循环的必要性
int a1,a2,a3, a4,a5; a1 = 1 * 10; printf("1 × 10 = %d a2 = 2 * 10; printf("2 × 10 = %d a3 = 3 * 10; printf("3 × 10 = %d a4 = 4 * 10; printf("4 × 10 = %d a5 = 5 * 10; printf("5 × 10 = %d \n",a1); \n",a2); \n",a3); \n",a4); \n",a5);
第5章 循环结构程序设计

输入学生2的三门课成绩,并计算平均值后输出
scanf(“%f,%f,%f”,&s1,&s2,&s3);
aver=(s1+s2+s3)/3;
printf(“aver=%7.2f”,aver); 要对50个学生进行相同操作
重复50次
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构 化程序设计的三种基本结构,它们是各 种复杂程序的基本构造单元
(1) 先求解表达式1 (2) 求解表达式2,若其值为真,执行循环体, 然后执行下面第(3)步。若为假,则结束循环, 转到第(5)步 (3) 求解表达式3 (4) 转回上面步骤(2)继续执行 (5) 循环结束,执行for语句下面的一个语句
5.4用for 语句实现循环
for(i=1;i<=100;i++) sum=sum+i; 等价于 用for语句更简单、方便 i=1; while(i<=100) { sum=sum+i; i++; }
要向计算机输入全班50个学生的成绩
分别统计全班50个学生的平均成绩 求30个整数之和 教师检查30个学生的成绩是否及格
5.1为什么需要循环控制
例如:全班有50个学生,统计各学生 三门课的平均成绩。
输入学生1的三门课成绩,并计算平均值后输出 scanf(“%f,%f,%f”,&s1,&s2,&s3); aver=(s1+s2+s3)/3; printf(“aver=%7.2f”,aver);
n 1
100
5.3用do---while语句实现循环
解题思路:
sum=0 i=1 sum=sum+i i=i+1
第5章 循环结构程序设计PPT课件

}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章循环控制结构一、单选题1、下列循环的输出结果是( B )#include<stdio.h>int main( ){ int n=10while (n>7){ n--;printf("%d\n",n);}}A. 10 9 8B. 9 8 7C. 10 9 8 7D. 9 8 7 62、以下程序的输出结果是( A )#include<stdio.h>int main( ){ int n=4;while(n--)printf("%d ",--n);}A. 2 0B. 3 1C. 3 2 1D. 2 1 03、设有以下程序段,则下面描述中正确的是(C)#include<stdio.h>int main( ){ int k=10;while(k==0) k=k-1; }A. while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次4、有以下程序段,while循环执行的次数是( C)#include<stdio.h>int main( ){ int k=0;while(k=1) k++; }A.无限次B.有语法错,不能执行C.一次也不执行D.执行一次5、设K为整形,则下面的while循环执行( B )次#include<stdio.h>int main( ){ int k=2;while(k==0) { printf("%d",k); k--; }printf("\n");}A.无限次B. 0次C. 1次D. 2次6、读程序,输出结果是(C )#include<stdio.h>int main( ){ int num=0;while (num<=2){ num++; printf("%d",num); }}A. 1B. 2 2C. 1 2 3D. 1 2 3 47、下面程序段的运行结果是(A )#include<stdio.h>int main( ){ int a,b,c;a=1;b=2;c=2; 2 1 1 12while(a<b<c) {t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);}A. 1,2,0B. 2,1,0C. 1,2,1D. 2,1,18、假定a和b为int型变量,则执行以下语句后b的值为D#include<stdio.h>int main( ){ int a=1,b=10;do{ b=b-a; a++; }while (b-->0);}A. -3B. -2C. -1D. -49、以下程序段____C__#include<stdio.h>int main( ){ int x=-1;do {x=x*x;}while(!x);}A.是死循环B.循环执行二次C.循环执行一次D.有语法错误10、有如下程序,该程序的执行结果是(B )#include<stdio.h>int main( ){ int x=23;do printf("%d",x--);while(!x);}A. 321B. 23C.不输出任何内容D.陷入死循环11、执行以下程序后,输出的结果是(D )#include<stdio.h>int main( ){ int y=10;do {y--;}while(--y);printf("%d\n",y--);}A. -1B. 1C. 8D. 012、若输入字符串:abcde<回车>,则输出为(D )#include<stdio.h>int main( ){ char ch;while((ch=getchar())=='e') printf("*");}A. *B.***C. ****D.空13、如果输入为:ABCdef,执行下面一段程序后,则输出为(B )#include<stdio.h>int main( ){ char ch;while((ch=getchar( ))!='\n'){ if(ch > ='A' && ch < ='Z')ch=ch+32;else if(ch>='a' && ch<'z') ch=ch-32;printf("%c",ch);}printf("\n");}A. ABCdefB. abcDEFC. abcD. DEF14、以下描述中正确的是(C )A.由于do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B. do-while 循环由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while 循环体中,一定要有能使while 后面表达式的值变为零(“假”)的操作D. do-while 循环中,根据情况可以省略while15、以下叙述正确的是(D )A. do-while语句构成的循环不能用其它语句构成的循环来代替。
B. do-while语句构成的循环只能用break语句退出。
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D.用do-while语句构成的循环,在while后的表达式为零时结束循环。
91 816、以下程序的输出结果是(D )#include<stdio.h>int main( ){ int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d %d ",x--,y) ;}A. 10 1 9 2B. 9 8 7 6C. 10 9 9 0D. 10 10 9 117、若i为整型变量,则以下循环执行次数是(B )#include<stdio.h>int main( ){ int i;for(i=2;i==0; ) printf("%d",i--);}A.无限次B. 0次C. 1次D. 2次18、以下循环体的执行次数是(C )#include<stdio.h>int main( ){ int i,j;for(i=0,j=1;i<=j+1;i+=2,j--) 0printf("%d \n",i);}A. 3B. 2C. 1D. 019、设i,j为int型变量,则下面for循环语句的执行结果是(B )#include<stdio.h>int main( ){ int i;for(i=10,j=0;j<2;j++){ if(i%3) i--; --i; --i;printf("%d ",i) }}A. 6 3B. 7 4C. 6 2D. 7 320、下面程序的输出是(B )#include<stdio.h>int main( ){ int y=9;for( ;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}A. 741B. 852C. 963D. 87542121、有以下程序,其输出结果是(C )#include<stdio.h>int main( ){ int x,i;for(i=1;i<=50;i++){ x=i;if(x%2==0)if(x%3==0)if(x%7==0)printf("%d",i);}}A. 28B. 27C. 42D. 4122、执行下面的程序后,a的值为(C )#include<stdio.h>int main( ){ int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20) break;if(b%3==1) { b-=2; continue; } b=4 7 10b+=5;printf(“%d%d”,a,b);}}A. 11B. 15C. 12D. 1323、执行下面的程序后,a的值为(B )#include<stdio.h>int main( ){ int a,b;for (a=1,b=1;a<100;a++){ if (b>=20) break;if (b%3==1) { b+=3; continue; }b-=5;}}A. 7B. 8C. 9D. 1024、若x是int型变量,以下程序段的输出结果是( )。
#include<stdio.h>int main( ){ int x;for(x=3;x<6;x++)printf((x%2)?(”* * %d”):(”# # %d\n”),x);}A. * * 3 # # 4 * * 5B. # # 3 * * 4 # # 5C. # # 3 * * 4 # # 5D. * * 3 # # 4 * * 525、以下程序的输出结果是()#include<stdio.h>int main( ){ int i;for(i=1;i<6;i++){ if(i%2) {printf("#");continue;}printf("*");}printf("\n");}A. #*#*#B. #####C. *****D. *#*#*26、下面程序段的运行结果是()#include<stdio.h>int main( ){ int x=3;do {pfintf(“*_*”);x--;}while(x);}A. *_*B. ***C. **_**_**D. *-**_**_*27、以下程序的输出结果是()#include<stdio.h>int main( ){ int a=0,i;for(i=1;i<5;i++){ switch( i ){ case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5; }}printf("%d\n",a);}A. 31B. 13C. 10D. 2028、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为()#include<stdio.h>int main( ){ int v1=0,v2=0;char ch;while((ch=getchar( ))!='#')switch(ch){ case 'a':case 'h':default: v1++;case '0': v2++}}A. 2,0B. 5,0C. 5,5D. 2,529、若i,j已经定义为int类型,则以下程序段中内循环总的执行次数是()#include<stdio.h>int main( ){ int i,j;for (i=5;i>0;i--)for (j=0;j<4;j++) {...}}A. 20B. 24C. 25D. 3030、有以下程序,输出结果是()#include<stdio.h>int main( ){ int i, j;for(j=10;j<11;j++){ for(i=9;i<j; i++)if (!(j%i))break;if(i=j-1) printf("%d",j);}}A. 11B. 10C. 9D. 10 11二、分析程序1、输入1 ,输出()#include<stdio.h>int main( ){ int sum=0, i ;scanf( "%d",&i );while (i<=10){ sum=sum+i;i++; }printf("%d",sum);}2、以下程序的输出结果是()#include<stdio.h>int main( ){ int X=15;while(X>10&&x<50){ X++;if(x/3) { X++;break;}else continue;}printf(”%d\n”,X);}3、以下程序的输出结果是()#include<stdio.h>int main( ){ int s,i;for(s=0,i=1;i<3;i++,s+=i) printf("%d\n",s);}4、以下程序的输出结果是()#include<stdio.h>int main( )while(x--);printf("%d\n",x);}5、下述程序的运行结果是()#include<stdio.h>int main( ){ int s=0,k;for(k=7;k>4;k--){ switch(k){ case 1:case 4:case 7:S++;break;case 2:case 3:case 6:break;case 0:case 5:s+=2;break;}}}6、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为()#include<stdio.h>int main( ){ int i,j;for(i=0,j=10;i<=j;i++,j--)k=i+j;}7、程序运行后,如果从键盘上输入1298;则输出结果为()#include<stdio.h>int main( )scanf("%d",&n2);while(n2!=0){ n1=n2%10;n2=n2/10;printf("%d",n1);}}三、程序填空1、求输入100个数中正数的个数及其平均值#include<stdio.h>int main( ){int i,n;float sum,f;n=0;1 ;for(i=0;i <= 100,i++){print f("enter a real number:";scanf("%f",&f));if 2continue;3 ;n++;}print f("sum=%f",sum);print f("a rerage=%f",sum/n); }}2、下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。