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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章