编写程序,输入年份和月份, 输出该月的月历。
输入格式:
在一行中输入年和月. 年范围为(正整数),月(1~12)。
输出格式:
输出该月的月历。每日的输出字符宽度为8 ,每行每日之间不再设间距,右对齐.所有空白部分均填充为空格字符.注意月份最后的哪个日期后面没有多余空格和换行符。
输入样例:
在这里给出一组输入。例如:
2018 8
输出样例:
在这里给出相应的输出。例如:每个日期占据8个字符宽度.
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
代码:
#include "stdio.h"
int dd(int i,int y) {
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
return 31;
if(i==4||i==6||i==9||i==11)
return 30;
if(i==2) {
if(y%4==0&&y%100!=0||y%400==0) {
return 29;
} else
return 28;
}
}
int main() {
int y,m,i,j,d,s,r,ans=1;
scanf("%d %d",&y,&m);
for(i=1; i<=m-1; i++) {
ans+=dd(i,y);
}
int ts=dd(m,y);
s=y-1+(y-1)/4-(y-1)/100+(y-1)/400+ans;
r=s%7;
printf(" SUN");
printf(" MON");
printf(" TUE");
printf(" WED");
printf(" THU");
printf(" FRI");
printf(" SAT\n");
for(i=0; i<=r-1; i++)
printf(" ");
for(d=1;d<=ts;d++){
printf("%8d",d);
if(r%7==6&&d!=ts)
printf("\n");
r++;
}
return 0;
}