1、国家二级 C+机试(操作题)模拟试卷 402及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: 1,2,3,4,5, 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhclass TestClass *error* TestClass(int i) m_i = i; void print() cout+m_i,; public: int m_i;in
2、t main() *error* int i();TestClass data(0); while(i5) *error* i+; dataprint(); coutend1; return 0;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请实现函数 fun(double b,int len)的如下功能: (1)b是一个数组,长度为 len; (2)b0=0,b1=1; (3)bi+2=bi+bi+1; 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 #i
3、nclude void fun(double b,int len) void main() double b128; fun(b,128); for(int i=0;ibi ; if(i6=5) std:cout_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示日期的类 Date,但类 Date的定义并不完整。请按要求完成下列操作,将类 Date的定义补充完成。 (1)定义私有数据成员year、month 和 day,分别用于表示年、月和日,它们都是 int型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认
4、构造函数 Date的定义,使 Date对象的默认值为:year=1,month=1,day=1,请在注释*2*之后添加适当的语句。 (3)完成重载构造函数 Date(int y,int m,int d)的定义,把数据成员 year、month 和 day分别初始化为参数 y、m 和d的值,请在注释*3*后添加适当的语句。 (4)完成成员函数 print()的类外定义,使其以“年一月一日”的格式将 Date对象的值输出到屏幕上,例如:2008-8-8。请在注释*4*之后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#includeiostream
5、hclass Datepublic: *2* Date(int y,int m,int d) *3* void print()const;private: data member *1*;void Date:print()const *4* int main() Date national_day(1949,10,1); national_dayprint(); return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 402答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcp
6、p,该程序运行时有错误,请改正程序中的错误,使得程序输出: 1,2,3,4,5, 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhclass TestClass *error* TestClass(int i) m_i = i; void print() cout+m_i,; public: int m_i;int main() *error* int i();TestClass data(0); while(i5) *error* i+; dataprint(); coutend1; return 0;(
7、分数:2.00)_正确答案:(正确答案:(1)public:TestClass(int i) (2)int i(10); (3)i-;)解析:解析:(1)打开 moid1cpp 调试程序,显示错误提示为第一标识下“modi1cpp(20):error C2248:TestClass:TestClass:cannot access private memberdeclared in class“TestClass“,提示类 TestClass中的构造函数 TestClass被定义为私有的,无法获得,所以这里应该是 public,即“public:TestClass(int i)”。 (2)题目中
8、要求输出结果为 1,2,3,4,5,即循环 5次。第三个表示 while循环条件是 i大于 5就进行循环。“int i();”应该实现变量 i的初始化,题干中要求不能删除 i初始化中的括号,所以在括号中添加 i的初始值。大于 5且循环 5次,所以 i的初始值为 10,而while循环中对 i的操作应该是 i-,这样第二个和第三个标示下应该是“int i(10);”和“i-;”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请实现函数 fun(double b,int len)的如下功能: (1)b是一个数组,长度为 len; (2)
9、b0=0,b1=1; (3)bi+2=bi+bi+1; 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 #include void fun(double b,int len) void main() double b128; fun(b,128); for(int i=0;ibi ; if(i6=5) std:cout_正确答案:(正确答案:if(len0)最小值位置 b0=0; 赋值第一个元素 if(len1) b1=1; 赋值第二个元素 for(int i=2;ilen;i+) bi=bi1+bi-2;将两个元素之和赋予当前元素)解析
10、:解析:(1)判断数组长度,如果存在第一个元素,那么将第一个元素赋值为 0,即 b0=0;。 (2)然后再判断数组长度,如果存在第二个元素,那么将第二个元素赋值为 1,即 b1=1;。 (3)最后从第三个元素到数组最后一个元素,赋直 bi=bi1+bi2;。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示日期的类 Date,但类 Date的定义并不完整。请按要求完成下列操作,将类 Date的定义补充完成。 (1)定义私有数据成员year、month 和 day,分别用于表示年、月和日,它们都是 int型的数据。请在注
11、释*1*之后添加适当的语句。 (2)完成默认构造函数 Date的定义,使 Date对象的默认值为:year=1,month=1,day=1,请在注释*2*之后添加适当的语句。 (3)完成重载构造函数 Date(int y,int m,int d)的定义,把数据成员 year、month 和 day分别初始化为参数 y、m 和d的值,请在注释*3*后添加适当的语句。 (4)完成成员函数 print()的类外定义,使其以“年一月一日”的格式将 Date对象的值输出到屏幕上,例如:2008-8-8。请在注释*4*之后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中
12、的任何内容。#includeiostreamhclass Datepublic: *2* Date(int y,int m,int d) *3* void print()const;private: data member *1*;void Date:print()const *4* int main() Date national_day(1949,10,1); national_dayprint(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:int year,month,day; (2)添加语句:Date()year=1;month=1;day=1; (
13、3)添加语句:year=y;month=m;day=d; (4)添加语句:coutyear“-“month“-“dayend1;)解析:解析:(1)题目 1要求“定义私有数据成员 year、month 和 day,分别用于表示年、月和日,它们都是 int型的数据”。在 C+程序的 privte区域中添加变量 year、month、day 的定义,即在第 1个标识下添加“int year,month,day;”。 (2)题目 2要求“完成默认构造函数 Date的定义,使 Date对象的默认值为:year=1,month=1,day=1”。在 C+中,构造函数是一种特殊的成员函数,它的名字与类同名
14、。在 Date构造函数体内,根据题目要求,设置变量默认值“year=1,month=1,day=1”,即:“Date()year=1;month=1;day=1;”。 (3)题目 3要求“完成重载构造函数 Date(int y,intm,int d)的定义,把数据成员 year、month 和 day分别初始化为参数 y、m 和 d的值。”在构造函数 Date(inty,int m,int d)的函数体内,即标识 3下,添加赋值语句,将 y,m,d 赋值给 year,month,day,即“year=y;month=m;day=d;”。 (4)题目 4要求“完成成员函数 print()的类外定义,使其以“年一月一日”的格式将 Date对象的值输出到屏幕上”。在程序中的 void Date:print() const 函数体内,标识 4下,添加输出语句。根据 cout输出格式,实现题目中的输出要求, 即“coutyear“-“month“-“dayend1;”。