




已阅读5页,还剩87页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习情境三 循环结构,情境目标: for语句、while语句和do-while语句; 使用循环结构和循环结构的流程图; 使用break语句和continue语句; 用设置断点的方法调试程序。 任务分解: 3.1 使用for语句实现循环控制 3.2 使用while语句实现循环控制 3.3 使用do-while语句实现循环控制 3.4 用break语句强行退出循环 用continue语句进行下一次循环 3.5 学会使用循环嵌套,P49,任务描述: 1、计算1+2+3+n的值,n值由键盘任意录入。 2、计算1*2*3*n的值,n值由键盘任意录入。 3、编写程序,输出100999之间个位是5且能被7整除的数,要求每行输出5个数,且统计一共有多少个这样的数。(枚举) 4、求 5、求 (即求1!+2!+3!+4!+5!+20!) 6、打印出所有“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数, 因为153= 。(枚举) 7、有一分数序列: 求出这个数列的前20项之和。,3.1 使用for语句实现循环控制,63以下for循环的执行次数是 。 for (x=0,y=0; (y=123) A. (int)(i/7)=i/7 B. (int)i/7=i/7 C. i%7=0 D. i%7=0,C,C,D,79对for(表达式1 ; ; 表达式3)可理解为 。 Afor(表达式1; 0; 表达式3) Bfor(表达式1; 1; 表达式3) Cfor(表达式1; 表达式1; 表达式3) Dfor(表达式1; 表达式3; 表达式3) 80若i为整型变量,则以下循环执行次数是 . for(i=2;i=0;) printf(“%d“,i- ); A无限次 B. 0次 C. 1 次 D. 2次 81执行语句for(i=1;i+4;);后变量i的值是 。 A3 B. 4 C. 5 D. 不定 82下面程序的功能是计算 1至10之间的奇数之和及偶数之和。请选择填空 。 main() int a,b,c,i; a=c=0; for(i=0;i=10;i+=2) a+=i; ; c+=b; printf(“偶数之和=%dn“,a); printf(“奇数之和=%dn“,c-11); Ab=i- B. b=i+1 C. b=i+ D. b=i-1,B,B,C,B,83下面程序的运行结果是: main() int i; for(i=1;i=5;i+) switch(i%5) case 0 :printf(“* “);break; case 1 :printf(“#“);break; default :printf(“n“); case 2 :printf(“ A#&* B. #& C. # D. #& & & * & &*,B,资讯: 3.1.1 使用for语句重复显示信息 3.1.2 使用for语句重复出算术题,3.1 使用for语句实现循环控制,P50,3.1.1 使用for语句重复显示信息,【实例3.1】编写程序,在屏幕上显示如下信息,每按一次任何键时重复显示,共显示3次,要求每次显示后其下面还要给出显示次数。,P50,* *Welcome* *,显示1次信息可用输出语句:printf(“*n“); printf(“*Welcome*n“); printf(“*n“);,显示3次信息,重复3次以上语句,按任何键的操作使用getch,#include main() int i=0; for(i=1; i=3; i=i+1) printf(“*n“); printf(“*Welcome*n“); printf(“*n“); printf(“Display %d time(s).nn“,i); getch(); ,#include main() int i=0; for(i=1; i=3; i=i+1) printf(“*n“); printf(“*Welcome*n“); printf(“*n“); printf(“Display %d time(s).nn“,i); getch(); ,2=3,#include main() int i=0; for(i=1; i=3; i=i+1) printf(“*n“); printf(“*Welcome*n“); printf(“*n“); printf(“Display %d time(s).nn“,i); getch(); ,3=3,#include main() int i=0; for(i=1; i=3; i=i+1) printf(“*n“); printf(“*Welcome*n“); printf(“*n“); printf(“Display %d time(s).nn“,i); getch(); ,4=3,运行结果: * *Welcome* * Display 1 time(s).,* *Welcome* * Display 2 time(s).,* *Welcome* * Display 3 time(s).,真,假,i3,i=1,i=i+1,输出信息,流程图,一般形式:,for(表达式1; 表达式2;表达式3) 重复执行部分; ,执行流程:,归纳分析,说明: for语句中表达式1, 表达式2 ,表达式3 类型任意,都可省略,但分号;不可省 无限循环: for(;),例 用for循环求,#include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“%d“,sum); ,for(循环变量赋初值;循环条件;循环变量增值) 循环体语句; ,for语句一般应用形式:,例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,运行结果:abcdefghij,例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); ,例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); ,例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; ,main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(“%d+%d=%dn“,i,j,k); ,#include main() char c; for(;(c=getchar()!=n;) printf(“%c “,c); ,3.1.2 使用for语句重复出算术题,【实例3.2】编写程序,给小学生出4道100以内2个数的加法题,每道题25分,根据学生的答案,显示实际得分。,P52,要出4道题,需重复4次出题操作,对每题,要及时判断答案的正确性,当答案正确时要累加分数,#include #include #include main() int i=0,op1=0,op2=0,pupil=0,answer=0,total=0; randomize(); for(i=1; i=4; i+) op1=random(100); op2=random(100); printf(“%d+%d=“,op1,op2); scanf(“%d“, ,在编写程序时,参插着使用顺序、分支、循环结构,3.5.1 学会找出Fibonacci数列的各项,掌握递推算法,【实例3.8】编写程序,输出Fibonacci数列的前30项(每行输出5项)。,P63,#include main() int i=0; long f1=0,f2=1,f3=0; printf(“%10ld%10ld“,f1,f2); for(i=3; i=30; i+) f3=f1+f2; printf(“%10ld“,f3); f1=f2; f2=f3; if(i%5=0) printf(“n“); ,据前项和后项关系求解,递推算法,计算1+2+3+100的值,sum=0; for(i=1; i=100; i+) sum=sum+i;,或 sum=0; i=1; while(i=100) sum=sum+i; i=i+1; ,计算n!值,f=1; for(i=1; i=n; i+) f=f*i;,或 f=1; i=1; while(i=n) f=f*i; i=i+1; ,计算1!+2!+3!+n!的值,f=1; s=0; for(i=1; i=n; i+) f=f*i; s=s+f; ,计算30+31+32+33+3n的值,f=1; sum=1; for(i=1; i=n; i+) f=f*3; sum=sum+f; ,计算 的值,s=1; sum=0; for(i=1; i=100; i+) sum=sum+s*1.0/i; s=-s; ,1、计算1+2+3+n的值,n值由键盘任意录入。 #include void main() int n,sum=0,i; scanf(“%d“, ,2、计算1*2*3*n的值,n值由键盘任意录入。 #include void main() int n,i; float s=1; scanf(“%d“, ,3、编写程序,输出100999之间个位是5且能被7整除的数,要求每行输出5个数,且统计一共有多少个这样的数。 #include void main() int s,i=0; for(s=100;s=999;s+) if(s%10=5 ,4、求,#include void main() int k; int sum1=0; float sum,sum2=0; for(k=1;k=100;k+) if(k=10) sum2+=1.0/k; if(k=50) sum1+=k*k; sum1+=k; sum=sum1+sum2; printf(“sum=%fn“,sum); ,5、求 (即求1!+2!+3!+4!+5!+20!),#include void main() double sum=0; int i; double f=1; for(i=1;i=20;i+) f=f*i; sum=sum+f; printf(“sum=%lfn“,sum); ,6、打印出所有“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数, 因为153= 。,void main() int s; int a,b,c; for(s=100;s=999;s+) a=s%10; b=s%100/10; c=s/100; if(s=a*a*a+b*b*b+c*c*c) printf(“%dn“,s); ,7、有一分数序列: 求出这个数列的前20项之和。,#include void main() int i; float sum=0,s; int a=2,b=1,t; for(i=1;i=20;i+) s=a*1.0/b; sum=sum+s; t=b; b=a; a=a+t; printf(“sum=%fn“,sum); ,任务描述: 1、编程,为了比较A、B两家相邻超市的顾客访问人数,某人站在小超市门口用两种颜色的豆子统计人数,若顾客进A家,加1粒红豆,进B家,加1粒绿豆,最后根据红豆和绿豆的个数比较。 2、编程,求满足 的最大的n值。 3、编程,计算 (n值由键盘输入)。 4、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。 5、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 (直到输入回车为止。) 6、统计公元1年到公元2000年的闰年个数。,3.2 使用while语句实现循环控制,P54,55. 若k为整型,以下while循环执行 次。 k=2; while(k=0) printf(“%d“,k),k-; printf(“n“); A. 无限次 B. 0次 C. 1次 D. 2次 56. 下面这个程序的输出是 。 main() int y=10; while(y-) ; printf(“y=%dn“,y); A. y=0 B. while构成死循环 C. y=1 D. y=-1 57设有程序段 int k=10; while (k=10) k=k-1; 则下面描述中正确的是 。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句一次也不执行 D. 循环体语句执行一次,B,D,B,58下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空 。 main() int a,b,t; scanf(“%d%d“, A. a=0 B. a C. !a = 1 D. !a,B,B,资讯: 3.2.1 使用while语句为学生分班 3.2.2 使用while语句计算近似值,3.2 使用while语句实现循环控制,P54,3.2.1 使用while语句为学生分班,【实例3.3】编写程序,根据所输入的学生英语成绩,把学生分成A、B两个班,其中大于等于85分的学生分到A班,其余的学生分到B班,如果输入的成绩为负数,认为没有其他学生,最后分别显示A、B班的总人数。,P54,#include main() int a=0,b=0,score=0; scanf(“%d“, ,一般形式:,while(表达式) 循环体语句;,执行流程:,3.2.2 使用while语句计算近似值,【实例3.4】编写程序,计算数学式 的近似值,直到最后一项的值小于10-4为止。,P56,#include main() int n=1; float sum=0.0; while(float)1/n=1e-4) sum=sum+(float)1/n; n=n+2; printf(“sum=%fn“,sum); ,实型数10-4,1、编程,为了比较A、B两家相邻超市的顾客访问人数,某人站在小超市门口用两种颜色的豆子统计人数,若顾客进A家,加1粒红豆,进B家,加1粒绿豆,最后根据红豆和绿豆的个数比较。,#include void main() int flag; int red=0,green=0; scanf(“%d“, ,2、编程,求满足 的最大的n值。,#include void main() float sum=0; int n=1; while(sum=10000) sum=sum+n*n*n; n+; printf(“最大的n值为:%dn“,n-2); ,3、编程,计算 (n值由键盘输入)。,#include void main() float s=1; int i,n; scanf(“%d“, ,4、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。,#include void main() int i,s=1; for(i=9;i=1;i-) s=(s+1)*2; printf(“一共有桃子%dn“,s); ,5、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 (直到输入回车为止。),#include void main() char ch; int zm=0,kg=0,sz=0,qt=0; scanf(“%c“, ,6、统计公元1年到公元2000年的闰年个数。,#include void main() int year; int num=0; for(year=1;year=2000;year+) if(year%400=0|year%4=0 ,任务描述: 若运行以下程序时,从键盘输入ADescriptor(CR表示回车),则下面程序的运行结果是 。 #include main() char c; int v0=0,v1=0,v2=0; do switch(c=getchar() case a: case A: case e: case E: case i: case I: case o: case O: case u: case U: v1+=1; default:v0+=1;v2+=1; while(c!=n); printf(“v0=%d,v1=%d,v2=%dn“,v0,v1,v2); A. v0=7,v1=4,v2=7 B. v0=8,v1=4,v2=8 C. v0=11,v1=4,v2=11 D. v0=12,vl=4,v2=12,3.3 使用do-while语句实现循环控制,P58,D,73以下程序段 。 x=-1; do x=x*x; while(!x); A是死循环 B. 循环执行二次 C循环执行一次 D. 有语法错误 74以下描述中正确的是 。 A由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能 使用复合语句 Bdo-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C在do-while循环体中,一定要有能使while后表达式值变为零(“假“)的操作 Ddo-while循环中,根据情况可以省略while,C,C,资讯: 3.3.1 使用do-while语句计算做题正确率 3.3.2 使用do-while语句编写打字练习程序,3.3 使用do-while语句实现循环控制,P58,3.3.1 使用do-while语句计算做题正确率,【实例3.5】编写程序,给小学生出若干道100以内2个数的加法题,直到学生做对5道题为止,最后显示学生做题的正确率。,P58,#include #include #include main() int op1=0,op2=0,pupil=0, answer=0,right=0,total=0; float rate=0.0; srand(time(0);,do op1=rand%100; op2=rand%100; printf(“%d+%d=“,op1,op2); scanf(“%d“,rate=(float)right/total*100; printf(“rate is:%fn“,rate); ,do-while语句 一般形式:,do 循环体语句; while(表达式);,执行流程:,3.3.2 使用do-while语句编写打字练习程序,【实例3.6】编写程序,根据已显示的一段句子练习打字,按回车键可随时停止练习。,P60,#include main() char ch=0; printf(“Those who dive beneath the surface find solutions others cannot see.n“); do ch=getch(); putchar(ch); while(ch!=r); ,3.4 用break语句强行退出循环,【实例3.7】编写程序,在已报名的100名考生中,补招总分高于420分的学生,但按照报名的先后顺序只补招3名学生。,P61,#include main() int score=0,i=0,total=0; for(i=1; i420) printf(“Admited.score:%dn“,score); total+; if(total=3) break; else printf(“Not admited.n“); ,3.4 用continue语句继续下一次循环,#include void main() int t,x; for(t=1;t=10;t+) scanf(“%d“, ,功能:结束本次循环,跳过尚未执行的语句,进行下一次是否执行循环体的判断,下面程序的运行结果是 。 #include “stdio.h“ main() int i; for(i=1;i=5;i+) if(i%2) printf(“*“); else continue; printf(“#“); printf(“#“); A. *#*#$ B. *#*#*# C. *#*#$ D. #*#*$,B,任务描述: 1、假设x、y、z为偶数,且满足x+2y+z=16,输出所有可能的x、y、z的值。(可用三重循环) 2、将100元钱换成10元、5元、1元的零钱,如果要求换成30张,编程输出所有可能的换法。 3、编程,打印图案,要求行数由键盘输入。,3.5 学会使用循环设计典型算法,P63,51. 该程序的输出结果是 。 m=37;n=13; while(m!=n) while(mn) m=m-n; while(nm) n-=m; printf(“m=%dn“,m); m=13 B. m=11 C. m=1 D. m=2 52. 该程序的输出结果是 。 for(i=0;i2) break; printf(“%d,“,j); printf(“%dn“,i); A. 10,3 B. 5,2 C. 5,3 D. 10,2,C,C,69下面程序的运行结果是 。 #include “stdio.h“ main() int i; for(i=1;i=5;i+) if(i%2) printf(“*“); else continue; printf(“#“); printf(“#“); *#*#$ B. *#*#*# C. *#*#$ D. #*#*$ 70下面程序的运行结果是 。 main() int i,j,a=0; for(i=0;i2;i+) for(j=0;j=4;j+) if(j%2) break; a+; a+; printf(“%dn“,a); ,B,4,3.5.3 用枚举算法求解百元百鸡问题 3.5.4 学会判断质数的算法,3.5 学会使用循环设计典型算法,P63,3.5.3 用枚举算法求解百元百鸡问题,【实例3.10】编写程序,输出百元百鸡问题的所有可能结果。,P67,假设公鸡、母鸡和小鸡的个数分别为x,y,z,5x+3y+z/3=100 x+y+z=100,x的取值在020之间;同理y的取值在033之间,#include main() int x=0,y=0,z=0; for(x=0; x=20; x+) for(y=0; y=33; y+) z=100-x-y; if(15*x+9*y+z=300) printf(“cock=%-3d hen= %-3d chicken= %-3dn“,x,y,z); ,不重复、不遗漏地一一列举出来,枚举算法,双重循环,循环的嵌套 三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程,(1) while() while() . ,(2) do do while( ); . while( );,(3) while() do while( ); . ,(4) for( ; ;) do while(); while() . ,嵌套循环的跳转 禁止: 从外层跳入内层 跳入同层的另一循环 向上跳转,打印九九乘法表,修改:如何去掉重复数据,打印三角形的九九乘法表?,main() int i,j; for(i=1;i=9;i+) /* I 作为外循环控制变量,控制被乘数变化 */ for(j=1;j=9;j+) /* j作为外循环控制变量,控制乘数变化 */ printf(“%d * %d=%-4d”,i,j,i*j); printf(“n”); ,例2:输出如下形式图案。,* * * * * *,main() int i,j; for(i=1;i=6;i+) /* 外层循环用于控制输出的行数 */ for(j=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年会计实务中的合规性要求试题及答案
- 2024微生物检验的考试趋势试题及答案
- 试题及答案:科研与教育的结合
- 微生物检验生物安全措施试题及答案
- 项目管理中的信息流动性评估试题及答案
- 微生物培养技术常见问题试题及答案
- 微生物检验中的创新技术应用试题及答案
- 掌控时间管理在注册会计师考试复习中的重要性试题及答案
- 金融监管的主要内容与影响试题及答案
- 注册会计师职场沟通与协作能力试题及答案
- 《英语委婉语与忌语》PPT课件.ppt
- 地域文化教学大纲(修订本)
- 通用航空产业园项目商业计划书范文参考
- 中国书法演变史
- 工商企业管理毕业论文范文
- 调查问卷设计-课件PPT
- 井下电缆着火应急演练预案
- APP开发合作协议通用版
- 小学数学 五进制
- 劳动合同续签评估表
- 秦皇岛市住房公积金提取申请书
评论
0/150
提交评论