C语言程序设计--循环嵌套_第1页
C语言程序设计--循环嵌套_第2页
C语言程序设计--循环嵌套_第3页
C语言程序设计--循环嵌套_第4页
C语言程序设计--循环嵌套_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、语言程序设计语言程序设计L制作数字电子钟制作数字电子钟循环嵌套循环嵌套C语言程序设计教程(第二版)L一、任务分析一、任务分析1、目标:、目标:制作实际生活中常见的显示制作实际生活中常见的显示“时、分、时、分、秒秒”的的 “数字电子钟数字电子钟”。如:。如:10:11:56任务:制作一个数字电子钟 2、程序程序演示演示3、所需知识:、所需知识:顺序结构、选择结构、循环结构程序设计。顺序结构、选择结构、循环结构程序设计。C语言程序设计教程(第二版)L二、知识回顾二、知识回顾三种循环语句三种循环语句1、while循环循环2、do while循环循环3、for循环循环任务:制作一个数字电子钟任务:制作

2、一个数字电子钟 C语言程序设计教程(第二版)L循环结构有循环结构有“当型当型”和和“直到型直到型”两种。两种。1 1、whilewhile循环和循环和forfor循环结构都是循环结构都是“当型当型”循循环(先判断,后循环),也就是说先判断条件满环(先判断,后循环),也就是说先判断条件满足与否,决定是否继续循环,如果一开始条件就足与否,决定是否继续循环,如果一开始条件就不成立,则循环一次也不被执行。不成立,则循环一次也不被执行。2 2、do whiledo while是是“直到型直到型”循环(先循环,后循环(先循环,后判断)。不管循环条件满足与否,判断)。不管循环条件满足与否,do whiled

3、o while循环循环中的循环体至少被执行一次。中的循环体至少被执行一次。 二、知识回顾二、知识回顾任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L二、知识回顾二、知识回顾在屏幕上显示数字在屏幕上显示数字059的变化的变化for语语句的实现如下:句的实现如下: for(s=0;s=59;s+) printf(%2d,s); 程序程序演示演示任务一:制作一个数字电子钟任务一:制作一个数字电子钟 3 3、forfor循环结构是循环结构是C C语言中功能最强大、使语言中功能最强大、使用最多的循环语句。使用灵活,形式多样。用最多的循环语句。使用灵活,形式多样。C语言程序

4、设计教程(第二版)L第4章 循环结构程序设计二、知识回顾二、知识回顾:C语言程序设计教程(第二版)L存在两个问题:存在两个问题:1、数字、数字“0-59”以滚动卷屏方式显示。以滚动卷屏方式显示。2、显示速度太快,要能以实际一秒、显示速度太快,要能以实际一秒时间显示一个数。时间显示一个数。三、导入新课三、导入新课任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L第一个问题的解决办法,可以使用第一个问题的解决办法,可以使用gotoxy(x,y)函数定位数字显示位置,其函数定位数字显示位置,其中中x为屏幕列号、为屏幕列号、y为屏幕行号。为屏幕行号。也可以在每显示一次数字

5、后调用清屏也可以在每显示一次数字后调用清屏函数函数clrscr()(或(或system(“cls”);)。clrscr()、gotoxy()两个函数都包含两个函数都包含在在conio.h中,所以要在程序开头使用文中,所以要在程序开头使用文件包含命令将它们包含进来:件包含命令将它们包含进来: #include “conio.h三、导入新课三、导入新课任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L程序如下:程序如下:#include Conio.hint main(void) int s; for(s=0;s=59;s+) gotoxy(35,12); print

6、f(n%2d,s); getch(); return 0;三、导入新课三、导入新课任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L第二个问题,是由于计算机的运行速度很第二个问题,是由于计算机的运行速度很快,每秒的显示时间要比实际生活中的一秒时快,每秒的显示时间要比实际生活中的一秒时间要短得多。因此,需要在程序中每显示一秒间要短得多。因此,需要在程序中每显示一秒后都设置一个时间延迟,时间延迟用方法空循后都设置一个时间延迟,时间延迟用方法空循环结构实现,它的位置在循环内屏幕每显示一环结构实现,它的位置在循环内屏幕每显示一个数值后。个数值后。for(s=0;s=59;

7、s+)printf(%2d,s);for (i=1;i=200000000;i+); 这就是一个循环嵌套(二层)结构。这就是一个循环嵌套(二层)结构。三、导入新课三、导入新课任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L程序如下:程序如下:#include “conio.hint main(void) int s; long i; for(s=0;s=59;s+) gotoxy(35,12); printf(%2d,s); for (i=1;i=200000000;i+); getch(); return 0;三、导入新课三、导入新课任务:制作一个数字电子钟任

8、务:制作一个数字电子钟 C语言程序设计教程(第二版)L第4章 循环结构程序设计三、导入新课三、导入新课程序程序演示演示C语言程序设计教程(第二版)L实训环境:实训环境:Win-TC或或TC注意:注意:1)调试程序时要注意观察程序出错情况;)调试程序时要注意观察程序出错情况; 2)200000000是一个参考值,数据改为是一个参考值,数据改为100000000后再次运行程序,观察运行结果;根后再次运行程序,观察运行结果;根据计算机运行速度调整循环变量据计算机运行速度调整循环变量i的终值,尽量与的终值,尽量与实际运转时间一致。实际运转时间一致。上机实训上机实训1:上机编辑源程序,模拟秒的变化,在屏

9、上机编辑源程序,模拟秒的变化,在屏幕固定位置显示数字幕固定位置显示数字059的变化过程。调试的变化过程。调试运行程序。运行程序。任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L本节课知识点:本节课知识点:循环嵌套多种循环循环嵌套多种循环是本课程重点,也是难点。是本课程重点,也是难点。三、导入新课三、导入新课任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L一个循环体内又包含另一个完整的循环结构一个循环体内又包含另一个完整的循环结构称为循环嵌套,而包含多层循环的循环结构称为称为循环嵌套,而包含多层循环的循环结构称为多重循环。多重循环。

10、whilewhile、dodo while while和和forfor三种循环都可三种循环都可以进行嵌套。注意,循环嵌套只能是包含关系,以进行嵌套。注意,循环嵌套只能是包含关系,不能发生交叉。不能发生交叉。四、四、循环嵌套循环嵌套概念概念任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L五、算法分析五、算法分析1 1、变量设置、变量设置 设小时变量为设小时变量为h h、分钟变量为分钟变量为m m、秒秒变量为变量为s s,因为这些变量的数据值均为因为这些变量的数据值均为小于小于6060的整数,所以定义它们为整型。的整数,所以定义它们为整型。用于延时控制的变量数据值较

11、大,用于延时控制的变量数据值较大,超出整型整形范围,所以变量超出整型整形范围,所以变量i i定义为定义为长整型。长整型。任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L五、算法分析五、算法分析2 2、程序结构、程序结构 “数字电子钟数字电子钟”是一个典型的循环嵌套是一个典型的循环嵌套问题,先考虑只有分、秒的时钟。最里层的问题,先考虑只有分、秒的时钟。最里层的循环用于延时,中间层循环控制秒从循环用于延时,中间层循环控制秒从0 05959的变化,外层循环控制分钟从的变化,外层循环控制分钟从0 05959的变化的变化。嵌套结构如下:。嵌套结构如下:for(mfor(m

12、=0;m=59;m+)=0;m=59;m+)for(sfor(s=0;s=59;s+)=0;s=59;s+) printf(%2d:%2d, printf(%2d:%2d, m,sm,s););for (i=1;i=200000000;i+);for (i=1;i=200000000;i+); 任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L五、算法分析五、算法分析再考虑小时从再考虑小时从0 02323的变化情形,最外的变化情形,最外层再套上一个循环,控制小时从层再套上一个循环,控制小时从0 02323。则。则四层嵌套结构如下:四层嵌套结构如下:for (h=0

13、;h=23;h+)for (h=0;h=23;h+)for(mfor(m=0;m=59;m+)=0;m=59;m+)for(sfor(s=0;s=59;s+)=0;s=59;s+) printf(n%2d:%2d:%2d,h,m,s); printf(n%2d:%2d:%2d,h,m,s);for (i=1;i=200000000;i+);for (i=1;i=200000000;i+); 任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)Lmain() int h,m,s;long i;for (h=0;h=23;h+) for(m=0;m=59;m+)for(s

14、=0;s=59;s+) gotoxy(35,12); printf(n%2d:%2d:%2d,h,m,s); for (i=1;i=200000000;i+); 六、六、源程序源程序任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L上机实训上机实训2:1)调试程序时要注意观察程序运行调试程序时要注意观察程序运行情况,再次调整空循环变量情况,再次调整空循环变量i的终值,尽的终值,尽量与实际运转时间一致。计算机运行速量与实际运转时间一致。计算机运行速度越快,则这个数值越大。度越快,则这个数值越大。2)请将变量)请将变量i类型修改为整形后运类型修改为整形后运行程序,观察

15、运行结果。行程序,观察运行结果。任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L前面的程序每次运行都从前面的程序每次运行都从0 0点点0 0分分0 0秒秒开始,不能从当前实际时间开始运行。开始,不能从当前实际时间开始运行。解决问题的办法可以在程序第一次解决问题的办法可以在程序第一次循环开始时输入一次当前实际时间。为循环开始时输入一次当前实际时间。为了只在开始运行时设置一次初始时间,了只在开始运行时设置一次初始时间,可以引入一个逻辑变量可以引入一个逻辑变量firstfirst,其初始值,其初始值为为0 0 ,输入初始时间后,将其值置为非,输入初始时间后,将其值置为

16、非0 0。在后面程序运行中,通过。在后面程序运行中,通过ifif语句控制语句控制不再需要输入初始时间。不再需要输入初始时间。七、七、源程序提高与扩展之一源程序提高与扩展之一任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)Lfor(s=0;s=59;s+) if (first=0) printf(n输入当前时间输入当前时间:); scanf(%d:%d:%d,&h,&m,&s); first=2; else gotoxy(35,12);printf(%2d:%2d:%2d,h,m,s); for (i=1;i=200000000;i+); 七

17、、七、源程序提高与扩展之一源程序提高与扩展之一任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L完整程序如下:完整程序如下: # #include include main() main() intint h,m,s,firsth,m,s,first=0;long i;=0;long i; for (h=0;h=23;h+)for (h=0;h=23;h+) for(mfor(m=0;m=59;m+)=0;m=59;m+) for(sfor(s=0;s=59;s+)=0;s=59;s+) if (first=0) if (first=0) printf(nprin

18、tf(n Enter Current Enter Current Time,PleaseTime,Please:);:); scanf(%d:%d:%d,&h,&m,&sscanf(%d:%d:%d,&h,&m,&s); first=2;); first=2; elseelse gotoxy(35,12);printf(%2d:%2d:%2d,h,m,s); gotoxy(35,12);printf(%2d:%2d:%2d,h,m,s); for (i=1;i=200000000;i+); for (i=1;i=200000000;i+); 任务

19、:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L现在给同学们提供一个存在几个小现在给同学们提供一个存在几个小问题的本任务源代码(问题的本任务源代码(time .c),请调),请调试并找出错误后,运行本程序。试并找出错误后,运行本程序。说明:说明:v本程序需运行24小时才能结束,如果要停止程序运行,可以按Ctrl-C或连续按两次Ctrl-Break强制中断程序运行。八、上机实训八、上机实训3任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L 本程序只能运行本程序只能运行2424小时,请同学们将小时,请同学们将程序进一步改进,使它能显示年、

20、月、日程序进一步改进,使它能显示年、月、日、星期、时、分、秒等数据的电子钟。、星期、时、分、秒等数据的电子钟。 九、九、源程序提高与扩展之二源程序提高与扩展之二思考和作业思考和作业任务:制作一个数字电子钟任务:制作一个数字电子钟 C语言程序设计教程(第二版)L “九九乘法表九九乘法表”是一个典型的循环嵌套是一个典型的循环嵌套问题,外循环变量问题,外循环变量i控制行的变化,共控制行的变化,共9行,行,所以外循环需循环所以外循环需循环9次。由于每行有次。由于每行有9次乘次乘法运算,所以外循环每执行一次,内循环每法运算,所以外循环每执行一次,内循环每次都是用次都是用i乘以乘以19,即内循环每行也都需

21、,即内循环每行也都需要执行要执行9次。次。 练习:练习:输出输出“九九乘法表九九乘法表” 任务分析任务分析1、任务目标:、任务目标:编程输出编程输出 “九九乘法表九九乘法表”。2、程序程序演示演示C语言程序设计教程(第二版)L练习:练习:输出输出“九九乘法表九九乘法表”C语言程序设计教程(第二版)L程序如下:程序如下: main() int i,j; for (i=1;i=9;i+) for(j=1;j=9;j+) printf(%1d*%1d=%2d ,j,i,i*j); printf(n); 练习:输出练习:输出“九九乘法表九九乘法表”C语言程序设计教程(第二版)L 内层循环执行的次数等于

22、该循环嵌套结构中每一层循环次数的乘积。本例外循环循环9次,内循环也为9次,则内循环执行总次数为99=81次。思考:思考:本程序输出结果为矩形,其中近一半的计算和显示是重复。请同学们修改程序,实现以三角形形式输出结果,提高算法效率。输出形式如下:1*1= 11*2= 2 2*2= 41*3= 3 2*3= 6 3*3= 91*4= 4 2*4= 8 3*4=12 4*4=161*5= 5 2*5=10 3*5=15 4*5=20 5*5=251*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*

23、7=42 7*7=491*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 练习:输出练习:输出“九九乘法表九九乘法表”C语言程序设计教程(第二版)L编写程序,以三角形形式输出编写程序,以三角形形式输出“九九九乘法表九乘法表” ,并上机调试通过。,并上机调试通过。上机实训上机实训4练习:输出练习:输出“九九乘法表九九乘法表”C语言程序设计教程(第二版)L小结 1 1、循环嵌套(多种循环),它是本、循环嵌套(多种循环),它是本课程重点,也是难点。课程重点,也是难点。2 2、多重循环中,外循环变化慢,内、多重循环中,外循环变化慢,内循环变化快,外循环一次,内循环就要循循环变化快,外循环一次,内循环就要循环环n n次。次。如秒变化如秒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论