万年历

#include <stdio.h>

int year(int y)
{
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
        return 366;
    else
        return 365;
}

int main(int argc, const char * argv[])
{
    int y;
    
    // 每月多少天
    int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    printf("请输入年份:\n");
    scanf("%d", &y);
    
    int sum = 0;
    for (int i = 1; i < y; i++) {
        sum += year(i);
    }
    
    int week = (sum + 1) % 7; // 1月1日星期几
    
    if (year(y) == 366) {
        days[1] = 29;
    }
    
    printf("\n%d年日历如下:\n", y);
    for (int i = 0; i < 12; i++) {
        printf("        %d月\n", i+1);
        printf("  7  1  2  3  4  5  6\n");
        printf("=====================\n");
        
        for (int i = 0; i < week; i++) {
            printf("   ");
        }
        
        int begin = 1;
        while (begin <= days[i]) {
            printf(" %02d", begin);
            begin++;
            week = (week + 1) % 7;
            if (week == 0) {
                printf("\n");
            }
        }
        printf("\n\n");
    }
    
    
    return 0;
}


运行结果:


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2015-10-22 18:36  ll_xyls  阅读(171)  评论(0编辑  收藏  举报