
NO.5-2《C语言程序设计》教案备注第五讲循环程序设计目1.了解三种循环语句和终止循环语句的使用;2.掌握循环程序设计的方法;要3.能读程序和编写程序;求3小时学时划分组织形式讲授+自学+独立作业+上机实作重1.三种循环语句和终止循环语句使用;点2.程序设计难点[引题】上一次课,我们重点讨论了分之结构的程序设计方法。通过学习我们知道,分支结构的程序设计实质上就是,根据条件表达式的不同取值,通过不同的分支语句,控制程序执行不同的程序块,从而获得不同的处理结果。可以说,它是程序设计中经常使用的结构样式。今天,我们来学习另一种非常重要的程序结构及设计方法,也就是教材中的第五节循环程序设计。3.5循环程序设计一、当型循环结构(while)(一)程序形式、流程图和N-S图1. 形式2.流程图及N-S图while (e)(s;while (e))SF3.说明(1)e:循环条件表达式S:循环体(单个、复合、空语句)(2)执行:e为真执行s,否则结束循环
《C 语言程序设计》教案 NO.5-2 第五讲 循环程序设计 备 注 目 的 要 求 1. 了解三种循环语句和终止循环语句的使用; 2. 掌握循环程序设计的方法; 3. 能读程序和编写程序; 学时划分 3 小时 组织形式 讲授+自学+独立作业+上机实作 重 点 难 点 1. 三种循环语句和终止循环语句使用; 2. 程序设计 [引题]上一次课,我们重点讨论了分之结构的程序设计方法。通过学 习我们知道,分支结构的程序设计实质上就是,根据条件表达式的不 同取值,通过不同的分支语句,控制程序执行不同的程序块,从而获 得不同的处理结果。可以说,它是程序设计中经常使用的结构样式。 今天,我们来学习另一种非常重要的程序结构及设计方法,也就是教 材中的第五节循环程序设计。 3.5 循环程序设计 一、当型循环结构(while) (一)程序形式、流程图和 N-S 图 1.形式 2.流程图及N-S图 while (e) { s; } 3.说明 (1)e:循环条件表达式 s:循环体(单个、复合、空语句) (2)执行:e 为真执行 s,否则结束循环 s while (e) F T s e

NO.5-3第五讲循环程序设计(二)程序设计实例编程计算1+3+5+...+(2n-1)的值,(n-1,2,3....,100)算法:程序 1:程序2:n=1,sum=0mainOmain()while (n<=100)11int n,sum;int n,sum,sum=sum+2*n-1n=1,n=0,n++ sum=0;sum=0;while (n<=100)while (n++<100)sum=sum+(2*n-1);sum=sum+(2*n-1)printf("lnsum=%d",sum);n++;3printf("In sum=%d,sum);(三)注意事项1.花括号的使用循环体为多个语句时应括住,单个语句可以省略2.条件表达式正确书写循环条件表达式使其控制循环次数满足要求二、直到型循环结构(do-while)(一)程序形式、流程图和N-S图1. 形式2.流程图及N-S图doSs;Jwhile (e);while (e)C3.说明(1)e:循环条件表达式s:循环体(单个、复合、空语句)(2)执行:先执行s,再计算e,若为真返回,否则结束循环
第五讲 循环程序设计 NO.5-3 (二)程序设计实例 编程计算 1+3+5+.+(2n-1)的值,(n=1,2,3,.,100) 算法: 程序 1: 程序 2: (三)注意事项 1.花括号的使用 循环体为多个语句时应括住,单个语句可以省略 2.条件表达式 正确书写循环条件表达式使其控制循环次数满足要求 二、直到型循环结构(do-while) (一)程序形式、流程图和 N-S 图 1.形式 2.流程图及N-S图 do { s; }while (e); 3.说明 (1)e:循环条件表达式 s:循环体(单个、复合、空语句) (2)执行:先执行 s,再计算 e,若为真返回,否则结束循环 } printf(“\n sum=%d”,sum); n++; } sum=sum+(2*n-1); { while (n<=100) sum=0; n=1; int n,sum; { main() } printf(“\n sum=%d”,sum); sum=sum+(2*n-1); while (n++<100) sum=0; n=0; int n,sum; { main() n=1,sum=0 while (n<=100) sum=sum+2*n-1 n++ e s T F while (e) s

NO.5-4《C语言程序设计》教案(二)程序设计实例用 do-while 结 构 编 程 计 算 1+3+5+.,+(2n-1)的值 ,(n=1,2, 3....,100)程序为算法为main()n=1,sum=04sum=sum+2*n-1int n,sum,n++n=1;sum=0,while (n<=100)dotsum=sum+(2*n-1);n++; while (n<=100);printf("In sum=%d",sum);3(三)注意事项1.花括号的使用不管循环体为多个还是单个语句都使用花括号括起来,并把while(e)直接跟在其后;2.条件表达式while(e)后面的分号不能省略三、for循环结构(一)程序形式、流程图和N-S图1. 形式2.流程图及N-S图for (el;e2;e3)el(els;Twhile(e2)1sFe3e3
《C 语言程序设计》教案 NO.5-4 (二)程序设计实例 用 do-while结构编程计算 1+3+5+.+(2n-1) 的 值 , (n=1,2,3,.,100) 算法为 程序为 (三)注意事项 1.花括号的使用 不管循环体为多个还是单个语句都使用花括号括起来,并把 while(e)直接跟在其后; 2.条件表达式 while(e)后面的分号不能省略 三、for 循环结构 (一)程序形式、流程图和 N-S 图 1.形式 2.流程图及N-S图 for (e1;e2;e3) { s; } main() n=1,sum=0 while (n<=100) sum=sum+2*n-1 n+ { int n,sum; n=1; sum=0; do { sum=sum+(2*n-1); n++; } while (n<=100); printf(“\n sum=%d”,sum); } + e1 e2 e3 s T F s e3 e1 while(e2)

NO.5-5第五讲循环程序设计3.说明(1)el:初值表达式e2:循环表达式e3修改表达式(2)三个表达式中任何一个均可省略(3)S:循环体(单个、复合、空语句)(4)执行流程①计算el②计算e2,若为真,执行③;若为假,结束循环③执行循环体s④计算表达式e3③重复执行②(二)程序设计实例用for结构编程计算1+3+5+...+(2n-1)的值,(n=1,2,3,...,100)算法为程序为n=1,sum=0main()1while (n<-100)intn,sum,sum=sum+2*n-1sum=0,for (n=1;n<=100;n++)sum=sum+(2*n-1);n++printf(ln sum=%d",sum);3四、三种循环的比较1.for(;;:)结构(1)功能最强,使用最灵活,用得最多;(2)表达式e1和e3可以是逗号表达式,扩充了作用范围;(3)先判断循环条件,后执行循环体;(4)循环变量的初始化在表达式e1中实现:2.while0结构(1)功能较强,使用较多;(2)先判断循环条件,后执行循环体;(3)循环变量的初始化在循环语句之前完成:3.do-while结构(1)功能最弱,使用较少;(2)先执行一次循环体,再判断循环条件;
第五讲 循环程序设计 NO.5-5 3.说明 (1)e1:初值表达式 e2:循环表达式 e3:修改表达式 (2)三个表达式中任何一个均可省略 (3)s:循环体(单个、复合、空语句) (4)执行流程 ① 计算 e1 ② 计算 e2,若为真,执行③;若为假,结束循环 ③ 执行循环体 s ④ 计算表达式 e3 ⑤ 重复执行② (二)程序设计实例 用for结构编程计算 1+3+5+.+(2n-1)的值,(n=1,2,3,.,100) 算法为 程序为 四、三种循环的比较 1.for(;;;)结构 (1)功能最强,使用最灵活,用得最多; (2)表达式 e1 和 e3 可以是逗号表达式,扩充了作用范围; (3)先判断循环条件,后执行循环体; (4)循环变量的初始化在表达式 e1 中实现; 2.while()结构 (1)功能较强,使用较多; (2)先判断循环条件,后执行循环体; (3)循环变量的初始化在循环语句之前完成; 3.do-while结构 (1)功能最弱,使用较少; (2)先执行一次循环体,再判断循环条件; n=1,sum=0 while (n<=100) sum=sum+2*n-1 n main() { int n,sum; sum=0; for(n=1;n<=100;n++) sum=sum+(2*n-1); printf(“\n sum=%d”,sum); } ++

NO.5-6《C语言程序设计》教案五、循环和开关分支的中途退出(一)正规退出#include根据判断表达式为0来控制退出循环mainO(二)非正规退出11.break语句int n,p,iread;(1)功用 sum=0,p=0, iread=1;while (ireadi=0)退出当前循环或switch结构((2)举例printf("enter a integer with O to endin");从键盘输入整数,统计正数和负数scanf("%d",& iread);的个数,当输入为0结束统计if (iread>0) p++;else if (iread<0) n++;else2.continue语句break,(1)功用1只用在循环结构,结束本次循环printf(" p=%d)n n=%d/n,p,n)(2)举例3求输入的100个数中正数的个数及其平均数mainO1int n=0,i;Sum=0,n=0,i=1floatsum=0输入ffor (i=1;i<=100;i++)while(i<=100)1if (f<=0)printf("enter a real number:");continue;scanf("%f,&f);sum+=f,if (f<=0)n++,continue,输出n及aver=sum/nsum+=f,n++,3printf(“ n=%din aver=%fin",n,sum/n);3
《C 语言程序设计》教案 NO.5-6 五、循环和开关分支的中途退出 (一)正规退出 根据判断表达式为 0 来控制退出循环 (二)非正规退出 1.break语句 (1)功用 退出当前循环或 switch 结构 (2)举例 从键盘输入整数,统计正数和负数 的个数,当输入为 0 结束统计 2.continue语句 (1)功用 只用在循环结构,结束本次循环 (2)举例 求输入的 100 个数中正数的个数及 其平均数 #include main() { int n,p,iread; sum=0,p=0, iread=1; while(iread!=0) { printf(“enter a integer with 0 to end\n”); scanf(“%d”,& iread); if (iread>0) p++; else if (iread<0) n++; else break; } printf(“ p=%d\n n=%d\n”,p,n); } Sum=0,n=0,i=1 输入 f while(i<=100) if (f<=0) continue; sum+=f; n++; 输出 n 及 aver=sum/n main() { int n=0,i; float sum=0; for (i=1;i<=100;i++) { printf(“enter a real number:”); scanf(“%f”,& f); if (f<=0) continue; sum+=f; n++; } printf(“ n=%d\n aver=%f\n”,n,sum/n); }

NO.5-7第五讲循环程序设计六、循环结构的嵌套(一)注意事项1.被嵌套的循环一定是一个完整的结构2.两个循环结构不能交叉一外层循环一外层循环-一内层循环内层循环(二)程序举例#include教材P100思考与练习3main1程序的运行结果是:10int i.j,s,m,for (i=1;i<3;i++)1s++;for (i=1:j<5;j++)(if (i%2)continue,elsem++;0s=++s+mprintf(%d In",s);号七、结构化程序设计举例1.教材P104练习12.2.教材P104练习13.3.教材P104练习15
第五讲 循环程序设计 NO.5-7 六、循环结构的嵌套 (一)注意事项 1.被嵌套的循环一定是一个完整的结构 2.两个循环结构不能交叉 (二)程序举例 教材P100 思考与练习 3 程序的运行结果是:10 七、结构化程序设计举例 1.教材 P104 练习 12. 2.教材 P104 练习 13. 3.教材 P104 练习 15. 外层循环 内层循环 外层循环 内层循环 #include main() { int i,j,s,m; for (i=1;i<3;i++) { s++; for (j=1;j<5;j++) { if (j%2) continue; else m++; } s=++s+m; } printf(“%d \n”,s); }

NO.5-8《C语言程序设计》教案练习13.练习12.maino#include1main(int x,y,z,max,printf("n please enter x,y,z:")char ch;scanf("%d,%d,%d",&x,&y,&z)ch=getcharO;switch(ch)printf(In x=%d,y=%d,z=%d",x,y,z)tif (x<y)(max-y,y=x;x=max,)case"A:printf("90-100");break;if (y<z)(max=z,z-y,y=max,)case‘B":printf("ln %d %d %d",x,y,z);printf("80-90");break1caseC:printf("70-80");break;case'D':练习15.(方法1)printf("60-70");break;main()case"E':(执行结果为:printf("0-50");break;S=338350int i=l;case"AZ":float s=0;break;,while(<=100)注意在定义变量default:( s+=i*i, i++:)时注意取值范围printf("Bad!");break,printf("In s=%f,s)若:int s=0;93结果为:3S=10670练习15.(方法3)练习15.(方法2)mainOmain()执行结果为:执行结果为:11s=338350int i,S=338350int i=l;float s=0;,float s=0for (i=1;i<=100;i++)dos+=i*i;1printf("n s= %f",s);s+=i*i,1i++;}while(i<=100);printf("In s=%f",s),1
《C 语言程序设计》教案 NO.5-8 练习 12. main() { int x,y,z,max; printf(“\n please enter x,y,z:”); scanf(“%d,%d,%d”,&x,&y,&z); printf(\n x=%d,y=%d,z=%d”,x,y,z); if (x main() { char ch; ch=getchar(); switch(ch) { case ‘A’: printf(“90-100”);break; case ‘B’: printf(“80-90”);break; case ‘C’: printf(“70-80”);break; case ‘D’: printf(“60-70”);break; case ‘E’: printf(“0-50”);break; case ‘^Z’: break; default: printf(“Bad!”);break; } } 练习 15.(方法 1) main() { int i=1; float s=0; while(i<=100) { s+=i*i; i++;} printf(“\n s= %f”,s); } 执行结果为: s=338350 注意在定义变量 时注意取值范围 若: int s=0; 结果为: s=10670 练习 15.(方法 3) main() { int i; float s=0; for (i=1;i<=100;i++) s+=i*i; printf(“\n s= %f”,s); } 练习 15.(方法 2) main() { int i=1; float s=0; do { s+=i*i; i++; }while(i<=100); printf(“\n s= %f”,s); } 执行结果为: s=338350 执行结果为: s=338350

NO.5-9第五讲循环程序设计少结1.三种循环结构(1)while结构(2)do-while结构(3)for结构2.终止循环和开关分支(1)break语句(2)continue语句独立作业题1.三种循环语句的主要区别是什么?2.break语句和continue语句的主要区别是什么?3.填空题:教材P100思考与练习题5.64.选择题:教材P100思考与练习题8.(1)(3)5.读程序练习:教材P100思考与练习题2.3.4.6.编程练习:教材P100思考与练习题15.16上机与实作分别将独立作业题中的5.6.中的程序输入计算机,并把运行的结果同自己事先的结果比较
第五讲 循环程序设计 NO.5-9 小 结 1.三种循环结构 (1)while 结构 (2)do-while 结构 (3)for 结构 2.终止循环和开关分支 (1)break 语句 (2)continue 语句 独立作业题 1.三种循环语句的主要区别是什么? 2. break 语句和 continue 语句的主要区别是什么? 3. 填空题:教材 P100 思考与练习题 5.6. 4. 选择题:教材 P100 思考与练习题 8.(1)(3) 5. 读程序练习:教材 P100 思考与练习题 2.3.4. 6. 编程练习:教材 P100 思考与练习题 15.16. 上机与实作 分别将独立作业题中的 5.6.中的程序输入计算机,并把运行的结果 同自己事先的结果比较