




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计课程教案表课时安排2授课时间授课题目 第三章 程序的控制结构 ( 6)循环结构 while 和 do-while 教学目的和要求 1掌握: while 语句、 do-while 语句 2熟悉:三种循环语句 教学内容 1基本内容: ( 1) while 语句( 2)do-while 语句( 3) for 语句 2重点:三种循环语句 讲课进程和时间分配1、问题引入:回顾 if 语句和 for 语句。( 15 分钟)循环体2、while 语句( 35 分钟) (1) while 语句? 格式: while ( 条件表达式) 语句序列;执行过程:先计算 while 后面的表达式的值,如
2、果其值为 “真 ”则执行循环体,在执行完循环体后,再次 计算 while 后面的表达式的值,如果其值为 “真 ”则继续执行循环体,如果表达式的值为假, 退出此循环结构。2 个语句以上必须说明: 1)循环体可以是一条简单的语句,也可以由多个语句组成。若是 用 括起来,形成复合语句。2)在循环体中应有使循环趋向于结束的语句,即设置改变循环条件的语句。3)while 语句又称 “当型”循环结构。 其特点是先判断表达式的值, 然后执行循环体中 的语句。如果表达式的值一开始为假(值为 0),则直接执行循环体下面的语句。 思考;如何求1+2+3+4+ 100=?算法 1:直接写出算式 (用变量 sum存放
3、和 ) sum=1+2+3+4+5+ +100考虑 :1+2+3+ +100 可以改写为: (1+2)+3)+ +100),sum=0; sum=sum+1; sum=sum+2; sum=sum+3;sum=sum+100;规律 :每一步都是两个数相加,加数总是对上一步加数增加1 后参与本次加法运算,被加数总是上一步加法运算的和。可以考虑用一个变量i 存放加数 ,一个变量 sum 存放上一步的和。那么每一步都可以写成: sum+i根据规律上述式子可以改成 :sum=sum+i,sum=sum+i, sum=sum+i, 规律:若i 小于或等于i=i+1i=i+1i=i+1100 重复执行该算
4、式算法 2:分析 :设想用 sum 作为累加器 ,初值为 0,利用 sum+=i(i 依次取值为 1、2。 100) 此分析需要解决的 3 个问题:1)sum=0,i=1;2)每执行一次 sum+=i 后,i 增 1( i=i+1 );3)判断如果 i 小于或等于 100,重新执行步骤 (2),否则停止计算 main ()int i , s=0;i=1;while ( i<=100 )/*i<=100 为循环条件 */s=s+i;i+;/*改变 i 的值 */printf ( s=%d, s); 运行结果 :s=5050说明:循环结构的三个术语:1、循环条件:循环结构中的条件表达式
5、如while (i<=100) 其中, i<100 就是循环条件。2、循环体:在每个循环周期均要执行一次的语句序列。如while 下用 括起来的语句序列。3、循环控制变量:能够决定控制条件是真是假的量。如while(i< 100)中的变量 i要写出一个正确的循环结构,对控制变量要做三方面的工作:1、对循环控制变量赋初值。 2、将循环控制变量写入正确的控制条件。3、对循环控制变量值的更新。使用 while 语句需要注意以下几点 :while 语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的 语句。因此,如果表达式的值一开始就为 “假 ”,那么循环体一次也不
6、执行。 当循环体为多个语句组成,必须用 括起来,形成复合语句。在循环体中应有使循环趋于结束的语句,以避免 “死循环 ”的发生。 下列情况,退出 while 循环条件表达式不成立(为零)循环体内遇 break,goto无限循环 : while(1) 循环体 ;例:分析程序的运行结果 #include <stdio.h> main ( ) int i=1,sum=0; while ( i<=100 )printf( “i=%d,sum=%dn ”,i,sum += i); printf( “sum=%dn ”,sum); 结果:程序将不停的打印“ i=1,sum=. 。”无法正常
7、终止的程序,称为 “死循环 ”。 结论:在 while 语句循环体中 ,一定要有能够对循环 控制条件产生影响的语句。避免出现“死循环”现象。 例 显示 1 10 的平方 #include <stdio.h> main() int i=1;while(i<=10) printf("%d*%d=%dn",i,i,i*i); i+; 运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 练习: 对下列程序段叙述正确的是 。int k=0; while(k=0) k=
8、k-1;A) while 循环执行 10 次B) 无限循环C) 循环体一次也不被执行D) 循环体被执行一次 下面程序的运行结果是 。main() int s=0,i=1;while(s<=10)s=s+i*i;i+; printf( “ %-di)”; ,A) 4B) 3C) 5 D) 6对以下程序段,描述正确的是 。int x=0,s=0; while(!x!=0) s+=+x; printf( “ %d” ,s);A) 运行程序段后输出 0 B) 运行程序段后输出 1C) 程序段中的控制表达式是非法的 D) 程序段循环无数次 下面程序段的运行结果是 。int n=0; while(n
9、+<=20); printf( “ %d” ,n);A、20 B、21 C、22 D 、23 定义 int a=10; 下列循环的输出结果是 。while(a>7) a-; p rintf( “ %d” ,a);A) 10 9 8B) 9 8 7 C) 10 9 8 7 D) 9 8 7 63、do while语句( 20 分钟) do while 语句的一般形式: 格式: do语句 while (表达式); 功能:先执行语句 ,后判断表达式的值。执行过程 :先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(“真 ”)时,返回重新执行该语句,如此反复,直到表达式的值等于
10、 0 为止,此时循环结束。结构流程图 如图 5-3 所示。说明: 1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现;2) do while 语句与 while 语句都是循环语句,但有区别, do while 语句先执行一次循 环体,然后再回去判断条件是否成立,比 while 语句多执行一次。该语句用来实现 “直到型 循环结构。例: 计算 1+2+100=? main()int i=1,sum=0;do sum=sum+i; i+;while(i<=100);printf( “ the sum is:%d ” ,sum); 例:求正整数 5 的阶乘 (即求 5!)
11、。 main()float fact=1.0;int i=1; do fact=fact*i; i+; while( i<=5) printf( “ the 5 ! is :%f” , fact);说明: do-while 循环,总是先执行一次循环体,然后再求表达式的值,因此,无论表达 式是否为 “真 ”,循环体至少执行一次。do-while 循环与 while 循环十分相似, 它们的主要区别是: while 循环先判断循环条件再 执行循环体,循环体可能一次也不执行。 do-while 循环先执行循环体,再判断循环条件,循 环体至少执行一次。其它:复合语句 ,避免死循环要求同 while
12、 循环。 练习:以下程序段的执行结果是 ( ) main() int y=4;doy-; while(-y); printf( “n%”d ,-y-);A)-1 B) 1 C) 2 D) 0 以下程序段的执行结果是 ( ) main()int a=1;b=10;dob-=a; a+; while(b-<0); printf( “ %d,n%”d ,a,b);D) 4,9A) 3,11B) 2,8C) 1,-1以下说法正确的是 ( ) x=1;dox=x*x; while(!x);D) 有语法错误A) 无限循环B) 循环执行两次 C) 循环执行一次4、总结( 10 分钟) 学过的三种循环语
13、句? 循环结构的基本组成部分(小结)? 循环变量、条件(状态)的初始化? 循环变量、条件(状态)检查,以确认是否进行循环? 循环变量、条件(状态)的修改,使循环趋于结束( 循环体中 )? 循环体处理的其它工作。 2、三种循环的比较? 循环变量初始化: while 和 do-while 循环,循环变量初始化应该在 while 和 do-while 语句之前完成;而 for 循环,循环变量的初始化可以在表达式1 中完成。? 循环条件: while 和 do-while 循环只在 while 后面指定循环条件;而 for 循环可以在 表达式 2 中指定。? 循环变量修改使循环趋向结束: while
14、和 do-while 循环要在循环体内包含使循环趋于 结束的操作; for 循环可以在表达式 3 中完成。? for 循环可以省略循环体, 将部分操作放到表达式 2,表达式 3 中,for 语句功能强大。? while 和 for 循环先测试表达式,后执行循环体,而 do-while 是先执行循环体,再判 断表达式。(所以 while,for 循环是典型的当型循环,而 do-while 循环可以看作是直 到型循环)。? 三种基本循环结构一般可以相互替代,不能说哪种更加优越。具体使用哪一种结构 依赖于程序的可读性和程序设计者个人程序设计的风格(偏好)? 对计数型的循环或确切知道循环次数的循环,用
15、 for 比较合适,对其它不确定循环 次数的循环 ,许多程序设计者喜好用 while/do-while 循环形如:for( )while( )for( )while()例 5.12 】求出 1-100 间的全部素数。5、多重循环( 10 分钟)? 一个循环结构程序的循环体包含另一个循环。while( )for( )提示:素数(质数)是除了 1 和它本身以外,不能够被其它数除尽的数,例 3,5,7,11等;判断一个素数:数 m 用 2m-1 除,若都除不尽,则 m 是素数。 程序代码 :main() int m,n=0,i,k; for(m=1;m<=100;m=m+2) if(n%10= =0) printf("n");/* 每行打印 10 个数 */ for(i=2;i<m;i+)? if(m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025财务管理代理合同模板
- 2025电子产品采购合同(通讯设备)
- 2025商务英语写作货物进口合同范本
- 杭州买房别墅合同范本
- 途家租赁合同范本
- 2025购销合同示范文本
- 浴室瓷砖租房合同范本
- 煤炭合同范本模板
- 政府文印合同范本
- 出具汇算报告合同范本
- 2025年全国统一高考语文试卷(全国一卷)含答案
- GoodsFox-2025年全球电商营销趋势报告
- (高清版)DGJ 08-102-2003 城镇高压、超高压天然气管道工程技术规程
- JJF(滇) 32-2024 医用水平旋转仪校准规范
- 课堂评价课件
- 解除共管账户协议书
- 心胸外科麻醉管理
- 医工交叉培养提升医疗人才的综合能力
- 《鸿蒙HarmonyOS应用开发基础》课件 第1-3章 初识鸿蒙、ArkTS(上)、ArkTS(下)
- TCCEAS001-2022建设项目工程总承包计价规范
- 2025年医院血透室人员培训计划
评论
0/150
提交评论