首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。 【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。 在Date类中设计如下重载运算符函
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。 【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。 在Date类中设计如下重载运算符函
admin
2009-02-15
81
问题
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【说明】
设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。
在Date类中设计如下重载运算符函数:
Date operator + (int days) : 返回某日期加上天数得到的日期。
Date operator - (int days) : 返回某日期减去天数得到的日期。
int operator - (Date&b): 返回两日期相差的天数。
【程序】
#include<iostream.h>
int day tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
//day_tab二维数组存放各月天数,第一行对应非闰年,第二行对应闰年class Date
{
int year, month, day //年,月,日
int leap(int); //判断是否闰年
int dton(Date&)
Date ntod(int)
public:
Date() { }
Date (int y, int mint d) I year = y; month = m; day = d;}
void setday(intd){day = d;}
void setmonth(int m) {month = m;}
void setyear(int y) {year =y;}
int getday() {return day;}
int getmonth() {return month:}
int getyear() {return yea;}
Date operator + (int days) //+运算符重载函数
{
static Date date;
int number =(1)
date = ntod(number)
return date
}
Date operator - (int days) //-运算符重载函数
{
staffs Date date;
int number=(2);
number - = days;
date = ntod(number)
return date;
}
int operator - (Date &b) //-运算符重载函数
{
int days=(3);
return days;
}
void disp()
{
cout<<year<<"."<<month<<". "<<day<<endl;
}
};
int Date: :leap( int year)
if((4)) //是闰年
return 1; //不是闰年
else
return0:
}
int Date:: dton( Date &d) //求从公元0年0月0日到d日期的天数
{
inty,m,days =0;
for(y=1;y<=d. year;y++)
if((5))days+ =366; //闰年时加366天
else days + = 365; //非闰年时加365天
for(m =0;m<d. month-1;m++)
if((6))
days += day_tab[1] [m];
else
days +=day_tab[0] [m];
days + = d. day;
return days;
}
Date Date::ntod(intn) //将从元0年0月0日的天数转换成日期
{
int y=1,m = 1,d,rest = n,lp;
while(1)
{ if(leap(y))
if(rest<= 366) break;
else rest - = 366;
else //非闰年
if(rest = 365 ) break;
else rest-=365;
y++;
}
y--;
Ip = leap(y);
while(1)
{
if(lp) //闰年
if(rest>day_tab[1] [m - 1]) rest -= day_tab[1] [m-1];
else break;
else //非闰
if(rest>day_tab[0] [m -1]) rest -= day_tab[0] [m-1];
else break;
m++;
}
d = rest;
return Date(y;m,d);
}
void main()
{
Date now(2003,10,1) ,then(2005,6,5);
cout<<" now:";now. disp();
cout<<" then:";then. disp();
cout<<"相差天数:"<<(then-now)<<endl;
Date dl = now + 1000,d2 = now - 1000;
cout<<"now + 1000:" ;d1. disp();
cout<<" now - 1000:" :d2. disp();
}
选项
答案
(1)dton(*this)+days (2)dton(*this) (3)dton(*this)-(dton(b)-1 (4)year%4 == 0 && year%1O0! = 0‖year%400 =0 (5)leap(y) (6)leap(d.year)
解析
本题程序中对运算符进行重载。其中运算符+表示某日期加上若干天后的日期,第一个“-”表示某日期减去若干天后的日期,第二个“-”表示两日期相差的天数。
函数leap()判断指定的年份是否为闰年,闰年的条件有两个,一是能被4整除,但不能被100整除,或者既能被100整除,又能被400整除,所以(4)空应填入“year%4=0&&year%1001=0"year%400=0”。
函数dton()将指定的日期转换成从0年0月0日起的天数,(5)、(6)空用来判断当前的年份是否为闰年,调用函数leap(),所以分别填入“leap(y)”和“leap(d.year)”。函数ntod将指定的0年0月0日起的天数转换成对应的日期。
“+”运算符重载时,先将当前日期转换为从0年0月0日起的天数,再加上要加的天数,最后将天数再转换成对应的日期。所以(1)空应填入“dton(*this)+days”。
第—个“-”运算符重载时,先将当前日期转换为从0年0月0日起的天数,再减去要减的天数,最后将天数再转换成对应的日期。而天数的相减由语句“number-=days”完成,所以(2)空应填入“dton(*this)”。
第二个“-”运算符重载时,先将两个比较的日期都转换为从0年0月 O日起的天数,再相减,所以(3)空应填入“dton(*this)-dton(b)-1”。
转载请注明原文地址:https://kaotiyun.com/show/QEjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
一批数据可以有多个指标。以下指标中,___________不宜作为这批数据的代表值。
在某机床上加工一批零件,要求其直径控制在1.5±0.2cm。检验员定时抽查测量了产品的直径,并绘制了如下的质量控制图。检验结论是:有()次检查发现质量问题,需要进一步查明原因并改进。
PowerPoint内置的动画效果中,不包括(60)。
以下关于计算机操作系统的叙述中,不正确的是(18)。
某商场的部门和商品两个实体之间的关系如下图所示。假设每个部门负责销售若干种商品,每种商品只能由一个部门负责销售,那么部门和商品之间存在着(14)的联系。
一般来说,收集到的数据经过清洗后,还需要进行分类、排序等工作。这样做的好处主要是(65)________________。
在Word2007中,为使内容更加醒目,文章更具有条理性,可在若干段落前面添加__________。
Windows系统的控制面板不包括__________功能。
(1)是固化在主板ROM内的程序,为计算机提供最底层、最直接的硬件访问和控制。
在用Word软件编辑文档时,若误删除了一个数据,随后可使用______命令进行恢复。
随机试题
国际储备的来源有
患儿,男,5岁。反复水肿1年余。入院后查:尿蛋白(++~+++),红细胞0~10/HP,血尿素氮11.5mmol/L,血浆总蛋白为42g/L,白蛋白15g/L。本例患儿诊断首先考虑
不属于Ⅳ型变态反应的是()
2011年5月28日下午,×县正在建设的某大桥发生坍塌事故,造成64人死亡,22人受伤,直接经济损失3974.7万元。经调查认定,这是一起严重的责任事故。由于施工、建设单位严重违反桥梁建设的法规标准、现场管理混乱、盲目赶工期,监理单位、质量监督部门严重失职
企业在安全生产许可证有效期内,严格遵守有关安全生产的法律法规,未发生死亡事故的,安全生产许可证有效期届满时,经原安全生产许可证颁发管理机关同意,不再审查,安全生产许可证有效期延期()。
甲公司计划本年只生产一种产品,有关资料如下:(1)每季的产品销售货款有60%于当期收到现金,有40%于下个季度收到现金,预计第一季度末的应收账款为3800万元,第二季度的销售收入为8000万元,第三季度的销售收入为12000万元。产品售价为1
下列情况中应计算缴纳城镇土地使用税的是()。
A.患肢短缩,髋屈曲、内收、内旋畸形B.患肢短缩,髋屈曲、内收、外旋畸形C.患肢短缩,髋屈曲、外展、内旋畸形D.患肢短缩,髋屈曲、外展、外旋畸形E.患肢增长,髋伸直、外展、外旋畸形股骨颈骨折内收型可出现
中国互联网用户总数已经居世界第2位。互联网的发展具有两面效应:它阮可以用来传播先进的文化,也可以被用来散布各种文化垃圾;既为人们思想观念的丰富发展提供了新的广阔天地,又为许多负面信息的传播打开了方便之门。事实表明,互联网作为一种以物质为载体的思想和文化存在
【S1】【S9】
最新回复
(
0
)