#include<stdio.h>//导入库函数
int year(int y){//定义函数year,并定义变量y
if((y%4==0)&&(y%100!=0)||y%400==0){//判断y模4等于0,y模100不等于0,除非y模400也等于0
return 366;//就是闰年
}else{//否则
return 365;//就是平年
}
}
int main(){//定义main函数
int y;//定义变量y
int i,j,sum=0;//定义i,j,sum(总数)初始值为0
int day,week;//定义day(天)再定义week(周)
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};//定义一年12个月,天数分别是31 28 31 30 31 30.......
printf("请输入年份:\n");//打印:请输入年份这五个字并换行
scanf("%d",&y);//输入整数,并获取y的内存地址
if(year(y)==366)//判断函数year结果是不是闰年
month[1]=29;//二月为29天
for(i=1990;i<y;i++)//函数year(365)加上sum并赋值给sum
sum+=year(i);//函数year(365)加上sum并赋值给sum
week=(sum+1)%7;//sum+1(366)模7并赋值给week
printf("%d年日历如下:\n",y);//打印%d年日历如下并换行,%d是变量y的值
for(i=0;i<12;i++){//一年12月,所以循环12次
printf(" %d月\n",i+1);//输出%d并换行,%d是输出i+1
printf("日 一 二 三 四 五 六\n");//打印 日 一 二 三 四 五 六 并换行
day=1;//将day的值设置为1,也是一年的第一天的意思
for(j=0;j<week;j++)//循环变量j从0开始,一直执行,直到j的值小于week的值,每次循环j的值都增加一
printf(" ");//每输入一个星期空一格
while(day<=month[i]){//判断day的值大于等于month的随机一个元素(i)
printf("%4d",day);//%4d输出宽度为4个字符,%d是算出的day的值
day++;//对变量day做增加操作
week=(week+1)%7;//week模7赋值给week
if(week%7==0)//判断week模7;余数是不是0
printf(" \n");//换行
}
printf("\n");//换行(格式美观)
printf("\n");//换行(格式美观)
}
}
点赞关注,多多支持,更新快快!!