问题遇到的现象和发生背景
怎么编写一个名为NextDate的小程序。用户在程序中输入三个数据(年、月、日)程序返回输入日期后面一天的日期。年、月、日都取整数值,且满足以下条件:
• MONTH: 11231
• DAY: 1
• YEAR:1912~2112
怎么编写一个名为NextDate的小程序。用户在程序中输入三个数据(年、月、日)程序返回输入日期后面一天的日期。年、月、日都取整数值,且满足以下条件:
• MONTH: 11231
• DAY: 1
• YEAR:1912~2112
供参考:
#include <stdio.h>
int IsLeapYear(int y)
{
return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
int DaysOfMonth(int y, int m)
{
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (IsLeapYear(y) && m == 2) return a[m - 1] + 1;
return a[m - 1];
}
void Show(int year,int month,int day)
{
printf("%d %d %d\n", year, month, day);
}
void NextDate(int *year,int *month,int *day)
{
if ((*day) == DaysOfMonth(*year, *month))
{
(*day) = 1;
if ((*month) == 12) {
(*month) = 1;
(*year)++;
}
else {
(*month)++;
}
}
else {
(*day)++;
}
}
int main()
{
int y, m, d;
printf("input\n");
scanf("%d%d%d", &y, &m, &d);
NextDate(&y, &m, &d);
printf("output\n");
Show(y, m, d);
return 0;
}