2022年《C语言程序设计》教案第三章程序的控制结构循环结构while和dowhile .pdf
学习必备欢迎下载C 语言程序设计课程教案表授课题目第三章程序的控制结构 (6) 循环结构while和 do-while 课时安排2 授课时间教学目的和要求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 后面的表达式的值,如果其值为“ 真” 则执行循环体,在执行完循环体后,再次计算while 后面的表达式的值,如果其值为“ 真” 则继续执行循环体,如果表达式的值为假,退出此循环结构。说明: 1)循环体可以是一条简单的语句,也可以由多个语句组成。若是2 个语句以上必须用 括起来,形成复合语句。2)在循环体中应有使循环趋向于结束的语句,即设置改变循环条件的语句。3)while 语句又称 “ 当型 ” 循环结构。 其特点是先判断表达式的值,然后执行循环体中的语句。如果表达式的值一开始为假(值为0) ,则直接执行循环体下面的语句。思考;如何求1+2+3+4+ 100=?算法 1:直接写出算式(用变量 sum 存放和 ) 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, i=i+1 sum=sum+i, i=i+1 sum=sum+i, i=i+1 规律 :若 i 小于或等于100 重复执行该算式循环条件循环体名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 学习必备欢迎下载算法 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、循环条件:循环结构中的条件表达式如while (i=100) 其中, i100 就是循环条件。2、循环体: 在每个循环周期均要执行一次的语句序列。如 while 下用 括起来的语句序列。3、循环控制变量:能够决定控制条件是真是假的量。如while(i 100)中的变量i 要写出一个正确的循环结构,对控制变量要做三方面的工作:1、对循环控制变量赋初值。2、将循环控制变量写入正确的控制条件。3、对循环控制变量值的更新。使用 while 语句需要注意以下几点: while 语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。因此,如果表达式的值一开始就为“ 假 ” ,那么循环体一次也不执行。当循环体为多个语句组成,必须用 括起来,形成复合语句。在循环体中应有使循环趋于结束的语句,以避免“ 死循环 ” 的发生。下列情况,退出while 循环条件表达式不成立(为零)循环体内遇break,goto 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 学习必备欢迎下载无限循环 : while(1) 循环体 ; 例:分析程序的运行结果#include main ( ) int i=1,sum=0; while ( i=100 ) printf( “ i=%d,sum=%dn ” ,i,sum += i); printf( “ sum=%dn” ,sum); 结果:程序将不停的打印“i=1,sum=.”。无法正常终止的程序,称为“ 死循环 ” 。结论:在 while 语句循环体中,一定要有能够对循环控制条件产生影响的语句。避免出现“死循环”现象。例 显示 110 的平方#include 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=k-1; A) while 循环执行10 次B) 无限循环C) 循环体一次也不被执行D) 循环体被执行一次下面程序的运行结果是_。main() int s=0,i=1; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 学习必备欢迎下载while(s=10) s=s+i*i; i+; printf(“ %d ”,-i); A) 4 B) 3 C) 5 D) 6 对以下程序段,描述正确的是_。int x=0,s=0; while(!x!=0) s+=+x; printf(“ %d ” ,s);A) 运行程序段后输出0 B) 运行程序段后输出1 C) 程序段中的控制表达式是非法的D) 程序段循环无数次下面程序段的运行结果是 。int n=0; while(n+7) a- ; printf(“ %d ” ,a);A) 10 9 8 B) 9 8 7 C) 10 9 8 7 D) 9 8 7 6 3、do while语句( 20 分钟)do while 语句的一般形式:格式:do 语句 while (表达式);功能 :先执行语句 ,后判断表达式的值。执行过程 :先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(“ 真” )时,返回重新执行该语句,如此反复,直到表达式的值等于0 为止,此时循环结束。结构流程图如图 5-3 所示。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 学习必备欢迎下载说明: 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!) 。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 循环。练习:以下程序段的执行结果是( ) main() int y=4; doy-; while(-y); printf(“ %dn” ,y -); A)-1 B) 1 C) 2 D) 0 以下程序段的执行结果是( ) main() int a=1;b=10; do 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 学习必备欢迎下载b-=a; a+; while(b-0); printf(“ %d,%dn” ,a,b); A) 3,11 B) 2,8 C) 1,-1 D) 4,9 以下说法正确的是( ) x=1; do x=x*x; while(!x); A)无限循环B) 循环执行两次C) 循环执行一次D) 有语法错误4、总结( 10 分钟)学过的三种循环语句?循环结构的基本组成部分(小结)?循环变量、条件(状态)的初始化?循环变量、条件(状态)检查,以确认是否进行循环?循环变量、条件(状态)的修改,使循环趋于结束(循环体中 ) ?循环体处理的其它工作。2、三种循环的比较?循环变量初始化:while 和 do-while 循环,循环变量初始化应该在while 和 do-while语句之前完成;而for 循环,循环变量的初始化可以在表达式1 中完成。?循环条件: while 和 do-while 循环只在while 后面指定循环条件;而for 循环可以在表达式 2 中指定。?循环变量修改使循环趋向结束:while 和 do-while 循环要在循环体内包含使循环趋于结束的操作; for 循环可以在表达式3 中完成。?for 循环可以省略循环体,将部分操作放到表达式2, 表达式 3 中,for 语句功能强大。?while 和 for 循环先测试表达式,后执行循环体,而do-while 是先执行循环体,再判断表达式。(所以while,for 循环是典型的当型循环,而do-while 循环可以看作是直到型循环)。?三种基本循环结构一般可以相互替代,不能说哪种更加优越。具体使用哪一种结构依赖于程序的可读性和程序设计者个人程序设计的风格(偏好)?对计数型的循环或确切知道循环次数的循环,用for 比较合适,对其它不确定循环次数的循环 ,许多程序设计者喜好用while/do-while 循环5、多重循环(10 分钟)?一个循环结构程序的循环体包含另一个循环。形如:for( ) for( ) 例 5.12】求出 1-100 间的全部素数。提示:素数(质数)是除了1 和它本身以外,不能够被其它数除尽的数,例3,5,7,11 while( ) while() while( ) for( ) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 学习必备欢迎下载等;判断一个素数:数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=m */ ? printf(%5d,m); ?n+; ? 讨论、思考题、作业:实验指导书习题参考资料(含参考书、文献等):叶斌陈世强 . C 语言程序设计 . 北京:科学出版社授课类型:理论课讨论课实验课练习课其他教学方式:传统授课双语讨论示教指导其他教学资源:多媒体模型实物挂图音像其他名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 7 页 - - - - - - - - -