【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《万年历文档》,欢迎阅读!
内容:设计一个查询并打印万年历的程序。 要求:
1. 查询某年某月某日是星期几 2. 打印某年的某月的全月日历 3. 打印某年的全年日历 4. 退出
2. 在主菜单中输入1后,显示: “请输入年月日(XXXX,XX,XX)”
运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)? 如果输入Y,则重新显示 “请输入年月日(XXXX,XX,XX)”,否则回到主菜单。
3. 在主菜单中输入2后,显示: “请输入要打印的月份(XXXX)” 运行后输出X月的日历,格式为: X
4. 在主菜单中输入3后,显示: “请输入要打印的年份(XXXX)” 运行后输出XXXX年的日历, XXXX
X(月数)
0 1 2 3 4 5 6 S M T W T F S x x x x x x x x x x xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx X(月数)
0 1 2 3 4 5 6 S M T W T F S x x x x
x x x xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx . . . . .
5. 在主菜单中输入4后,显示:“是否要真的退出(Y/N)?” 如果输入Y,结束程序运行,否则重新显示主菜单。
解题 1.
万年历的公式:S=X-1+(X-1)/4-(X-1)/100+(X-1)/400+C 说明:X为公元年数;
C为从元旦起,到要算的那天总天数(如:2003年2月13日,C=31+13=44)
S/7余数为星期几(如余数为0,1,2,3,4,5,6。分别为星期天,星期一,二,三,四,五,六)
在求解某年某月某日的时候可以使用这个公式进行计算,计算出星期,但这个星期要注意星期日为0,所以在输出的时候还要进行调整,可以设置一个数组,将其值设置为char w[7][3]={"日","一","二","三","四","五","六"},这样在输出的时候只要找到对应的元素就可以了,而且计算出的这个代表星期的数值可以直接作为下标用。
在计算的时候要注意闰年的特点,因为闰年的二月比较特别,所以最好用两个数组来分别存放平年和闰年每个月份的天数,这样在做计算的时候可以先把那个月之前的月份的天数加起来,然后再把那个月的日期加上
比如4月23日,可以先把1-3月的所有天数加上,然后再把23加上 2.
在输出某年某月的日历的时候,先计算出当年的一月一日的星期,然后再一个星期一个星期的输出
比如2008年4月,先计算2008年4月1日的星期数,然后再输出,在输出的时候因为1月1日不一定是星期日,所以得先输出空格,然后再按照星期输出。在输出的时候要注意让星期数累加,然后每次累加到7的倍数就输出一个回车。
比如可以用weekday来存放,1月1日的星期数,然后每输出一天就让weekday自增1,然后到了7的倍数就输出一个回车。
注意在输出的时候可能比较难的是格式,在对齐的时候不好控制,需要多次调整,在输出的时候可以使用%2d,让输出的数字占2个位置,这样1位数和2位数就看起来一样了。 3.
在输出某年日历的时候就比较简单了,可以使用上边输出某月日历的代码,然后循环输出就可以了
4.退出的时候使用exit(0)这个函数就可以退出程序了,需要引入头文件
可以将这个程序分成几个部分来写,然后再合到一起,并且对于“是否继续”的问题可以先不做。通过这个程序可以了解数组的用法,if语句的用法,循环的用法,以及算术表达式的用法,本题目难度不大,并且算法较简单,只是简单的数学公式套用。
本文来源:https://www.wddqxz.cn/46ea9b2b482fb4daa58d4bbd.html