第六章循环控制(6.1—6.5)(2学时)一、教学目的及要求本节课是C语言程序设计中的重点之一,要求学生熟练循环结构的概念,While、Do—while、for语句的一般形式、流程图、执行过程,并能对三种结构进行比较,能熟练运用到综合例题中。二、教学重点及难点重点:1.While语句的执行过程及while语句的应用2.Do--while语句的执行过程及while语句的应用3.for语句的执行过程及应用难点:1.while语句的应用2.Do--while语句应用3.for语句的应用三、教学手段板书与多媒体课件演示相结合四、教学方法启发式教学、讲解、演示五、作业1、习题册5.1—5.6,5.16—5.18,5.26—5.30,5.64—5.672、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。3、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如153就是一水仙花数。153=13+53+33六、参考资料1、王明福、乌云高娃主编《C语言程序设计教程》第四章2、苏小红,陈惠鹏,孙志岗等《C语言程序设计教程》第三章七、教学内容与教学设计教学内容教学设计备注【导入】在许多问题中需要用到循环控制,例如,要输入全校学生成绩,求若干个数之和。迭代求根等。几乎所有实用的程序都包含循环。1.引入循环控制语句的作用当满足一定条件时,重复执行一段程序.2.设置循环需要考虑的问题循环初值;循环条件的设置;循环体应包括的语句;循环条件的修改。导入从示图中引出程序设计的重要结构之一-循环提出思考实现循环需要什么条件?需不需要在某个时刻结束循环?【讲授新课】一、循环结构的概念利用计算机重复处理某些实际问题就构成了循环结构。在循环结构中将某些语句重复执行,这些语句称为循环体;每重复一次都要判断是继续重复还是停止重复,这个判断所依据的条件称为循环条件;循环体与循环条件一起构成了循环结构。例1:求1+2+3+……+99+100的和要完成上面的累加求和运算,设sum为累加和变量,i为循环控制变量,用于控制循环次数,也就是循环继续的条件,并且i由1变到100,实现上述算法的N-S图如讲解[板书][幻灯片][板书][幻灯片][引导]学生对循环条件设置的思考,下。i=1,sum=0当i=100sum=sum+ii=i+1输出sum的值要用C语言实现上述算法,就要学习实现循环的语句。二、While循环语句【一般格式】while(表达式){循环体语句}while语句是一种先判断后执行的循环语句。【注意】①“表达式”一般为关系表达式或逻辑表达式。②循环体可以是单个语句,也可是多个语句;如果是多个语句必须使用大括号“{}”将多个语句括起来构成一个复合语句。⑵【流程图及N-S图】⑶【执行过程】先计算表达式的值并判断,若表达式的值为真(非零),则执行循环体的语句;若表达式的值为假(零)时,结束循环。⑷【应用】利用while语句“求1+2+3+……+99+100的和”参考对初值及条件变化如何设置思考。[提问]如果没有i+1会导致什么结果?[板书][幻灯片][重点]复合语句要用{}括起来,结构的执行顺序。[课堂设计][提问]表达式可以是什么类型的?表达式循环体假真当表达式的值为真循环体程序如下:main(){inti,sum=0;i=1;while(i=100){sum=sum+i;i++;}printf(sum=%d\n,sum);}例2:利用while语句计算n!(即:1x2x3x……xn)参考程序如下:main(){inti=1,n,s=1;scanf(“%d”,&n);while(i=n){s=s*i;i++;}printf(s=%d\n,s);}三、DO-While循环语句⑴【一般格式】do{循环体语句}while(表达式);do-while语句是一种先执行后判断的循环语句。⑵【流程图及N-S图】[课堂设计]请同学上机编写程序。根据概念请学生自己分析对上机时常见的错误有哪些?[板书][幻灯片][重点]两种结构在执行顺序上的区别。循环体真假表达式循环体当条件表达式为真⑶【执行过程】先执行循环体语句,再计算表达式的值,若表达式的值为真(非零),再执行循环体的语句;当表达式的值为假(零)时,结束循环。⑷【应用】例3:用do—while语句编程实现求1+2+3+……+99+100的和参考程序如下:main(){inti,sum=0;i=1;do{sum=sum+i;i++;}while(i=100);printf(sum=%d\n,sum);}例4:用do—while语句编程计算n!(即:1x2x3x……xn)模仿例3同学们自己写出相应的程序。四、while与do-while语句的区别⑴while语句是先判断,后执行的循环语句;而do-while语句是先执行,后判断循环语句。⑵当第一次进行判断表达式的值时,表达式的值为假时,while语句不执行循环体语句,而转去执行循环结构的下一语句;而do-while语句先执行一次循环体语句,而后转去执行循环结构的下一语句。[课堂设计]上机演示:当i=101时程序运行结果的不同,从而引导学生思考DO—WHILE的执行顺序。⑶不论是while还是do-while语句构成的循环,在循环体中都应有修改循环控制变量值的语句,否则程序会进行无限循环状态。五、for语句的应用1.for语句⑴【一般格式】for(表达式1;表达式2;表达式3)循环体语句;【注意】循环体语句可以是单个语句,也可是复合语句或空语句。三个表达式之间用分号分隔。⑵【流程图及N-S图】表达式1:一般为循环控制变量赋初值的语句。表达式2:循环条件语句。表达式3:循环控制变量变化语句。⑶【执行过程】先计算表达式1的值;再计算表达式2的值,若为真,则执行循环体,最后计算表达式3的值;再次计算表达式2的值,若为真,再执行循环体,再计算表达式3的值;[板书][幻灯片][重点]FOR结构及三个表达式的执行顺序计算表达式1循环体计算表达式3表达式2真假循环体当表达式2为真计算表达式1的值计算表达式3的值直到某次表达式2的值为假循环结束,执行循环的下一语句。⑷【应用】利用for语句“求1+2+3+……+99+100的和”参考程序如下:main(){inti,sum=0;for(i=1;i=100;i++){sum=sum+i;}printf(sum=%d\n,sum);}⑸for循环语句的特殊格式以【for(i=1;i=100;i++)】语句为例①省略表达式1,语句格式为:【for(;表达式2;表达式3)】→②省略表达式2,语句格式为【for(表达式1;;表达式3)】→③省略表达式3,语句格式为:【for(表达式1;表达式2;)】→④省略表达式1及3,语句格式为for(;表达式2;)→[课堂设计]请同学用FOR改写求和程序[重点]for语句的几种特殊格式i=1;for(;i=100;i++)for(i=1;;i++){if(i=100)……}for(i=1;i=100;){……i++;}i=1;for(;i=100;){……i++;}i=1;for(;;){if(i=100)……i++;}⑤省略三个表达式,语句格式为:for(;;)→2.三种循环语句的比较⑴while语句和for语句是属于先测试终止条件的循环语句,故循环体有可能一次也不执行。⑵do—while语句是后测试终止条件的循环语句,循环体至少执行一次。⑶for语句与while语句本质上相近,很容易互换。所有循环语句都是在终止条件为真时才能执行循环体。⑷如果循环次数可以在进入循环语句之前确定,使用for语句较好;在循环次数难以确定时使用while和do—while语句较好。3.例题【例1】从键盘上输入10个数,求出其中的最大值与最小值。参考程序如下main(){inti,x,max,min;scanf(“%d”,&x);max=x;min=x;for(i=2;i=10;i++){scanf(“%d”,&x);if(xmax)max=x;elseif(xmin)min=x;}printf(“max=%dmin=%d\n”,max,min);}【例2】输出100到200之间可以被7整除的数。main(){intk;[难点]循环结构在程序的综合运用.详细讲解。[课堂设计]启发学生思考最大值的求解,被某个数整除的重要算法。for(k=100;i=200;i++){if(k%7==0)printf(%d,k);}}【结语】本节课重点讲解了C语言中重要的循环结构,及三种结构在程序中的应用,它们各有特色。请同学们在今后的编程过程中熟练运用,多多练习。【思考与练习】1、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。2、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如153就是一水仙花数。153=13+53+33小结[幻灯片]展示本课程各章节名称。让学生了解本课程内容框架,做到心里有数。[作业]布置课外作业,下次上课交。八、课后小结通过教学实践,发现本课部分内容稍显琐细,需要进一步改进调整。最后编程部分的讨论很有意义,如果引导得当,有助于发挥学生的能动性,充分启发学生对相关实际问题进行深入的思考。