1、二级 C+-82 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC+6.0 打开 下的源程序文件 1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: 9,8,7,6,5 注意:错误的语句在/*error*/的下面,修改该语句即可。其他的语句不能修改。 试题程序: #includeiostream.h class TC /*error*/ TC(int i) m_i=i; void print() cout-m_i“,“; public: int m_i; ; int main() /*error*/ int
2、 i(); TC obj(10); while(i5) /*error*/ i+; obj.print(); coutendl; return 0; (分数:30.00)_二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp,请实现函数 fun(double a,int len)的如下功能: (1)a是一个数组,长度为 len。 (2)a0=0,a1=1。 (3)ai+2=ai+ai+1。 注意:不能修改函数的其他部分。 试题程序: #includeiostream void fun(double a,int len) void main()
3、double a20; fun(a,20); for(int i=0;i20;i+) std:coutai“; if(i%6=5) std:coutstd:endl; return; (分数:30.00)_三、综合应用题(总题数:1,分数:40.00)3.使用 VC+6.0 打开 下的源程序文件 3.cpp。请完成以下部分,实现在屏幕上输出为 C3 C2 这个程序需要修改的部分,请按照以下部分实现。 (1)类 C0 不能被实例化,请定义一个纯虚函数 print,在注释 1 后添加适当的语句。 (2)类 C1 私有虚继承类 C0,请在注释 2 后添加适当的语句。 (3)类 C2 公有继承于 C0
4、,请在注释 3 后添加适当的语句。 (4)类 C3 公有继承于 C2 与 C1,请在注释 4 后添加适当的语句。 注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 试题程序: #includeiostream.h class C0 /*1* ; /*2* class C1: public: void print() cout“C1“endl; ; /*3* class C2: public: void print() cout“C2“endl; ; /*4* class C3: public“ void print() cout“C3“endl; ; void m
5、ain() C3 obj3; C2 obj2; obj3.print(); obj2.print(); return; (分数:40.00)_二级 C+-82 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC+6.0 打开 下的源程序文件 1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出: 9,8,7,6,5 注意:错误的语句在/*error*/的下面,修改该语句即可。其他的语句不能修改。 试题程序: #includeiostream.h class TC /*error*/ TC(int i) m_i=i;
6、 void print() cout-m_i“,“; public: int m_i; ; int main() /*error*/ int i(); TC obj(10); while(i5) /*error*/ i+; obj.print(); coutendl; return 0; (分数:30.00)_正确答案:()解析:(1)应添加“public:”。 (2)“int i()”应改为“int i(10);”。 (3)“i+;”应改为“i-;”。 答案考生文件夹 解析 本题主要考查的是成员的访问属性。成员的访问属性有公有、保护和私有 3 种,而默认的访问属性为私有,只有公有成员才能通过
7、类的对象被访问。故应在构造函数前添加”public:”,否则该类无法被实例化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者。本题要求输出 5 个数,while 的循环变量 i 每次减 1,在 i5 时循环,故 i 初始化应为10。若循环中 i 每次增 1,则循环永远不会退出。二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp,请实现函数 fun(double a,int len)的如下功能: (1)a是一个数组,长度为 len。 (2)a0=0,a1=1。 (3)ai+2=ai+ai+1。 注意:不能修
8、改函数的其他部分。 试题程序: #includeiostream void fun(double a,int len) void main() double a20; fun(a,20); for(int i=0;i20;i+) std:coutai“; if(i%6=5) std:coutstd:endl; return; (分数:30.00)_正确答案:()解析:void fun(double a,int len) if(len0) a0=0; if(len1) a1=1; for(int i=2;ilen;i+) ai=ai-1+ai-2; 答案考生文件夹 解析 本题考查的是计算数列值。
9、首先给 a0和 a1赋初值,注意判断数组是否越界,然后循环遍历 a2alen-1,根据题目给出关系计算每一个元素的值。三、综合应用题(总题数:1,分数:40.00)3.使用 VC+6.0 打开 下的源程序文件 3.cpp。请完成以下部分,实现在屏幕上输出为 C3 C2 这个程序需要修改的部分,请按照以下部分实现。 (1)类 C0 不能被实例化,请定义一个纯虚函数 print,在注释 1 后添加适当的语句。 (2)类 C1 私有虚继承类 C0,请在注释 2 后添加适当的语句。 (3)类 C2 公有继承于 C0,请在注释 3 后添加适当的语句。 (4)类 C3 公有继承于 C2 与 C1,请在注释
10、 4 后添加适当的语句。 注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 试题程序: #includeiostream.h class C0 /*1* ; /*2* class C1: public: void print() cout“C1“endl; ; /*3* class C2: public: void print() cout“C2“endl; ; /*4* class C3: public“ void print() cout“C3“endl; ; void main() C3 obj3; C2 obj2; obj3.print(); obj2.p
11、rint(); return; (分数:40.00)_正确答案:()解析:(1)应添加“virtual void print()=0;”。 (2)“class C1:”应改为“class C1:virtual private C0”。 (3)”Class C2:”应改为“class C2:public C0”。 (4)“class C3:”应改为“class C3:public C2,public C1”。 答案考生文件夹 解析 本题考查了类的继承。根据题意,第 1 处应该添加“virtual void print()=0;”。第 2 处根据题意,在冒号后面应添加“virtual private C0”。第 3 处根据题意,冒号后应添加“public C0”。第 4 处根据题意,冒号后应添加“public C2,public C1”。