安徽师范大学物理与电子信息学院 《C语言程序设计》实验报告
专业名称:电子信息工程
实验室:3404 实验课程:C语言课程设计 实验名称:打印月历 姓名: 同组人员: 指导老师: 实验完成日期:2010-6-26
一、问题描述:
打印月历程序要求在程序运行后年份和月份由键盘输入,然后按照日期和星期相吻合的顺序把这个月的月历打印显示在屏幕上,打印的月历按星期一到星期日排列。
二,基本要求:
(1)要打印何年何月的月历完全由用户决定,在程序运行后由键盘输入。 (2)在打印月历中要注意闰年,大小月的问题,而且日期和星期要相对应。 三、系统分析与设计。
在打印月历程序中,程序可以根据用户输入的年份和月份在电脑屏幕上打印出该月的月历,打印的月历是按星期一到星期日排列的。初看起来,打印月历的程序的逻辑似乎十分简单,实际上却要考虑大量细节性问题,例如,闰年和大小月问题。
在程序的设计思路中,首先我定义了两个全局变量int month,year;然后我定义了两个函数void printmessage_1()和void printmessage_2()函数,第一个函数的功能是在打印月历前显示友好界面和关于本打印月历程序的Introductin。
第二个函数的功能是在打印月历后显示此程序的制作者等信息。而后我定义了int EstimateYear(int year) 函数,此函数是用来判断用户输入的年份是不是闰年(此函数有一个返回值,返回1代表是闰年,返回0代表是非闰年)。
在后我定义了int Judgeweekday(int year,int month) 函数,此函数的作用是用来判断用户输入的月份的1号是星期几。在函数体中有下面语句:
rst=year-1+(int)((year-1)/4)-(int)((year-1)/100)+(int)((year-1)/400)+days; weekday=rst%7;
(函数的返回值即变量weekday的值:1到6代表星期一到星期六,返回值是0代表是星期日)。
接下来就是最重要的事情了,也就是在电脑屏幕上打印出该月的月历。我在函数中定义了Printclendar(int weekday,int monthday) 函数,此函数的作用就是实现所需功能。在此函数中,我定义了计数变量i,j,通过weekday的值可以知道此月的1号是星期几,在第一行打印1前全部打印\\t,计数变量累加,计数变量的值达到7(j从0开始)就输出\\n换行,最后从第二行开始又进行循环,当i累加到这个月的总天数后结束循环,这样月历就打印出来了
最后就是主函数了,在主函数中依次调用printmessage_1( ),
Judgeweekday(year,month),Printclendar(weekday,monthday),printmessage_2( ),最后在电脑屏幕上打印出相应年份的月份的月历。 四、运行结果:
程序运行后呈现如下界面:
在界面上会提示用户输入数据的格式(Year-Month),例如用户输入2009-6后,程序会显示如下界面:
又或者用户输入2000-5,程序会呈现如下界面:
五、程序运行流程图:
程序开始
提示用户输 入year,month. 输 入 (year,month)
判断是否非法输入
相关推荐: