C语言打印日历

时间:2022-03-08 09:18:01

应同学的要求,写了个日历,输入年份,输出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;
}
C语言打印日历