版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上C语言程序设计课程教案表授课题目第三章 程序的控制结构(5)循环结构for课时安排2授课时间教学目的和要求1掌握:循环结构程序设计、for语句2熟悉:continue、break及goto语句教学内容1基本内容:(1)三种循环比较(2)多重循环(3)循环中用到的其他语句2重点:运算符与表达式、赋值运算符与赋值表达式讲课进程和时间分配1、引子(15分钟) 分析植树任务,认识循环结构中的术语: 循环条件 循环控制变量 循环体 改变循环条件的语句循环条件(暗含循环控制变量)植树任务:学校组织植树,要求每个班100棵. (1)当少于100棵循环体 刨树坑. 种树 浇水改变循环
2、条件的语句 植树棵树加一 (2)返回(1)在实际工作中常常会遇到有一定规律的重复性操作,这就需要用到循环语句。在C语言中主要有三种循环语句:while,do- while,for。用goto语句和if语句也能构成循环。2、for语句(50分钟)(1)格式for(表达式1;表达式2;表达式3)循环体;(2)for循环执行过程如下1)计算表达式1。2)计算表达式2,若其值为非0(循环条件成立),则转(3)执行循环体;若其值为0(循环条件不成立),则转(5)结束循环。3)执行循环体。4)计算表达式3,然后转(2)判断循环条件是否成立。5)结束循环,执行for循环之后的语句。 例:求1+2+3+4+1
3、00=?main() int i=1,s=0; while(i<=100) s=s+i; i+; printf(“the sum is:%d”,s);main() int i,s=0; for(i=1;i<=100;i+) s=s+i; printf(“the sum is:%d”,s);【例】Fibonacci数列问题, 求数列1,1,2,3,5,8,前40个数。提示:用a,b两个变量a=1,b=1初始化,然后a=a+b=2,b=b+a=3, a=a+b=5,b=b+a=8,依次类推,生成40个数据;数列后面的数值超过int的取值范围,所以定义a,b用长整型; 因为每次打印2个数
4、,循环20次,用语句 for(i=1;i<=20;i+)实现; 每行打印4个数,用语句if(i%2= =0)printf(“n”); 实现。main() long int a=1,b=1; int i; for(i=1;i<=20;i+) printf(“%12ld %12ld”,a,b); if(i%2= =0) printf(“n”); a=a+b; b=b+a; 说明:for是关键词,其后有3个表达式,各个表达式用“;”分隔。上面的格式为规范性for语句格式. 实际上3个表达式可以是任意的表达式,通常主要用于for循环控制for语句中表达式1,表达式2,表达式3都可以省略,甚
5、至三个表达式都同时省略,但是起分隔作用的“;”不能省略。如果省略表达式1,即不在for语句中给循环变量赋初值,则应该在for语句前给循环变量赋初值。main() i=1;fact=1; for(; i<=n; i+) fact=fact*i; main() for(i=1,fact=1.0; i<=n; i+) fact=fact*i; 如果省略表达式2,即不在表达式2的位置判断循环终止条件,循环无终止地进行,也就是认为表达式2始终为“真”。则应该在其它位置(如:循环体)安排检测及退出循环的机制。(break语句)如果省略表达式3,即不在此位置进行循环变量的修改,则应该其它位置(如
6、:循环体)安排使循环趋向于结束的工作。main() for(i=1,fact=1.0; i<=n; ) fact=fact*i; i+; 表达式1可以是设置循环变量初值的表达式(常用),也可以是与循环变量无关的其它表达式;表达式1,表达式3可以是简单表达式,也可以是逗号表达式。for(i=1,fact=1.0; ; i+)表达式2一般为关系表达式或逻辑表达式,也可以是数值表达式或字符表达式,事实上只要是表达式就可以。建议:不要把与循环控制无关的内容放在for语句的三个表达式中,这是程序设计的良好风格。注意:规范性for循环通常用于循环次数给定的程序。 下列程序段的运行结果是 。 for(
7、i=1;i<=5;) printf(“%d”,i); i+;A)12345 B)1234 C)15 D)无限循环若i为整形变量,则以下循环语句的循环次数是_。for(i=2;i=0;)printf(“%d”,i-);A) 无限次 B) 0次 C) 1次 D) 2次学生练习:显示110内的偶数。3、循环中用到的其他语句(30分钟)(1)break语句break语句的一般形式为:break;执行过程是:终止对switch语句或循环语句的执行(跳出这两种语句结构),而转移到其后的语句处执行。 【例5.5】求圆的面积。 #define PI 3. main() int r; float s; f
8、or(r=1;r<=10;r+) s=PI*r*r; if(s>100)break; printf(s=%f,s); 计算r=1到r=10的圆面积,直到 s>100为止。说明: 1)break语句仅能用于开关语句switch,循环语句while、do-while和for。 2)在多重循环的情况下,使用break语句时,仅退出包含break语句所在的那层循环体。练习:下面程序的输出结果是_。 main() int i; for(i=1;i<=100;i+) if(i*i>=150)&&(i*i<=200) break; printf(“%dn”
9、,i*i); A) 144 B) 255 C) 169 D) 121写出程序的运行结果:main() int i,s=0; for(i=1; i<=10; i+) s=s+2; if(s>5) break; printf(“%d”,s); 总结说明:break语句只用于循环语句或switch语句中。在循环语句中,break常常和if语句一起使用,表示当条件满足时,立即终止循环。注意break不是跳出if语句,而是循环结构。循环语句可以嵌套使用,break语句只能跳出(终止)其所在的循环,而不能一下子跳出多层循环。要实现跳出多层循环可以设置一个标志变量,控制逐层跳出。2)contin
10、ue语句(翻译为“继续”(循环continue语句的一般形式是:continue;功能:结束本次循环。即跳过本层循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。【例5.6】求100-150 之间和400-450之间能被9整除的数。提示:一个数与9取余等于0,则说明该数能被9整除。我们用一个循环语句初值=100,终值用450 ,步长=1进行循环,151到399之间的数据用continue;语句跳过不进行判断。main() int n;for(n=100;n<=450;n+) if(n>150&&n<400) continue; if(n%9=0) pr
11、intf(“%6d”,n); 运行:108 117 126 135 144 405 414 423 432 441 450注意:执行continue语句并没有使整个循环终止。注意与break语句进行比较。在while和do-while循环中,continue语句使流程直接跳到循环控制条件的测试部分,然后决定循环是否继续执行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的表达式3求值,然后进行表达式2的条件测试,最后决定for循环是否执行。 练习:以下程序的运行结果是 。 main() int i,j,x=0; for(i=0;i<2;i+) x+;
12、for(j=0;j<=3;j+) if(j%2) continue; x+; x+; printf(“%dn”,x); A、4B、8 C、6D、12总结break,continue主要区别:continue语句只终止本次循环,而不是终止整个循环结构的执行;break语句是终止循环,不再进行条件判断。 3)goto 语句格式: goto 语句标号;功能:goto语句为无条件转向语句,程序执行到goto语句时,无条件地转到语句标号所指定的语句并执行。 说明:语句标号必须用标识符表示,不能用整数作为标号。goto语句与if语句一起使用,在满足某一条件时,程序跳到标号处执行。4、程序设计举例编写
13、循环程序的要点:(1) 定义循环控制变量的初始值;(2) 每执行一次循环,改变循环变量的增量(或减量);(3) 用数据代入测试控制循环的终值条件(即是否按自己预定的次数进行循环)。 【例5.8】输入一个整数,将其各位数字逆序输出。分析:一个数i,用K=i%10,K的值为取最低位数并打印出来,再用i=i/10去掉最低位,若i0,然后重复以上过程,直到i=0就可以将整数i逆序全部输出。验证数字: i=123第1次:K=i%10 (k=3) i=i/10 (i=12) 0第2次:K=i%10 (k=2) i=i/10 (i= 1) 0第3次:K=i%10 (k=1) i=i/10 (i= 0) =0
14、程序代码:#include "stdio.h"void main() long i, k; printf("Please input an integer:n"); scanf("%ld",&i); do k=i%10; /*取最低位后打印*/ printf ("%ld",k); i=i/10; /* 去掉最低位 */ while(i!=0); printf ("n");运行:Please input an integer: 【例5.9】蜗牛爬井问题:一只蜗牛从井底爬到井口,每天白天蜗牛
15、要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,若井深10尺,问蜗牛几天可以爬出来 ? 提示:可定义三个变量,分别表示已经爬的高度、用的天数、白天和晚上的标记,每过一个晚上或者白天都给天数加1,最后将天数加1除以2得到的结果输出即是所用的天数。本例用到while循环语句和ifelse分支语句。程序代码:#include <stdio.h>main() int h, day, flag; h=day=0; flag=1; while(h<10)if (flag= =1) h=h+3; day=day+1; flag=0; else h=h-2; day=day+1; flag=1;day=(day+1)/2;printf(“%d”,day);【例5.10】打印九九乘法表。提示:用二重循环语句,外循环用i循环变量控制打印的行数,内循环用j循环变量控制每行打印的个数。程序代码:main() int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 7.2共建美好集体(教学设计)2026-2027学年度道德与法治 七年级上册统编版
- 小学三年级英语Unit 4暑假预习导学案教学设计(沪教版五四制新教材)
- 小学四年级英语上册My friends读写课教学设计
- 高中体育与健康必修第一册足球选项教学设计:运球突破与运球转身组合技术提升方案
- 译林版小学英语一年级上册Unit 4 Rhyme Time教学设计
- 酸再生工安全文化能力考核试卷含答案
- 海水捕捞工岗前风险评估与管理考核试卷含答案
- 磨毛(绒)机挡车工岗前岗位实操考核试卷含答案
- 列车长安全理论强化考核试卷含答案
- 重冶转炉工变革管理竞赛考核试卷含答案
- 岳阳观盛投资发展有限公司招聘笔试题库2026
- 空调水管道试压冲洗专项方案
- 2026年辽宁省铁岭市西丰县第二中学中考二模数学试题(含答案)
- 2026全国高考体育单招考试语文试题试题(含答案)
- 2026年大学生人文知识竞赛题库及答案
- 2025年管理岗面试试题及答案
- 水池工程施工方案(3篇)
- 肠内肠外营养的护理常规
- 齿轮加工工考试试卷及答案
- GB/T 45355-2025无压埋地排污、排水用聚乙烯(PE)管道系统
- 金属结构材料-钛合金课件
评论
0/150
提交评论