0
整数月と整数年を入力して1ヶ月のカレンダーを印刷するコードを記述しました。しかし、1月の1月と2月の2月のように月の単語の最初の3文字、文字で月を入力したい。写真に示すように月は文字で入力されています。 Here is the Image。だからコードを変更してください。私は文字で月を入力することができます。ありがとう入力文字の月と整数年でカレンダーを印刷
#include <stdio.h>
int isLeapYear(int y); /* True if leap year */
int leapYears(int y); /* The number of leap year */
int todayOf(int y, int m, int d); /* The number of days since the beginning
of the year */
long days(int y, int m, int d); /* Total number of days */
void calendar(int y, int m); /* display calendar at m y */
int main(void) {
int year, month;
printf("Enter the month and year: ");
scanf("%d %d", &month, &year);
calendar(year, month);
return 0;
}
int isLeapYear(int y) /* True if leap year */
{
return(y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0));
}
int leapYears(int y) /* The number of leap year */
{
return y/4 - y/100 + y/400;
}
int todayOf(int y, int m, int d) /* The number of days since the beginning
of the year */
{
static int DayOfMonth[] =
{ -1/*dummy*/,0,31,59,90,120,151,181,212,243,273,304,334 };
return DayOfMonth[m] + d + ((m>2 && isLeapYear(y)) ? 1 : 0);
}
long days(int y, int m, int d) /* Total number of days */
{
int lastYear;
lastYear = y - 1;
return 365Q * lastYear + leapYears(lastYear) + todayOf(y, m, d);
}
void calendar(int y, int m) /* display calendar at m y */
{
const char *NameOfMonth[] = { NULL/*dummp*/,
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
};
char Week[] = "Su Mo Tu We Th Fr Sa";
int DayOfMonth[] =
{ -1/*dummy*/,31,28,31,30,31,30,31,31,30,31,30,31 };
int weekOfTopDay;
int i, day;
weekOfTopDay = days(y, m, 1) % 7;
if (isLeapYear(y))
DayOfMonth[2] = 29;
printf("\n %s %d\n%s\n", NameOfMonth[m], y, Week);
for (i = 0; i<weekOfTopDay; i++)
printf(" ");
for (i = weekOfTopDay, day = 1; day <= DayOfMonth[m]; i++, day++) {
printf("%2d ", day);
if (i % 7 == 6)
printf("\n");
}
printf("\n");
}
マッチを検索する月の名前の配列を持つことができます。あなたができることを試してみてください。 –
"コードを変更してください。文字で月を入力できます。"どんなバグデットが利用可能ですか? – Scheff
@WeatherVane面白いことに、サンプルコードにはすでに月名の配列が含まれています: 'const char * NameOfMonth []'(コードの下部にあります)。 – Scheff