循环结构程序设计.docx

上传人:b****5 文档编号:5037227 上传时间:2022-12-12 格式:DOCX 页数:13 大小:22.38KB
下载 相关 举报
循环结构程序设计.docx_第1页
第1页 / 共13页
循环结构程序设计.docx_第2页
第2页 / 共13页
循环结构程序设计.docx_第3页
第3页 / 共13页
循环结构程序设计.docx_第4页
第4页 / 共13页
循环结构程序设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

循环结构程序设计.docx

《循环结构程序设计.docx》由会员分享,可在线阅读,更多相关《循环结构程序设计.docx(13页珍藏版)》请在冰豆网上搜索。

循环结构程序设计.docx

循环结构程序设计

第五章循环结构程序设计

【章节计划】

【目的要求】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.见习题册第五章。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1