嗨,我正在开发一个程序,该程序应显示两个日期中的后一个,它需要接受两个日期结构并返回其中的后一个。后者为2014年4月31日,后者为2014年4月30日。这是我的代码,我不明白为什么我会得到一个很长的怪异数字...感谢您的帮助。

#include <iostream>
#include <iomanip>

using namespace std;

struct Date
{
    int day;
    int month;
    int year;
};

int main()
{
    void laterDate(Date, Date);
    Date one;
    Date two;
Date later;

cout << "Enter a Date starting with the day, then month, then year:\n";

cin >> one.day;
cin >> one.month;
cin >> one.year;

cout << "\n\nEnter another date in the same fashion as above:\n";

cin >> two.day;
cin >> two.month;
    cin >> two.year;

cout << "\n\nThank you, I will now tell you which date is later then the other!" <<             endl;
laterDate(one, two);

system("pause");
return 0;
}


void laterDate(Date o,Date t)
{
Date later;


if (o.year >= t.year)
    if (o.month >= t.month)
        if (o.day > t.day)
        {
            later.day= o.day;
            later.month = o.month;
            later.year = o.year;
        }
        else
        {
            later.day = t.day;
            later.month = t.month;
            later.year = t.year;
        }

        cout << later.day << "/" << later.month << "/" << later.year << endl;
}


输出值
输入从日期开始的日期,然后是月份,然后是年份:
04
30
2014年

以与上述相同的方式输入另一个日期:
04
31
2014年

谢谢,我现在告诉您哪个日期晚于另一个!
-858993460 / -858993460 / -858993460
按任意键继续 。 。 。

结束输出

最佳答案

if (o.year > t.year ||
   (o.year >= t.year && o.month > t.month) ||
    (o.year >= t.year && o.month >= t.month &&
           o.day > t.day))
        {
            later.day= o.day;
            later.month = o.month;
            later.year = o.year;
        }
        else
        {
            later.day = t.day;
            later.month = t.month;
            later.year = t.year;
        }


这样,else将始终被调用,在您的实现中,只有当两个第一个条件为true时才调用它,从而导致显示随机位

10-07 14:25