推算日期 感谢帮忙
											Description输入三个正整数,分别代表一个日期的年,月,日,输出这个日期的后一天的年,月,日。
Input
输入三个正整数,分别代表一个日期的年,月,日。
Output
输出这个日期的后一天的年,月,日。
Samples
input
2007 2 28
output
2007 3 1
程序代码:#include <stdio.h>
class Date {
private:
    int year, month, day;
    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];
    }
public:
    Date(): year(2022), month(2), day(28) {}
    Date(int y,int m,int d):year(y),month(m),day(d){}
    void Show()const
    {
        printf("%d %d %d\n", year, month, day);//年-月-日 格式
    }
    Date IncOneDay()
    {
        Date tmp = *this;
        if (day == DaysOfMonth(year, month))
        {
            tmp.day = 1;
            if (month == 12){
                tmp.month = 1;
                tmp.year++;
            }
            else {
                tmp.month++;
            }
        }
        else {
            tmp.day++;
        }
        return tmp;
    }
};
int main()
{
    int y, m, d;
    Date* D;
    printf("input\n");
    scanf("%d%d%d", &y, &m, &d);
    D = new Date(y, m, d);
    printf("output\n");
    D->IncOneDay().Show();
    return 0;
}[此贴子已经被作者于2022-1-27 16:05编辑过]
程序代码:#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 IncOneDay(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);
    IncOneDay(&y, &m, &d);
    printf("output\n");
    Show(y, m, d);
    return 0;
}[此贴子已经被作者于2022-2-21 09:11编辑过]