循环结构程序设计.docx
- 文档编号:5037227
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:13
- 大小:22.38KB
循环结构程序设计.docx
《循环结构程序设计.docx》由会员分享,可在线阅读,更多相关《循环结构程序设计.docx(13页珍藏版)》请在冰豆网上搜索。
循环结构程序设计
第五章循环结构程序设计
【章节计划】
【目的要求】1.理解循环语句结构及概述,
2.掌握循环语句for语句While语句及Do-while语句的功能和区别。
3.通过循环结构实例应用,理解循环结构语句for、while和do...while的区别与格式
4.break语句和continue语句的格式及用法
【教学重点】1.for语句的功能及格式和应用。
2.循环控制语句中的中断循环break或结束循环语句continue。
【教学难点】1.循环语句for语句While语句及Do-while语句的功能和应用。
2.break语句和continue语句的格式及用法
【教学内容】
5.1循环语句概述
5.2for语句和while语句
5.3直到型循环do-while语句
5.4break语句与continue语句
5.5循环应用举例
5.6应用举例
【学时分配】§5-1~§5-32学时
§5-4~§5-62学时
实验2学时
习题2学时
共计:
8学时
第5章循环结构程序设计(第十四讲)
【授课日期】【周次】【星期】
【课题】:
循环结构程序设计
(一)
【目的与要求】:
1.理解循环语句结构及概述,
2.掌握循环语句for语句
3.掌握While语句Do-while语句的功能和区别
【教学重点】for语句的功能及格式和应用
【教学难点】掌握While语句Do-while语句的功能和区别
【教学方法】:
引导讲解式
【教具】:
电子课件、turboc2.0
【学时分配】:
两学时
讲授90分钟
小结10分钟
【课型】:
理论教学
【参考资料】谭浩强主编《C程序设计》,清华大学出版社,1999
徐建民主编《C语言程序设计》,电子工业出版社,2002
【后记】
【审批】
【教学内容】
5.1循环语句概述
一、引入:
求1~100的累计和。
根据已有的知识,可以用“1+2+……+100”来求解,但显然很繁琐。
现在换个思路来考虑:
首先设置一个累计器sum,其初值为0,利用sum+=n来计算(n依次取1、2、……、100),只要解决以下3个问题即可:
(1)将n的初值置为1;
(2)每执行1次“sum+=n”后,n增1;
(3)当n增到101时,停止计算。
此时,sum的值就是1~100的累计和。
根据已有的知识,单独实现每一步都不难。
但是,由于需要经常使用这种重复计算结构(称为循环结构),C语言提供了3条循环语句来实现,以简化、并规范循环结构程序设计。
二、在C语言中,可用以下语句实现循环:
(1)用for语句。
(2)用do-while语句。
(3)用while语句。
(4)用goto语句和if语句构成循环。
使用goto语句实现求解1~100累计和的程序可以如下:
main()
{intn=1,sum=0;
loop:
sum+=n;n++;
if(n<=100)gotoloop;
printf(“sum=%d\n”,sum);
}
其中“loop:
”为语句标号(格式:
标号:
语句行),其命名遵循标识符命名规则。
goto语句格式:
goto标号,功能为:
使系统转向标号所在的语句行执行。
注意:
结构化程序设计方法,主张限制使用goto语句。
因为滥用goto语句,将会导致程序结构无规律、可读性差。
另外,从功能上说,for语句可完全代替当型循环语句while,所以该语句也不是必需的。
5.2for语句和while语句
一、for语句
1.for语句的一般格式
for([变量赋初值];[循环继续条件];[循环变量增值])
{循环体语句组;}
2.for语句的执行过程
(1)求解“变量赋初值”表达式。
(2)求解“循环继续条件”表达式。
如果其值非0,执行(3);否则,转至(4)。
(3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向
(2)。
(4)执行for语句的下一条语句。
3.说明
(1)“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,甚至全部缺省,但其间的分号不能省略。
(2)当循环体语句组仅由一条语句构成时,可以不使用复合语句形式,如上例所示。
(3)“循环变量赋初值”表达式,既可以是给循环变量赋初值的赋值表达式,也可以是与此无关的其它表达式(如逗号表达式)。
例如,for(sum=0;i<=100;i++)sum+=i;
for(sum=0,i=1;i<=100;i++)sum+=i;
(4)“循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达式外,也允许是数值(或字符)表达式。
在3条循环语句中,for语句最为灵活,不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。
4、程序举例
[案例5.1]求1~100的累计和。
/*案例代码文件名:
AL5_1.C*/
/*程序功能:
求1~100的累计和*/
main()
{inti,sum=0;/*将累加器sum初始化为0*/
for(i=1;i<=100;i++)sum+=i;/*实现累加*/
printf("sum=%d\n",sum);
}
程序运行情况如下:
sum=5050
[案例5.2]求n的阶乘n!
(n!
=1*2*……*n)。
/*案例代码文件名:
AL5_2.C*/
/*程序功能:
求n!
*/
main()
{inti,n;
longfact=1;/*将累乘器fact初始化为1*/
printf(“Inputn:
”);scanf(“%d”,&n);
for(i=1;i<=n;i++)fact*=i;/*实现累乘*/
printf("%d!
=%ld\n",n,fact);
}
程序运行情况如下:
Inputn:
5↙
5!
=120
二.while语句
1.一般格式
while(循环继续条件)
{循环体语句组;}
2.执行过程
1)求解“循环继续条件”表达式。
如果其值为非0,转2);否则转3)。
2)执行循环体语句组,然后转1)。
3)执行while语句的下一条。
显然,while循环是for循环的一种简化形式(缺省“变量赋初值”和“循环变量增值”表达式)。
3.程序举例
[案例5.3]用while语句求1~100的累计和。
/*案例代码文件名:
AL5_3.C*/
/*程序功能:
求1~100的累计和*/
main()
{inti=1,sum=0;/*初始化循环控制变量i和累计器sum*/
while(i<=100)
{sum+=i;/*实现累加*/
i++;/*循环控制变量i增1*/
}
printf(“sum=%d\n”,sum);
}
程序运行情况如下:
sum=5050
4.循环嵌套
(1)循环语句的循环体内,又包含另一个完整的循环结构,称为循环的嵌套。
循环嵌套的概念,对所有高级语言都是一样的。
(2)for语句和while语句允许嵌套,do-while语句也不例外。
5.3直到型循环do-while语句
1.一般格式
do
{循环体语句组;}
while(循环继续条件);/*本行的分号不能缺省*/
当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
2.执行过程
(1)执行循环体语句组。
(2)计算“循环继续条件”表达式。
如果“循环继续条件”表达式的值为非0(真),则转向
(1)继续执行;否则,转向(3)。
(3)执行do-while的下一条语句。
do-while循环语句的特点是:
先执行循环体语句组,然后再判断循环条件。
do-while语句比较适用于处理:
不论条件是否成立,先执行1次循环体语句组的情况。
除此之外,do-while语句能实现的,for语句也能实现,而且更简洁。
3.程序举例
[案例5.4]用do-while语句求解1~100的累计和。
/*案例代码文件名:
AL5_4.C*/
/*程序功能:
求1~100的累计和*/
main()
{inti=1,sum=0;/*定义并初始化循环控制变量,以及累计器*/
do
{sum+=i;/*累加*/
i++;
}
while(i<=100);/*循环继续条件:
i<=100*/
printf(“sum=%d\n”,sum);
}
【授课小结】
本节主要介绍了循环语句结构及概述,要求掌握循环语句for语句While语句及Do-while语句的功能和区别。
【练习与作业】
1.教材P75习题5.1,5.2,5.3,5.4
2.见习题集第五章。
第5章循环结构程序设计(第十五讲)
【授课日期】【周次】【星期】
【课题】:
循环结构程序设计
(二)
【目的与要求】:
1.理解循环控制语句中的中断循环或结束循环语句,
2.掌握break语句和continue语句的格式及用法。
【教学重点】break语句和continue语句的格式及用法
【教学难点】continue语句的格式及用法
【教学方法】:
引导讲解式
【教具】:
电子课件、turboc2.0
【学时分配】:
两学时
讲授90分钟
小结10分钟
【课型】:
理论教学
【参考资料】谭浩强主编《C程序设计》,清华大学出版社,1999
徐建民主编《C语言程序设计》,电子工业出版社,2002
【后记】
【审批】
【教学内容】
5.4break语句与continue语句
一、break语句与continue语句格式
1.一般格式:
break;
continue;
2.功能
(1)break:
强行结束循环,转向执行循环语句的下一条语句。
(2)continue:
对于for循环,跳过循环体其余语句,转向循环变量增量表达式的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。
3.break和continue语句对循环控制的影响如图5-4所示。
4.说明
(1)break能用于循环语句和switch语句中,continue只能用于循环语句中。
(2)循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。
二、应用举例
[例5.5]求Fibonacci数列的前40个数。
该数列的生成方法为:
F1=1,F2=1,Fn=Fn-1+Fn-2(n>=3),即从第3个数开始,每个数等于前2个数之和。
参考源程序如下:
/*案例代码文件名:
AL5_5.C*/
main()
{longintf1=1,f2=1;/*定义并初始化数列的头2个数*/
inti=1;/*定义并初始化循环控制变量i*/
for(;i<=20;i++)/*1组2个,20组40个数*/
{printf(“%15ld%15ld”,f1,f2);/*输出当前的2个数*/
if(i%2==0)printf(“\n”);/*输出2次(4个数),换行*/
f1+=f2;f2+=f1;/*计算下2个数*/
}
}
[例5.6]输出10~100之间的全部素数。
所谓素数n是指,除1和n之外,不能被2~(n-1)之间的任何整数整除。
算法设计要点:
(1)显然,只要设计出判断某数n是否是素数的算法,外面再套一个for循环即可。
(2)判断某数n是否是素数的算法:
根据素数的定义,用2~(n-1)之间的每一个数去整除n,如果都不能被整除,则表示该数是一个素数。
(3)判断一个数是否能被另一个数整除,可通过判断它们整除的余数是否为0来实现。
参考源程序如下:
main()
{inti=11,j,counter=0;
for(;i<=100;i+=2)/*外循环:
为内循环提供一个整数i*/
{for(j=2;j<=i-1;j++)/*内循环:
判断整数i是否是素数*/
if(i%j==0)/*i不是素数*/
break;/*强行结束内循环,执行下面的if语句*/
if(counter%10==0)/*每输出10个数换一行*/
printf(“\n”);
if(j>=i)/*整数i是素数:
输出,计数器加1*/
{printf(“%6d”,i);
counter++;
}
}
}
【授课小结】
本节主要介绍了在C语言中循环结构语句for、while和do...while的用法和格式。
1.for语句
/*功能*/
for(变量初始化;循环条件;变量增值)/*循环继续条件的含义*/
{……}
2.while语句
/*功能说明*/
while(循环条件)/*循环继续条件的含义*/
{……}
3.do...while语句
/*功能说明*/
do{……}
while(循环条件);/*循环继续条件的含义*/
如果循环嵌套,还应说明每层循环各控制什么。
【练习与作业】
1.见教材P75习题5.5,5.6,5.7,5.8,5.9,5.10
2.见习题集第五章。
第5章 循环结构程序设计(第十六讲)
【授课日期】【周次】【星期】
【课题】:
循环结构程序设计上机实践
【目的与要求】:
1.进一步掌握TurboC集成环境的菜单操作
2.通过循环结构实例应用,理解循环结构语句for、while和do...while的区别与格式
【教学重点】掌握for、while和do...while语句
【教学难点】掌握for、while和do...while语句
【教学方法】:
讲练结合式
【教具】:
turboc2.0
【学时分配】:
两学时
讲授30分钟
上机60分钟
小结10分钟
【课型】:
实践教学
【参考资料】谭浩强主编《C程序设计》,清华大学出版社,1999
徐建民主编《C语言程序设计》,电子工业出版社,2002
【后记】
【审批】
【教学内容】
一、实验目的
1.学习循环语句for、while和do-while语句的使用方法。
2.学习用循环语句实现各种算法,例如穷举法、迭代法等。
3.进一步熟悉TC集成环境的使用方法
二、实验内容
1.下列程序计算SUM的值。
调试该程序,使之能正确地计算SUM。
写出调试过程。
计算公式如下:
main()
{intt,s,i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
t=1/i;
s=s+t;
printf("s=%f\n",s);
}
在调试过程中,用单步执行的方法观察变量s和t的值的变化,找到程序中存在的问题,加以改正。
2.下面程序的功能是计算n!
。
main()
{inti,n,s=1;
printf("Pleaseentern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d!
=%d",n,s);
}
首次运行先输入n=4,输出结果为4!
=24,这时正确的。
为了检验程序的正确性,再输入n=10,输出为10!
=24320,这显然是错误的。
为了找到程序的错误,可以通过单步执行来观察变量的变化。
分析产生这种现象的原因,把程序改正过来,再用n=20进行实验,分析所得到的结果。
3.北京市体育彩票采用整数1、2、3、……、36表示36种体育运动,一张彩票可选择7种运动。
编写程序,选择一张彩票的号码,使得这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1、2、3、4、5、6。
如果第一个号码是1,则后续号码应是2、4、7、11、16、22。
4.编写程序实现输入整数n,输出如下所示由数字组成的菱形。
(图中n=5)
1
121
12321
1234321
123454321
1234321
12321
121
1
三、实验要求
1.复习for、while、do-while语句和continue、break语句。
2.在程序调试中,要实现准备充分的测试用例。
3.编写程序,运行程序并记录运行结果。
注意程序的书写格式。
4.将源程序、目标文件、可执行文件和实验报告存在软盘上。
四、选做题
已知2001年1月1日是星期一,编写程序,在屏幕上输出2000年的年历。
关于闰年的计算方法:
如果某年的年号能被400除尽,或能被4除尽但不能被100除尽,则这一年就是闰年。
【授课小结】
本节是上机实践课,通过实例学习循环语句for、while和do-while语句的使用方法,学习用循环语句实现各种算法,例如穷举法、迭代法等,进一步熟悉TC集成环境的使用方法。
【练习与作业】
见习题册第五章。
第5章循环结构程序设计(第十七讲)
【授课日期】【周次】【星期】
【课题】:
循环结构程序设计习题课
【目的与要求】:
1.进一步掌握TurboC集成环境的菜单操作
2.通过循环结构实例应用,进一步理解循环结构语句for、while和do...while的区别与格式
【教学重点】掌握for、while和do...while语句
【教学难点】掌握for、while和do...while语句
【教学方法】:
讲练结合式
【教具】:
turboc2.0
【学时分配】:
两学时
讲授30分钟
上机60分钟
小结10分钟
【课型】:
实践教学
【参考资料】谭浩强主编《C程序设计》,清华大学出版社,1999
徐建民主编《C语言程序设计》,电子工业出版社,2002
【后记】
【审批】
【教学内容】
一、实验目的
1.学习循环语句for、while和do-while语句的使用方法。
2.学习用循环语句实现各种算法,例如穷举法、迭代法等。
3.进一步熟悉TC集成环境的使用方法
二、实验内容
5.1编一个程序,求1~100之间所有偶数之和。
5.2编一个程序,求1~20之间所有3的倍数之和。
5.3编一个程序,求1!
+2!
+3!
+……+10!
5.4编一个程序,求sum=d+dd+ddd+……+dd…d(d为1~9的数字).从键盘上输入d和n。
5.5输入所有的“水仙花数”。
所谓水仙花树是指一个三位十进制数,该数的各位数字立方之和,等于该数本身。
5.7从键盘上输入任意多个正整数(以数值“0”作为结束标志),统计数据个数、累计和、平均值,找出最大值和最小值。
5.8用以下无穷级数计算圆周率
5.9给出一个正整数,编程实现:
从地位到高位顺序输出每位数字,以及位数。
5.10一个球从10米高度落下并反弹,且每次反弹的高度为下落高度的一半,问第4次落地时共经过多少米?
第4次反弹的高度是多少?
5.11猴子吃桃问题。
第1天摘下桃子若干,当即吃掉一半,有多吃一半;第2天将剩余的部分吃掉一半还多一个,以此类推,到第6天只剩余1个。
问第1天共摘了多少桃子?
5.12对break的批评,在于它是非结构话的语句(结构化循环语句只能有1个出口,而break语句的使用导致有多个出口)。
实际上,可采取某种结构化方法,替换break语句。
请将例5.6改成结构化程序。
【授课小结】
本节是习题实践课,通过实例学习循环语句for、while和do-while语句的使用方法,学习用循环语句实现各种算法,例如穷举法、迭代法等。
【练习与作业】
1.教材P75习题5.7
2.见习题册第五章。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 程序设计