请使用“答题"菜单或使用VC6打开考生文件夹proj1下的工程proj1。此工程包含程序文件main.cpp。程序中位于每个//ERROR************found************下的语句行有错误,请加以更正。更正后程序的输出应该是:
1958年3月23日比2001年11月5日更早
2001年11月5日比1958年3月23日更晚
2001年11月5日与2001年11月5日是同一日期
注意:只能修改每个//ERROR************found************下的那一行,不要改动程序中的其他内容。
//源程序
#include <iostream>
using namespace std;
class Date
int year;
int month;
int day;
public:
//ERROR************found************
Date(int yyyy, int mm, int dd): yyyy(year),mm(month),dd(day)
bool isLaterThan(Date dt) const //当前日期晚于日期dt时返回true
if(year!=dt.year) return year>dt.year;
if(month!=dt.month) return month>dt.month;
return day>dt.day;
bool isEarlyThan(Date dt) const //当前日期早于日期dt时返回true
if(year!=dt.year) return year<dt.year;
if(month !=dt.month) return month<dt.month;
//ERROR************found************
return day>dt.day;
void showDate() const cout<<year<<"年"<<month<<"月"<<day<<"日";
;
//ERROR************found************
void compareDate(Date dt1 Date dt2) const
if(dt1.isLaterThan(dt2))
dt1.showDate();cout<<"比";dt2.showDate();cout<<"更晚"<<endl;
else if(dt1.isEarlyThan(dt2))
dt1.showDate();cout<<"比";dt2.showDate();cout<<"更早"<<endl;
else
dt1.showDate();cout<<"与";dt2.showDate();cout<<"是同一日期"<<endl;
int main()
Date dt1(1958,3,23),dt2(2001,11,5);
compareDate(dt1,dt2);
compareDate(dt2,dt1);
compareDate(dt2,dt2);
return 0:
参考答案:
A)Date(int yyyy, int mm, int dd): year(yyyy),month(mm),day(dd){}
B)return day<dt.day;
C)void compareDate(Date dtl,Date dtB){
解析:
1)构造函数为数据成员初始化赋值时,数据成员在前,初始值应该在随后的括号中。
2) isEarlyThan(Date dt)是当前日期早于日期dt时返回true,所以应该是"<"而不是">"。
3) compareDate不能定义为const函数,因为有参数。