プログラムを作成し、年と月を入力して、その月の月間カレンダーを出力します。
入力フォーマット:
年と月を1行で入力します。年の範囲は(正の整数)、月(1〜12)です。
出力フォーマット:
その月の月間カレンダーを出力します。1日の出力文字幅は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;
}