カレンダー作成
C言語初心者です。
西暦と月を入力してその月のカレンダーを作成するプログラムの問題なのですが
#include <stdio.h>
#define MMAX 12
#define COMP (year - 1)
int main(void)
{
int i, j, year, month, day, youbi, ycnt, mcnt = 0;
int mday[MMAX] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("西暦と月を入力して下さい-->");
scanf("%4d%2d, &year, &month");
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
mday[1] = 29;
for (i = 0; i < [A]; i++) {
mcnt += mday[i];
}
mcnt++;
[B] = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7;
printf("\n%4d 年%2d 月\n", year, month);
printf("----------------------------\n");
printf(" 日 月 火 水 木 金 土\n");
for (j = 0, ycnt = 0; j < youbi; j++, ycnt++) {
printf(" ");
}
for (day =1; day <= mday[month - 1]; day++) {
if ([C])
printf("[%2d]", day);
else
printf(" %2d ", day);
ycnt++;
if ([D]) {
printf("\n");
ycnt = 0;
}
}
return (0);
}
[A]、[B]、[C]、[D]に答えを入れなきゃいけないのですが私が考えた答えだと
カレンダーの表示すらされません。どこがいけないのでしょうか?
#include <stdio.h>
#define MMAX 12
#define COMP (year - 1)
int main(void)
{
int i, j, year, month, day, youbi, ycnt, mcnt = 0;
int mday[MMAX] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("西暦と月を入力して下さい-->");
scanf("%4d%2d, &year, &month");
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
mday[1] = 29;
for (i = 0; i < month; i++) {
mcnt += mday[i];
}
mcnt++;
youbi = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7;
printf("\n%4d 年%2d 月\n", year, month);
printf("----------------------------\n");
printf(" 日 月 火 水 木 金 土\n");
for (j = 0, ycnt = 0; j < youbi; j++, ycnt++) {
printf(" ");
}
for (day =1; day <= mday[month - 1]; day++) {
if (youbi = 0)
printf("[%2d]", day);
else
printf(" %2d ", day);
ycnt++;
if (youbi > 7) {
printf("\n");
ycnt = 0;
}
}
return (0);
}
よろしくお願いします。
お礼
回答ありがとうございました。 数値を逆に文字列に変換したらうまく動作するように なりました。