|
#include <stdio.h>
void cal(int y)
{
int m, d, w, i, z; char x[12][6][7] = { 0 };
w = (y + (y-1)/4 - (y-1)/100 + (y-1)/400) % 7;
for (m = 1; m <= 12; m++) {
z = (m==2) ? 28+(y%4==0 && y%100 || y%400==0) : 30+(0x15aa>>m&1);
for (i = 0, d = 1; d <= z; d++) {
x[m-1][i][w] = d;
if (++w == 7) w = 0, i++;
}
}
printf("%36d年\n\n", y);
for (m = 1; m <= 12; m += 3) {
#define WEEK " 日 月 火 水 木 金 土 "
printf("%11d月%22d月%22d月\n" WEEK WEEK WEEK "\n", m, m+1, m+2);
for (i = 0; i < 6; i++)
for (z = -1; z < 2; z++) {
for (w = 0; w < 7; w++)
printf(x[m+z][i][w] ? "%3d" : " ", x[m+z][i][w]);
printf(z==1 ? "\n" : " ");
}
puts("");
}
}
int main(void)
{
int y;
printf("カレンダーを表示する年を入力してください。");
if (scanf("%d", &y) == 1) cal(y);
return 0;
}
|