1、国家二级 C+机试(操作题)模拟试卷 436及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: CMyObject, in the constmtor CMyObject, in the destrutor 注意:错误的语句在 *error*的下面,修改该语句即可。 #include class CMyObject *error* *error* CMyObjectcout int func(int year, int month, int day) void main()
2、 cout template class MyArrayClass private: T* data; int length; public: MyArrayClass(int len) length=fen; *1* MyArrayClass() *2* T&operator(int i) *3* bool SetElement(int i, T t) *4* if() datai=t; return true; return false; ; int main() MyArrayClassobj(5); obj3=1; cout2) sum+; return sum; 【试题解析】 (1)
3、为方便起见,先统计正常年份下,每个月的前面有多少天,可以用 switch方式查询,然后再加上本月的日子,很快便得到了这一天是属于这一年的第几天。 (2)闰年的判断方法为: if(year 400=0(year 4=0&year 100! =0), if语句为真则为闰年,二月之后的日期后需要加一天。 三、综合应用题 3 【正确答案】 (1)添加语句: data=new Tlen; (2)添加 语句: deletedata; (3)添加语句: return datai; (4)将 “if()”补充完整为: if(ilength) 【试题解析】 (1)构造函数完成成员变量的初始化,在 MyArray
4、Class(int men)函数中申请数组的大小的内存空间,应该用 new申请动态存储空间, Flew返回一个指向其操作数类型变量的指针,第 1个标识下即将 new返回的指针赋值给 data指针,因此第 1个标识下应添加 “data=new Tlen; ”。 (2)析构函数完成资源的释放,删除由 new申请的内存 资源,因此第 2个标识下应添加 “deletedata; ”。 (3)T&operator(int i)函数重载运算符 “”,返回指定下标的数据,因此第 3个标识下应添加 “returndatai; ”。 (4)SetElement(int i, Tt)是设置指定下标的数据,数组下标不能超限,函数体中的if()用来判断下标位置是否超限,因此第 4个标识下应添加 “if(ilength)”。