C语言程序设计-循环嵌套
《C语言程序设计》 Lizq98@xzcat.edu.cn 任务:制作一个数字电子钟 一、任务分析 1、目标: 制作实际生活中常见的显示“时、分、秒”的 “数字电子钟”。如: 10:11:56 任务:制作一个数字电子钟 二、知识回顾 任务:制作一个数字电子钟 任务一:制作一个数字电子钟 在屏幕上显示数字0-59的变化for语句的实现如下: …… for(s=0;s<=59;s++) printf("\%2d",s); …… 第4章 循环结构程序设计 任务:制作一个数字电子钟 存在两个问题: 1、数字“0-59”以滚动卷屏方式显示。 2、显示速度太快,要能以实际一秒时间显示一个数。 任务:制作一个数字电子钟 第一个问题的解决办法,可以使用gotoxy(x,y)函数定位数字显示位置,其中x为屏幕列号、y为屏幕行号。 也可以在每显示一次数字后调用清屏函数clrscr()(或system(“cls”);)。 clrscr()、gotoxy()两个函数都包含在conio.h中,所以要在程序开头使用文件包含命令将它们包含进来: #include “conio.h" 任务:制作一个数字电子钟 程序如下: #include "Conio.h" int main(void) { int s; for(s=0;s<=59;s++) { gotoxy(35,12); printf("\n%2d",s); } getch(); return 0; } 任务:制作一个数字电子钟 第二个问题,是由于计算机的运行速度很快,每秒的显示时间要比实际生活中的一秒时间要短得多。因此,需要在程序中每显示一秒后都设置一个时间延迟,时间延迟用方法空循环结构实现,它的位置在循环内屏幕每显示一个数值后。 for(s=0;s<=59;s++) {printf("\%2d",s); for (i=1;i<=200000000;i++); } 这就是一个循环嵌套(二层)结构。 任务:制作一个数字电子钟 程序如下: #include “conio.h" int 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; } 第4章 循环结构程序设计 任务:制作一个数字电子钟 实训环境:Win-TC或TC 注意: 1)调试程序时要注意观察程序出错情况; 2)200000000是一个参考值,数据改为100000000后再次运行程序,观察运行结果;根据计算机运行速度调整循环变量i的终值,尽量与实际运转时间一致。 任务:制作一个数字电子钟 本节课知识点: 循环嵌套-多种循环 是本课程重点,也是难点。 任务:制作一个数字电子钟 一个循环体内又包含另一个完整的循环结构称为循环嵌套,而包含多层循环的循环结构称为多重循环。while、do while和for三种循环都可以进行嵌套。注意,循环嵌套只能是包含关系,不能发生交叉。 任务:制作一个数字电子钟 五、算法分析 1、变量设置 设小时变量为h、分钟变量为m、秒变量为s,因为这些变量的数据值均为小于60的整数,所以定义它们为整型。 用于延时控制的变量数据值较大,超出整型整形范围,所以变量i定义为长整型。 任务:制作一个数字电子钟 五、算法分析 2、程序结构 “数字电子钟”是一个典型的循环嵌套问题,先考虑只有分、秒的时钟。最里层的循环用于延时,中间层循环控制秒从0~59的变化,外层循环控制分钟从0~59的变化。嵌套结构如下: for(m=0;m<=59;m++) for(s=0;s<=59;s++) { printf("\%2d:%2d", m,s); for (i=1;i<=200000000;i++); } 任务:制作一个数字电子钟 五、算法分析 再考虑小时从0-23的变化情形,最外层再套上一个循环,控制小时从0~23。则四层嵌套结构如下: for (h=0;h<=23;h++) for(m=0;m<=59;m++) for(s=0;s<=59;s++) { prin