万年历C语言课程设计报告_c语言课程设计报告
万年历C语言课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课程设计报告”。
程序实践报告
任务分配:
1、头文件,定义常量,全局变量,自定义函数和打印输出模块。即1~50和140~2902、功能控制模块和一部分日历显示模块,即50~140和290~4003、一部分日历显示模块和键值获取模块,即400~
1、基本思路
功能模块图
本系统包括4个模块,分别是功能控制模块、打印输出模块、日历显示模块和键值获取模块。(1)功能控制模块。该模块用于实现日期有效性检查、判断是否是闰年和返回指定日期对应的星期。
(2)打印输出模块。该模块主要是进行输出显示,包括打印指定个数的空格、打印分隔线、打印用户使用手册、打印当前日期对应的星期以及打印给定的星期。
(3)日历显示模块。该模块是系统的核心模块,是用来显示指定日期所在月份的月历。(4)键值获取模块。该模块接受键盘操作,获取键值,来进行日期调整,并调用日历显示模块中的函数来显示调整后的日历。
日历显示模块
日历显示是系统的核心模块,它控制着日历的生成和显示。其实现流程如图所示。程序输入的是包含年月日(year,month和day)的日期,输出month所在月份的月历,并突出显示day所在的日期和year是否是闰年的标识。程序首先根据year判断其是否是闰年,如果是则需要将该年2月份的天数设置为29天,接着判断day是否超过month所在月份的最大天数,如果超过则显示系统日期所在的月历。然后进行星期输出的判断,如果输出的是该月的第一个星期,则判断该星期中还有几天在本月(如,该月1号是星期五,则表示该月第一个星期中只有两天在本月,星期一到星期四在上月,则星期一到星期四在本月就不输出,仅有空格表示),输出空格。输出完第一周后,接着输出第二到第五(或者六)周,每周7天。在输出过程中,如果遇到了day所在的日期,则突出显示。
键值获取流程图
键值获取实现的是从键盘调整日期并显示调整后的月历。其实现流程如图所示。系统首先判断从键盘输入的值,如果是右移键,表示增加月份。此时,如果当前月份是12月,则增加月份后就进入下一年的一月;如果是左移键,表示减少月份。此时,如果当前月份是1月,则减少月份后就进入上一年的12月;如果是上移键表示增加年份,直接年份加1即可;如果是下移键表示减少奶奶分,直接年份减1即可;如果是向上翻页键表示减小日期。如果是1月1号,则减少日期后进入上一年的12月31号,如果是某一个月的1号,则减小日期后进入上一月的最后一天;如果是向下翻页键表示增加日期。如果是12月31号,则增加日期后进入到下一年的1月1号,如果是某一个月的最后一天,则增加日期后进入到下一个月的第一天;如果是Q/q键表示查询日期,此时将输出提示信息,提示用户输入查询日期。在用户输入查询日期后,系统就爱那个调用日期检查函数对输入日期的合法性进行检测,如果输入日期不合格,则提示错误信息并显示当前系统日期所在月的月历;如果是空格键表示重置,显示当前系统日期所在月的月历;如果是Esc键表示退出系统,按此键后,系统将询问用户是否确定退出,在得到确定回答(用户输入Y/y)后将退出系统。
2、函数功能描述
1)checkDate()函数原型:void checkDate()checkDate()函数用于检查输入日期的合法性,包括检查输入日期中的年、月、日部分。对于
年,检查其是否是负数或者是0;对于月,检查其是否是范围在1~12中的值;对于日,检查其是否是范围在1~31中的值。如果有一个部分不合法,则程序提示用户。2)isLeapyear()函数原型:int isLeapyear(int year)isLeapyear()函数用于判断制定月份是否是闰年。参数year为待判断的年份。3)getWeek()函数原型:int getWeek(int year,int month,int day)getWeek()函数用于计算并返回给定日期对应的星期。其中参数year、month和day都为整型,分别表示输入的年、月和日。4)printSpace()函数原型:void printSpace(int n)printSpace()函数用于输出制定个数的空格。其中整型参数n表示需要输出的空格的个数。5)printSepatator()函数原型:void printSeparator()printSeparator()函数用于在制定位置输出用户使用手册。输出位置在函数中已经设定。7)printWeek()函数原型:void printWeek()printWeek()函数用于输出当前日期对应的星期,即由 currentYear,currentMonth和currentDay确定的日期对应的星期。该函数首先调用getWeek()函数返回当前日期对应的星期。8)printWeek2()函数原型:void printWeek2(int week)printWeek2()函数用于根据制定值输出星期。参数week是一个整型变量,其值可取0到6,分别表示星期一到星期日。8)showCalendar()函数原型:void showCalendar(int year,int month,int day)showCalendar()函数用于显示日历。参数year,month和day分别表示年、月和日。该函数显示year所在年是否是闰年,显示month所在月的月历,突出显示day所在日的日期。
10)getKeyValue()函数原型:void getKeyValue()getKeyValue()函数用于获取键盘的输入。根据键盘的输入(上下移键、左右移键、上下翻页键、Q/q键)调整当前日期,并显示当前日期所在月的月历等。
4、遇到的问题和相应的解决措施
1.dos.h头文件不能在常用的Visual C++里使用。若使用Turbo C,则键入的汉字无法显示,且无法复制粘贴。
解决措施:经过上网查询和询问同学,知道了导致问题的原因,但若把dos.h在visual c++中换成time.h,过程太复杂,很难实现。最后,我们跟同学借了一个win-TC,是C语言程序,且可以使用中文和进行复制粘贴;2.键入程序代码的时候显示“非法字符’?(0xa3)在showCalender函数中”
解决措施:把showCalender函数全部检查一遍也没有找出问题所在,然后咨询老师,经验丰富的老师一眼看出函数中的一个左括号是用拼音输出的,不是英文;3.程序可以运行,但应该只显示一个向下箭头的地方显示了三行,且覆盖了其他的字符。
解决措施:认真的又检查了一遍,发现“指定输出字符为向下的箭头”的函数中,_CX=01,写成了_CH=01;4.万年历需要获取系统时间,不知从何下手。
解决措施:经查阅资料,得知应用:currentYear=sysTime.da_year;
currentMnth=sysTime.da_mon;
currentDay=sysTime.da_day;
5、心得体会
经历了这次课程设计的设计和制作的整个过程,我们才发现我们知识的贫乏和知识面的狭窄,原本以为不就是一个小小的课程设计,小case,很容易就可以搞定,可是到了后来实际的操作的时候可是花费了我们九牛二虎之力,不说其他的,只说时间上面,我们就花费了大把的时间,当然我们也从中体会了很多平时不能收获的东西。经过一个多月的自主上机和三个多星期的大作业编写,我们一队三人的齐心努力,查阅书籍,上网查询等各种途径,完成了这次的大作业编写。其中遇到了很多问题,一一解决的过程让我们学会了很多,当然有很多最初的构想没有实现,这也是我们的遗憾之处。
这次作课程设计我们也是收获很大,我们更深入的体会到团队的重要性,通过自学学到了更多C语言的编译,如插入颜色,读取系统时间等,这会是我们终身的财富。
首先,我们对C语言有了更深的了解,使用起来也更加的熟练,原来有一些不知道和不熟悉的函数,我们学会用了。其次,我们这一次找了不少的资料,找专业的书籍、上网找各方面的资料,也使我们学到了一些书本中学不到的知识,让我们长了见识。同时我们同学之间也互相的探讨,也增进了我们同学之间的感情。这次的万年历设计,虽然我们自己觉的很有的成就感,但是这必竟是我们第一次C语言的课程设计,必然会有很多的不足之处有待改进,相信以后我们一定会做的更好。
同时也感谢老师们的耐心讲解与指导,我们期待下一次可以做的更好!
【程序代码】 /*加载头文件*/ #include #include #include #include #include #include #include
/*定义常量*/ /*左移键*/ #define LEFT 0x4b00 /*右移键*/ #define RIGHT 0x4d00 /*下移键*/ #define DOWN 0x5000 /*上移键*/
#define UP 0x4800 /*向上翻页键*/ #define PAGEUP 0x4900 /*向下翻页键*/ #define PAGEDOWN 0x5100 /*小写字母q*/ #define QLOWER 0x1071 /*大写字母Q*/ #define QUPPER 0x1051 /*空格键*/ #define SPACE 0x3920 /*Esc键*/ #define ESC 0x011b
/*定义全局变量*/ struct date sysTime;int currentYear;int currentMonth;int currentDay;int n_currentMon;int n_lastMon;
/*--------------------------自定义函数-------------------------*/ void checkDate();int isLeapyear(int year);int getWeek(int year,int month,int day);void printSpace(int n);void printSaparator();void printUsage();void printWeek();void printWeek2(int week);void showCalendar(int year,int month,int day);void getKeyValue();
welcome(){ int i, graphdriver,graphmode,size,page;char s[30];graphdriver=DETECT;initgraph(&graphdriver,&graphmode,“”);cleardevice();setbkcolor(BLUE);
setviewport(40,40,600,440,1);setfillstyle(1,2);setcolor(YELLOW);rectangle(1,1,560,400);floodfill(50,50,14);rectangle(20,20,540,380);setfillstyle(1,13);
/*
开图视口
*/ /*
用绿色填画出的矩形框
*/
floodfill(2l,300,14);setcolor(BLACK);settextstyle(1,0,6);/*
用淡洋红色填画出的矩形框
*/ /*
设要显示字符串的字形方向,尺寸
*/ outtextxy(100,60,“Welcom you”);setviewport(100,150,540,380,0);/*
又开一窗口 */ setcolor(14);setfillstyle(1,10);rectangle(20,20,420,120);settextstyle(2,0,9);floodfill(21,100,14);/*
用深蓝色填充
*/ sprintf(s,“Hey girl!Do you want to know?”);
/*
将字符串存到 s 字符数组*/
setcolor(1);settextstyle(10,0,10);/*
设选用字形 4,放大 3 倍,水平设置
*/ outtextxy(110,80,s);
/*
显示 s 字符串
*/ getch();closegraph();} /*功能控制模块*/ /*检查日期有效性函数*/ void checkDate(){ /*如果给定的日期中年份部分为负数或者0*/ if(currentYear
getchar();/*以当前系统时间重新赋值*/ currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;} /*如果给定的日期中月份部分为负数,为0或者大于12*/ if(currentMonth>12||currentMonth31||currentDay
/*判断是否是闰年函数*/ int isLeapyear(int year){
/*闰年的判断:(1)year被4整除,并且year不被100整除
或(2)year被4整除,并且被400整除*/
if(year%4==0&&year%100||year%400==0)
return 1;
else
return 0;} /*根据给定日期计算星期函数*/ int getWeek(int year,int month,int day){
int leapFlag;
int week;
int i;
/*该数组用于保存每个月的天数*/
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int count=0;
/*判断给定年份是否是闰年*/
leapFlag=isLeapyear(year);
/*如果是闰年则2月份的日期应该为29天*/
if(leapFlag==1)
a[2]++;
/*计算从给定年份的1月1日到给定月份的1号之间的天数*/
for(i=1;i
{
count+=a[i];
}
/*计算从给定年份的1月1日到给定日期之间的天数*/
count+=day;
/*计算星期*/
week=(year+1+(year-1)/4+(year-1)/100+(year-1)/400+count)%7;
return week;}
/*打印输出模块*/ /*输出指定个数空格函数*/ void printSpace(int n){
int i;
for(i=0;i
printf(“ ”);}
/*输出分割线函数*/ void printSeparator(){
int i;
for(i=0;i
{
printf(“=”);
}
printf(“n”);}
/*输出使用方法函数*/ void printUsage(){
gotoxy(45,3);
/*设定字体颜色*/
textcolor(YELLOW);
/*送格式化输出至屏幕*/
cprintf(“-----------Usage-----------”);
gotoxy(45,5);
textcolor(YELLOW);
cprintf(“YEAR”);
gotoxy(50,5);
printf(“ Up key()to increase;n”);
gotoxy(50,7);
printf(“ Down key()to decrease.n”);
gotoxy(45,9);
textcolor(YELLOW);
cprintf(“MONTH:”);
gotoxy(50,9);
printf(“ Right key()to increase;n”);
gotoxy(50,11);
printf(“ Left key()to decrease.n”);
gotoxy(45,13);
textcolor(YELLOW);
cprintf(“DAY”);
gotoxy(50,13);
printf(“ PageDown key to increase;n”);
gotoxy(50,15);
printf(“ PageUp key to decrease.n”);
gotoxy(45,17);
textcolor(YELLOW);
cprintf(“QUERY”);
gotoxy(50,17);
printf(“ Q/q keyn”);
textcolor(YELLOW);
gotoxy(45,19);
cprintf(“RESET”);
gotoxy(50,19);
printf(“ SPACE key.n”);
gotoxy(45,21);
textcolor(YELLOW);
cprintf(“EXIT”);
gotoxy(50,21);
printf(“ Esc keyn”);
gotoxy(59,5);
/*设置寄存器,表示在指定位置输出一次指定的字符*/
_CX=01;
_AH=0xa;
/*指定输出字符为向上的箭头*/
_AL=24;
/*产生一次中断,输出向上的箭头*/
geninterrupt(0x10);
gotoxy(61,7);
_CX=01;
_AH=0xa;
/*指定输出字符为向下的箭头*/
_AL=25;
geninterrupt(0x10);
gotoxy(62,9);
_CX=01;
_AH=0xa;
_AL=26;
/*指定输出字符为向右的箭头*/
geninterrupt(0x10);
gotoxy(61,11);
_CX=01;
_AH=0xa;
/*指定输出字符为向左的箭头*/
_AL=27;
geninterrupt(0x10);
/*还原字体颜色*/
textcolor(7);}
/*根据系统日期输出星期函数*/ void printWeek(){
int day;
/*根据日期获得星期*/
day=getWeek(currentYear,currentMonth,currentDay);
textcolor(11);
/*输出星期,0表示星期天,1表示星期一„„6表示星期六*/
if(day==0)
cprintf(“%d-%d-%d,Sunday!”,currentYear,currentMonth,currentDay);
if(day==1)
cprintf(“%d-%d-%d,Monday!”,currentYear,currentMonth,currentDay);
if(day==2)
cprintf(“%d-%d-%d,Tuesday!”,currentYear,currentMonth,currentDay);
if(day==3)
cprintf(“%d-%d-%d,Wednesday!”,currentYear,currentMonth,currentDay);
if(day==4)
cprintf(“%d-%d-%d,Thursday!”,currentYear,currentMonth,currentDay);
if(day==5)
cprintf(“%d-%d-%d,Friday!”,currentYear,currentMonth,currentDay);
if(day==6)
cprintf(“%d-%d-%d,Saterday!”,currentYear,currentMonth,currentDay);
textcolor(7);}
/*输出指定星期函数*/ void printWeek2(int week){
if(week==0)
cprintf(“,Sunday”);
if(week==1)
cprintf(“,Monday”);
if(week==2)
cprintf(“,Tuesday”);
if(week==3)
cprintf(“,Wendesday”);
if(week==4)
cprintf(“,Thursday”);
if(week==5)
cprintf(“,Friday”);
if(week==6)
cprintf(“,Staturday”);}
/*日历显示模块*/ /*显示日历函数*/ void showCalendar(int year,int month,int day){
int i;
int j;
/*输出的日期*/
int outDay;
int leapFlag;
/*本月第一个星期中,在上月的天数*/
int dayLastMon;
int week;
/*该数组用于保存每个月的天数*/
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
outDay=0;
dayLastMon=0;
week=0;
/*判断给定年份是否是闰年*/
leapFlag=isLeapyear(year);
/*如果是闰年则2月应该是29天*/
if(leapFlag==1)
{
a[2]++;
}
/*如果给定的日期中,天数大于该月的最大天数*/
if(day>a[month])
{
printf(“The number of this month's day is %d at most!n”,a[month]);
printf(“pre any key to continue.....n”);
getchar();
getchar();
/*以当前系统时间重新赋值*/
year=sysTime.da_year;
month=sysTime.da_mon;
day=sysTime.da_day;
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day;
}
/*当前月的天数*/
n_currentMon=a[month];
/*上一月的天数*/
n_lastMon=a[month-1];
/*根据给定日期,获取给定月份1号的星期*/
week=dayLastMon=getWeek(year,month,1);
/*清除文本模式窗口*/
clrscr();
printf(“nThe calendar of %d:”,year);
textcolor(10);
/*显示给定是否是闰年*/
if(leapFlag==1)
cprintf(“[leap year]”,year);
if(leapFlag==0)
cprintf(“[not leap year]”,year);
printf(“n”);
textcolor(7);
printSeparator();
textcolor(YELLOW);
/*输出月份提示,1~12分别表示1月到12月*/
switch(month)
{
case 1:
cprintf(“January 1”);
break;
case 2:
cprintf(“Fabruary 2”);
break;
case 3:
cprintf(“March 3”);
break;
case 4:
cprintf(“April 4”);
break;
case 5:
cprintf(“May 5”);
break;
case 6:
cprintf(“June 6”);
break;
case 7:
cprintf(“July 7”);
break;
case 8:
cprintf(“August 8”);
break;
case 9:
cprintf(“September 9”);
break;
case 10:
cprintf(“October 10”);
break;
case 11:
cprintf(“November 11”);
break;
case 12:
cprintf(“December 12”);
break;
}
textcolor(7);
printf(“nn”);
textcolor(13);
cprintf(“Sun Mon Tue Wed Thu Fri Sat”);
textcolor(7);
printf(“nn”);
/*因为一个月中最多跨度6个星期,所以循环从0到5*/
for(i=0;i
{
/*如果是该月的第一星期*/
if(i==0)
{
/*第一个星期中还要7-daylastmon天本月,有daylastmon天在上个月,所以输出
daylastmon*4个空格符,每个日期在日历中占用4个空格*/
printSpace(dayLastMon*4);
/*剩余在本月的第一个星期中的天数为7-dayLastmon*/
for(j=0;j
{
/*到达day的前一天时,输出++outDay*/
if(outDay==day-1)
{
/*黄色字体突出显示*/
textcolor(YELLOW);
cprintf(“[%d]”,++outDay);
textcolor(7);
}
/*到达day当天时,并且不是星期天*/
else if(outDay==day&&week!=0)
{
printf(“%3d”,++outDay);
}
/*到达day当天时,并且是星期天*/
else
{
printf(“%4d”,++outDay);
}
/*计算当天的星期,如果前一天时星期六(6),当天时星期天(0),其他情况则直
接星期加1*/
week=(week
}
printf(“nn”);
}
/*如果不是该月的第一个星期*/
else
{
/*则输出该星期中的7天*/
for(j=0;j
{
/*输出的天数小于该月的最大天数*/
if(outDay
{
/*到达day的前一天时,输出++outDay*/
if(outDay==day-1)
{
/*输出一位数字*/
if(outDay
{
textcolor(YELLOW);
cprintf(“[%d]”,++outDay);
textcolor(7);
}
/*输出两位数字*/
else
{
textcolor(YELLOW);
cprintf(“[%2d]”,++outDay);
textcolor(7);
}
}
/*到达day当天时,并且不是星期天*/
else if(outDay==day && week!=0)
{
printf(“%3d”,++outDay);
}
/*到达day当天时,并且是星期天*/
else
{
printf(“%4d”,++outDay);
}
}
/*计算当天星期*/
week=(week
}
printf(“nn”);
if(outDay==a[month])break;} } /*输出分割线*/ printSeparator();
/*输出当前选择的日期和星期*/ printf(“The day you choose is:nn”);printWeek();gotoxy(1,22);textcolor(10);cprintf(“--------------------n”);textcolor(7);
/*输出系统日期和星期*/ printf(“nToday is: %d-%d-%d”,sysTime.da_year,sysTime.da_mon,sysTime.da_day);printWeek2(getWeek(sysTime.da_year,sysTime.da_mon,sysTime.da_day));printf(“nn”);/*显示按键操作*/ printUsage();gotoxy(1,25);}
/*键值获取模块*/ /*通过键盘调整日期函数*/ void getKeyValue()
{ int key;char ch;/*默认显示当前系统日期和星期*/ currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;showCalendar(currentYear,currentMonth,currentDay);
while(1){
/*获取键值,根据键值调整日历输出*/
key=bioskey(0);
/*右移键,增加月份*/
if(key==RIGHT)
{
/*月份值在1~12之间,则直接加1*/
if(currentMonth=1)
{
currentMonth++;
}
/*如果月份为12,则加1后进位,即年份加1,月份变为1*/
else
{
currentYear++;
currentMonth=1;
} } /*左移键,减少月份*/ if(key==LEFT){
/*月份值在1~12之间,则直接减1*/
if(currentMonth1)
{
currentMonth--;
}
/*如果月份为1,则减1后,到上一年,月份变为12*/
else
{
currentYear--;
currentMonth=12;
} } /*上移键,增加年份*/
if(key==UP){
currentYear++;} /*下移键,减少年份*/ if(key==DOWN){
currentYear--;} /*上移键,减少天数*/ if(key==PAGEUP){
/*当前日不是该月的第一天,则天数直接减1*/
if(currentDay!=1)
{
currentDay--;
}
/*当前日是该月的第一天,并且是该年的第一个月(即1月1日),则天数减1后,变为上一年的最后一个月的最后一天(即12月31日)*/
else if(currentDay==1 && currentMonth==1)
{
currentYear--;
currentMonth=12;
currentDay=31;
}
/*当前日是该年中某一个月的第一天,则天数减一后,变为上个月的最后一天*/
else
{
currentMonth--;
currentDay=n_lastMon;
} } /*下移键,增加天数*/ if(key==PAGEDOWN){
/*当前日不是该月的最后一天,则天数直接加1*/
if(n_currentMon!=currentDay)
{
currentDay++;
}
/*当前日是该年的最后一天(即12月31日),则天数加1后,变为下一年的第一个月的第一天(即1月1日)*/
else if(n_currentMon==currentDay && currentMonth==12)
{
currentYear++;
currentMonth=1;
currentDay=1;
}
/*当前日是该年中某一个月的最后一天,则天数加1后,变为下个月的第一天*/
else
{
currentMonth++;
currentDay=1;
} }
/*Q或者q键,表示查询指定日期的星期*/ if(key==QLOWER||key==QUPPER){
{
printf(“Input date(eg,%d-%d-%d):”,sysTime.da_year,sysTime.da_mon,sysTime.da_day);
scanf(“%d-%d-%d”,¤tYear,¤tMonth,¤tDay);
checkDate();
}
}
/*空格键,重置到系统日期*/
if(key==SPACE)
{
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day;
}
/*Esc键退出系统*/
if(key==ESC)
{
printf(“Do you really want to quit?(Y/N)”);
ch=getchar();
if(ch=='y'||ch=='Y')
break;
}
showCalendar(currentYear,currentMonth,currentDay);
} }
void printtext(unsigned char *temp[],int i){
setcolor(4);
/*设置颜色*/
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);/*设置字符的字体,方向和大小*/
outtextxy(100,40+i*50,temp[i]);
/*在所指定的坐标出显示字符串*/ } /*主函数*/ void main(){
int i,graphdriver,graphmode;
unsigned char *temp[4];
int freq[96]={659,587,659,587,659,494,587,523,440,330,440,494,330,494,523,659,587,659,587,659,494,587,523,440,330,440,494,330,523,494,440,440,494,523,587,659,659,330,699,659,587,587,330,659,587,523,523,330,587,523,494,494};
int dely[96]={50,50,50,50,50,50,50,50,100,50,50,100,50,50,100,50,50,50,50,50,50,50,50,100,50,50,100,50,50,50,50,100,50,50,50,50,100,50,50,50,50,100,50,50,50,50,100,50,50,50,50,100};
graphdriver=DETECT;
graphmode=0;
temp[0]=“Welcome!”;
temp[1]=“Please pre any key to start the music......”;
temp[2]=“Do you like it?”;
temp[3]=“Pre any key to end the music!”;
temp[4]=“Welcome to calendar”;
initgraph(&graphdriver,&graphmode,“”);
/*系统初始化*/
cleardevice();
/*清除屏幕*/
settextjustify(LEFT_TEXT,CENTER_TEXT);
/*设置字符排列方式*/
for(i=0;i
printtext(temp,i);
getch();
for(i=2;i
printtext(temp,i);
i=0;
while(i
{
sound(freq[i]);
/*扬声器根据频率发声*/
delay(1100*dely[i]);
/*声音延时*/
i++;
}
nosound();
/*关闭扬声器*/
printtext(temp,4);
getch();
closegraph();
welcome();
window(1,1,80,25);
textbackground(0);
textcolor(WHITE);
/*清除文本模式窗口*/
clrscr();
/*设置屏幕显示方式*/
_AL=03;
_AH=0;
geninterrupt(0x10);
getdate(&sysTime);
getKeyValue();}
/*关闭图形模式*/