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