前段时间听说腾讯公司有一道面试题是要求用c/c++打印一个万年日历,今天也索性拿来练练手,看看如果是自己去应聘,能完美地完成吗。下面就show一下这次做的万年日历。
    所谓日历,就是可以从上面反映出某年某月某日的信息,在这里,只是简单地反映日期、星期。设计思路:
    万年日历分为有四个选项:
    (1).年历:打印这一年的日历。
    (2).月历:打印这一个月的日历。
    (3).日历:说明这一天是该年的第几天、星期几。
![AJS5HNE[W5]74YT[QV8{YQ1.png 技术分享](http://s3.51cto.com/wyfs02/M02/73/0F/wKiom1Xy546gZaaeAAEV2aVwiLs686.jpg) 主要问题难度在于如何计算某年某月某日是该年的星期几,要解决这个问题,就得先知道该年的元旦(1月1日)是星期几,这是用一条计算公式来计算出来的:onedayweek=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;根据这条公式就可以很快算出元旦所属星期数。要算出具体某天是星期几,还得知道这一天是该年的第几天,由以下代码完成:
    主要问题难度在于如何计算某年某月某日是该年的星期几,要解决这个问题,就得先知道该年的元旦(1月1日)是星期几,这是用一条计算公式来计算出来的:onedayweek=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;根据这条公式就可以很快算出元旦所属星期数。要算出具体某天是星期几,还得知道这一天是该年的第几天,由以下代码完成:![LNK(ZFGC4T9]6$8R08X_VUM.png 技术分享](http://s3.51cto.com/wyfs02/M01/73/0C/wKioL1Xy7AiAjOTXAAGoy-2Cwoo421.jpg)
做这个万年日历,我更多的是将功能的具体实现由函数去完成,然后在main函数中调用即可,这一方面方便代码复用,另外更体现模块化编程的思想,main函数中看起来也比较清晰明了。
原文地址:http://10274409.blog.51cto.com/10264409/1693973