1、二级 C+机试-152 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,但该程序运行有问题,请改正 main()函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/*found*/的下而。修改该语句即可,其他的语句不能修改。试题程序:#includeiostream.hclass C0public:/*error*/static int n=0;C0()n+;C0()(n-;/*error*/int C0:n;void main()Co obj;CO obj27;
2、C0 *C=NULL;c=obj;/*error*/coutc.nend1;toutC0:nend1;(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。阅读下列函数说明和代码,补充空出的代码。函数 fun(doubleA55)返回二维数组中大于本行平均数的所有数之和。注意:部分代码已经实现,请勿改动 main 函数代码。试题程序:#includeiostream.hdouble 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)end1;return;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)使用 VC6 打开考生文件夹下的源程序文件 3.cpp,其中定义了类 A、A1 和 A2,其中 A1 类由 A 类公
4、有派生,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。请在注释“/*3*”之后添加适当的
5、语句。(4)完成类 A2 的成员函数 show 的定义,该函数调用基类成员函数,输出基类书局成员 a 和 b 及类 A2 自身的数据成员 c 的值,上述 3 个值在输出时以空格隔开。请在注释“/*4*”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。程序输出结果如下:737 3 8注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。试题程序:#includeiostream.hclass Aint a;public:/*1*int geta()return a;class A1:public Aint b;public:/*2*int getb()ret
6、urn b;class A2:public A1int c;public:/*3*void show()/*4*;void main()A2 a(8,3,7);couta.geta()end1;couta.getb()end1;a.show();(分数:30.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_二级 C+机试-152 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,但该程序运行有问题,请改正 main()函数中的错误,使该程序的输出结果正确。程序输出:88注意
7、:错误的语句在/*found*/的下而。修改该语句即可,其他的语句不能修改。试题程序:#includeiostream.hclass C0public:/*error*/static int n=0;C0()n+;C0()(n-;/*error*/int C0:n;void main()Co obj;CO obj27;C0 *C=NULL;c=obj;/*error*/coutc.nend1;toutC0:nend1;(分数:30.00)填空项 1:_ (正确答案:“static int n=0”应改为“static int n;”。)解析:填空项 1:_ (正确答案:“int C0:n;”应
8、改为“int C0:n=0;”。)解析:填空项 1:_ (正确答案:“coutc.nend1;”应改为“coutcnend1;”。)解析:解析 本题要在屏幕上输出两个字符,首先要静态变量初始化,第 1 处应改为“static int n;”,第 2 处要给 n 赋值,第 3 处输出时引用 c 的对象,应改为“coutcnend1;”。二、2简单应用题(总题数:1,分数:40.00)1.使用 VC+6.0 打开考生文件夹下的源程序文件 2.cpp。阅读下列函数说明和代码,补充空出的代码。函数 fun(doubleA55)返回二维数组中大于本行平均数的所有数之和。注意:部分代码已经实现,请勿改动
9、main 函数代码。试题程序:#includeiostream.hdouble 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)end1;return;(分数:40.
10、00)_正确答案:(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 列的数,先求出每行的平均值,然后查找本行中大于平均值的数,然后求和,最后返回和值。三、3综合应用题(总题数:1,分数:30.00)使用 VC6 打开考生文
11、件夹下的源程序文件 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,在构造函数中请将 X 赋值给数据成员 c,将 y
12、和 z 分别赋值给基类 A1 构造函数的参数 x 和 y。请在注释“/*3*”之后添加适当的语句。(4)完成类 A2 的成员函数 show 的定义,该函数调用基类成员函数,输出基类书局成员 a 和 b 及类 A2 自身的数据成员 c 的值,上述 3 个值在输出时以空格隔开。请在注释“/*4*”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。程序输出结果如下:737 3 8注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。试题程序:#includeiostream.hclass Aint a;public:/*1*int geta()return a;c
13、lass A1:public Aint b;public:/*2*int getb()return b;class A2:public A1int c;public:/*3*void show()/*4*;void main()A2 a(8,3,7);couta.geta()end1;couta.getb()end1;a.show();(分数:30.00)填空项 1:_ (正确答案:“A(int x)a=x;”。)解析:填空项 1:_ (正确答案:“A1(int x,int y):A(y)b=x;”。)解析:填空项 1:_ (正确答案:“A2(int x,int y,int z):A1(y,z)c=x;”。)解析:填空项 1:_ (正确答案:“coutgeta()“getb()“cend1;”。)解析:解析 本题第 1 处要求定义类 A 的构造函数,该构造函数有一个整型的参数 x,在构造函数中请将 x 赋值给数据成员 a,构造函数没有返回值类型,所以应填“A(int x)a=x;”。第 2 处第 3 处根据继承中对象的初始化语法规则可知。第 4 处要求调用基类成员函数,由于都是公有继承,geta()、getb()都是自身类的公有函数,所以根据继承规则在对象 A2 中,依然是公有的可以通过对象 A2 直接调用。