2964日历问题

#include<iostream>
#include<iomanip>
using namespace std;
int type(int m) {
    if (m % 4 != 0 || (m % 100 == 0 && m % 400 != 0)) {
        return 0;//不是闰年
    }
    else{   
        return 1;//是闰年
    }
}
char week[7][10] = { "Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday" };
int year[2] = { 365,366 };
int month[2][12] = { {31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31} };
int main()
{
    int days, dayOfWeek;
    int i = 0, j = 0;
    while (cin >> days && days != -1) {//这也行?!
        dayOfWeek = days % 7;
        for (i = 2000; days >= year[type(i)]; i++) {
            days -= year[type(i)];
        }
        for (j = 0; days >= month[type(i)][j]; j++) {//很巧妙
            days -= month[type(i)][j];
        }
        cout<< i << "-"  << setw(2) << setfill('0') <<j + 1 << "-" << setw(2) << setfill('0') << days + 1 <<" "<<week[dayOfWeek] << endl;

    }
    system("pause");
}

这里的格式输出挺容易错的,
要月和日都能补0.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,934评论 0 2
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 8,567评论 0 9
  • 昨天吃的早饭今天还没消火,女儿放学一路过圆中方快餐就气不打一处来,一直问我:“妈妈那个服务员阿姨真坏,为什么只对咱...
    宋玉新阅读 1,696评论 0 0
  • 对于写作,我一直是有些困惑的。 因为我不知道所谓的写作框架,写作主题,对于这些专业的词汇,我有点懵 之所以...
    美少女晓露阅读 903评论 0 4
  • 如今走上这条不归路,为了面子也要走下去; 来到一个陌生的城市,是何其的无助,远比想想的困难;曾将幻想,豪情壮志,满...
    李郎中阅读 1,839评论 0 0