日期相关问题
打印月历
#include<stdio.h>
int monthdays[2][13]={{0,31,28,31,30,31,30,31,30,31,30,31,30},{0,31,29,31,30,31,30,31,30,31,30,31,30}};
int IsLeap(int y);
int Value(int y,int m);
void Draw(int y,int m,int val);
int main(void)
{
int year,month;
int v;
scanf("%d%d",&year,&month);
v=Value(year,month);
Draw(year,month,v);
}
int IsLeap(int y){
return y%400==0||y%4==0&&y%100!=0;
}
int Value(int y,int m){
int day=1;
int fin;
for(int i=1900;i<=y;i++){
if(IsLeap(y)){
day += (366%7);
}
else {
day += (365%7);
}
}
if(IsLeap(y)){
for(int j=1;j<m;j++){
day+=monthdays[1][j]%7;
}
fin=day%7;
}
else{
for(int j=1;j<m;j++){
day+=monthdays[0][j]%7;
}
fin=day%7;
}
return fin;
}
void Draw(int y,int m,int val){
char months[13][15]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
printf("\t%s(%d)\n",months[m],y);
printf("Sun Mon Tue Wed Thu Fri Sat\n");
for(int i=0;i<val;i++){
printf(" ");
}
if(IsLeap(y)){
for(int j=1;j<=monthdays[1][m];j++){
printf("%3d ",j);
val++;
if(val%7==0) printf("\n");
}
}
else{
for(int j=1;j<=monthdays[0][m];j++){
printf("%4d",j);
val++;
if(val%7==0) printf("\n");
}
}
}
2019 5
May(2019)
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31