嗨,我正在开发一个程序,该程序应显示两个日期中的后一个,它需要接受两个日期结构并返回其中的后一个。后者为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时才调用它,从而导致显示随机位