1、二级 C+-9-2 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC+6.0 打开 下的源程序文件 1.cpp,但该程序运行有问题,请改正 main()函数中的错误,使该程序的输出结果正确。 程序输出: 8 8 注意:错误的语句在/*error*/的下面。修改该语句即可,其他的语句不能修改。 试题程序: #includeiostream.h class C0 public: /*error*/ static int n=0; C0() n+; C0() n-; ; /*error*/ int C0:n; void main()
2、C0 obj; C0 obj27; C0*c=NULL; c= /*error*/ coutc.nendl; coutC0:nendl; (分数:30.00)_二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp。阅读下列函数说明和代码,补充空出的代码。函数fun(doubleA55)返回二维数组中大于本行平均数的所有数之和。 注意:部分代码已经实现,请勿改动 main 函数代码。 试题程序: #includeiostream.h double fun(double A55) void main() double A55= 4431.3,45.
3、56,5697.65,768.678,122.45, 444.4,34.545,5667.656,2548.678,1562.45, 537.3,655.5456,5677.65,7168.678,1242.45, 134.3,454.5486,5637.65,7687.678,1322.45, 189.3,445.5786,5677.65,7528.678,142.45 ; coutfun(A)endl; return; (分数:30.00)_三、综合应用题(总题数:1,分数:40.00)3.使用 VC+6.0 打开 下的源程序文件 3.cpp,其中定义了类 A、A1 和 A2,其中 A1
4、类由 A 类公有派生,A2类由 A1 类公有派生。 (1)定义类 A 的构造函数,该构造函数有一个整型的参数 x,在构造函数中请将 x 赋值给数据成员 a。请在注释“/*1*”之后添力口适当的语句。 (2)定义类 A1 的构造函数,该构造函数有两个整型的参数 x 和 y,在构造函数中请将 x 赋值给数据成员b,将 y 作为基类 A 构造函数的参数值传入。请在注释“/*2*”之后添加适当的语句。 (3)定义类 A2 的构造函数,该构造函数有 3 个整型的参数 x,y 和 z,在构造函数中请将 x 赋值给数据成员 c,将 y 和 z 分别赋值给基类 A1 构造函数的参数 x 和 y。请在注释“/*
5、3*”之后添加适当的语句。 (4)完成类 A2 的成员函数 show 的定义,该函数调用基类成员函数,输出基类数据成员 a 和 b 及类 A2 自身的数据成员 c 的值,上述 3 个值在输出时以空格隔开。请在注释“/*4*”之后添加适当的语句。 程序输出结果如下: 7 3 7 3 8 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 试题程序: #includeiostream.h class A int a; public: /*1* int geta() return a; ; class A1:public A int b; public: /*2* int getb() r
6、eturn b; ; class A2:public A1 int c; public: /*3* void show() /*4* ; void main() A2 a(8,3,7); couta.geta()endl; couta.getb()endl; a.show(); (分数:40.00)_二级 C+-9-2 答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC+6.0 打开 下的源程序文件 1.cpp,但该程序运行有问题,请改正 main()函数中的错误,使该程序的输出结果正确。 程序输出: 8 8 注意:错误的语句在/*
7、error*/的下面。修改该语句即可,其他的语句不能修改。 试题程序: #includeiostream.h class C0 public: /*error*/ static int n=0; C0() n+; C0() n-; ; /*error*/ int C0:n; void main() C0 obj; C0 obj27; C0*c=NULL; c= /*error*/ coutc.nendl; coutC0:nendl; (分数:30.00)_正确答案:()解析:(1)“static int n=0”应改为“static int n;”。 (2)“int C0:n;”应改为“int
8、 C0:n=0;”。 (3)“coutc.nendl;”应改为“coutc-nendl;”。 答案考生文件夹 解析 本题要在屏幕上输出两个字符,首先要静态变量初始化,第 1 处应改为“static int n;”,第 2 处要给 n 赋值,第 3 处输出时引用 c 的对象,应改为“coutc-nendl;”。二、简单应用题(总题数:1,分数:30.00)2.使用 VC+6.0 打开 下的源程序文件 2.cpp。阅读下列函数说明和代码,补充空出的代码。函数fun(doubleA55)返回二维数组中大于本行平均数的所有数之和。 注意:部分代码已经实现,请勿改动 main 函数代码。 试题程序: #
9、includeiostream.h double fun(double A55) void main() double A55= 4431.3,45.56,5697.65,768.678,122.45, 444.4,34.545,5667.656,2548.678,1562.45, 537.3,655.5456,5677.65,7168.678,1242.45, 134.3,454.5486,5637.65,7687.678,1322.45, 189.3,445.5786,5677.65,7528.678,142.45 ; coutfun(A)endl; return; (分数:30.00)_
10、正确答案:()解析:double fun(double A55) double sum2=0.0; for(int i=0;i5;i+) double sum1=0.0; int j=0; for(j=0;j5;j+) sum1+=Aij; sum1/=5; for(j=0;j5;j+) if(Aijsum1) return sum2; 答案考生文件夹 解析 本题要实现的功能是返回二维数组中大于本行平均数的所有数之和,数组的下标是从 0 开始的,所以数组中有 5 行 5 列的数,先求出每行的平均值,然后查找本行中大于平均值的数,然后求和,最后返回和值。三、综合应用题(总题数:1,分数:40.0
11、0)3.使用 VC+6.0 打开 下的源程序文件 3.cpp,其中定义了类 A、A1 和 A2,其中 A1 类由 A 类公有派生,A2类由 A1 类公有派生。 (1)定义类 A 的构造函数,该构造函数有一个整型的参数 x,在构造函数中请将 x 赋值给数据成员 a。请在注释“/*1*”之后添力口适当的语句。 (2)定义类 A1 的构造函数,该构造函数有两个整型的参数 x 和 y,在构造函数中请将 x 赋值给数据成员b,将 y 作为基类 A 构造函数的参数值传入。请在注释“/*2*”之后添加适当的语句。 (3)定义类 A2 的构造函数,该构造函数有 3 个整型的参数 x,y 和 z,在构造函数中请
12、将 x 赋值给数据成员 c,将 y 和 z 分别赋值给基类 A1 构造函数的参数 x 和 y。请在注释“/*3*”之后添加适当的语句。 (4)完成类 A2 的成员函数 show 的定义,该函数调用基类成员函数,输出基类数据成员 a 和 b 及类 A2 自身的数据成员 c 的值,上述 3 个值在输出时以空格隔开。请在注释“/*4*”之后添加适当的语句。 程序输出结果如下: 7 3 7 3 8 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 试题程序: #includeiostream.h class A int a; public: /*1* int geta() return a
13、; ; class A1:public A int b; public: /*2* int getb() return b; ; class A2:public A1 int c; public: /*3* void show() /*4* ; void main() A2 a(8,3,7); couta.geta()endl; couta.getb()endl; a.show(); (分数:40.00)_正确答案:()解析:(1)“A(int x) a=x;”。 (2)“A1(int x,int y):A(y) b=x;”。 (3)“A2(int x,int y,int z):A1(y,z) c=x;”。 (4)“coutgeta()“ “getb()“ “cendl;”。 答案考生文件夹 解析 本题第 1 处要求定义类 A 的构造函数,该构造函数有一个整型的参数 x,在构造函数中请将 x 赋值给数据成员 a,构造函数没有返回值类型,所以应填“A(int x) a=x;”。第 2 处第3 处根据继承中对象的初始化语法规则可知。第 4 处要求调用基类成员函数,由于都是公有继承,geta()、getb()都是自身类的公有函数,所以根据继承规则,在对象 A2 中,依然是公有的可以通过对象 A2 直接调用。