C语言打印日历

应同学的要求,写了个日历,输入年份,输出12个月份的日历表,代码如下 :

#include<stdio.h>

bool isLeap(int year)
{
    if((year%4==0 && year%100!=0) || (year%400==0))
        return 1;
    else
        return 0;
}

void printCalendar(int year)
{
    int day=1,days=0,week=0;
    int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    //得到从公元1900年01月01日到当前年份的1月1日之间的天数
    for(int i=1900;i<year;i++)
    {
        days+=365;
        days+=isLeap(i);//总天数修正
    }
    months[1]+=isLeap(year);//修正二月天数
    week=days%7;
    //循环输出12个月份日历表
    for(int i=0;i<12;i++)
    {
        //得到从二月份开始当前月份第一天的星期
        if(i>0)
        {
            days+=months[i-1];
            week=days%7;
        }
        printf("%d月:\n",i+1);
        //每月的表头
        printf("周一\t周二\t周三\t周四\t周五\t周六\t周日\n");
        //制表符 空出每个月第一天之前的位置
        for(int j=0;j<week%7;j++) printf("\t");
        //对当前月份,依次输出具体日期
        for(int j=1;j<=months[i];j++)
        {
            printf("%d\t",day);
            //一行输出七天后换行
            if((week+day)%7==0) printf("\n");
            day++;
        }
        printf("\n\n");
        day=1;
    }
}

int main()
{
    int year;
    scanf("%d",&year);
    //打印日历
    printCalendar(year);
    return 0;
}

发布了35 篇原创文章 · 获赞 12 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章