慎&独 2022-11-22 23:50 采纳率: 93.9%
浏览 2
已结题

对日期加一的代码部分不知道哪里错了

只是incrementDay函数部分有错误,其他的没有问题,代码有点长。

#include<iostream>
using namespace std;
class DateType {
    //自定义的日期类 DateType
    int y, m, d; //数据成员,表示当前日期的年、月、日
public:
    DateType(int y0 = 1, int m0 = 1, int d0 = 1)
    {
        y = y0;
        m = m0;
        d = d0;
    }
    void IncrementDay(); //增加 1 天
    bool Equal(DateType dt2); //判断二日期是否相等
    void PrintDate(); //屏幕输出日期对象的有关数据(年、月、日)
};
bool judge(int y)
{
    if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
        return 1;
    else
        return 0;
}
bool DateType:: Equal(DateType dt2)
{
    if (y == dt2.y && m == dt2.m && d == dt2.d)
        return 1;
    else
        return 0;
}
void DateType::IncrementDay()
{
    if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10)
    {
        if (d <= 30)
        {
            d++;
        }
        else
        {
            d = 1;
            m++;
        }
 
    }
    if (m == 12)
    {
        if (d <= 30)
        {
            d++;
        }
        else
        {
            y++;
            m = 1;
            d = 1;
        }
    }
    if (m = 2)
    {
        if (judge(y))
        {
            if (d <= 28)
            {
                d++;
            }
            else
            {
                m++;
                d = 1;
            }
        }
        else
        {
            if(d<=27)
            {
                d++;
            }
            else
            {
                m++;
                d = 1;
            }
        }
    }
}
void DateType::PrintDate()
{
    cout << y << ":" << m << ":" << d<<endl;
}
 
int main()
{
    int y1, m1, d1, y2, m2, d2;
    cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;
    DateType dt1(y1, m1, d1);
    DateType dt2(y2, m2, d2);
    cout << y1 << ":" << m1 << ":" << d1<<endl;
    cout << y2 << ":" << m2 << ":" << d2<<endl;
    if (dt1.Equal(dt2))
        cout << "true"<<endl;
    else
        cout << "false"<<endl;
    dt1.IncrementDay();
    dt2.IncrementDay();
    dt1.PrintDate();
    dt2.PrintDate();
    return 0;
}

  • 写回答

1条回答 默认 最新

  • hello_world&& 2022-11-23 00:49
    关注

    判断是否为二月少了个等号,另外还少了4,6,9,11月的情况。源码已qq

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月23日
  • 已采纳回答 11月23日
  • 修改了问题 11月22日
  • 创建了问题 11月22日