1、二级 C+机试-93 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)1.使用 VC6 打开考生文件夹下的工程 test29_1,此工程包含一个源程序文件 test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:A:no parametersB:int parameterA:no parametersB:int parameterC:int parameter源程序文件 test29_1.cpp 清单如下;#include iostream.hclass A/* found */private:A() cout“
2、A:no parameters/n“;A(int a) cout“A: int parameter/n“;class B:public Apublic:B(int a)cout“B:int Parameter/n“;/* found */class C:public B,public Apublic:/* found */C(int a) :B(a) cout“C: int parameter/n“; );void main ( )B b(1);C c(2);(分数:30.00)填空项 1:_二、2简单应用题(总题数:1,分数:40.00)2.编写函数 fun(),它的功能是求 n 以内(不包
3、括 n)同时能被 3 与 7 整除的所有自然数之和的平方根 s,并做为函数值返回。例如:n 为 1000 时,函数值应为 s153.909064。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#include conio.h#include math.h#include stdio.hdouble fun(int n)main()clrscr();printf(“s=%f/n“, fun(1000);(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.使用 VC6 打开考生文件夹下的
4、工程 test29_3。此工程包含一个 test29_3.cpp,其中定义了二维坐标类Coordinate 和三维坐标类 ThreeDCoord,其中 ThreeDCoord 类由 Coordinate 类 public 派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类 Coordinate 的保护数据成员 x 和 y,它们都是 int 型的数据,代表二维坐标的横纵坐标值。请在注释“/*1 *”之后添加适当的语句。(2)根据类 Coordinate 定义后的成员函数 Display 的实现,补充该函数在类 Coordinate 定义体内的声明,Display 为
5、二维坐标类的虚函数。请在注释“/*2*。”之后添加适当的语句。(3)完成二维坐标类 Coordinate 的构造函数,将参数 a 和 b 分别赋值给数据成员 x 和 y。请在注释“/*3*”之后添加适当的语句。(4)根据 ThreeDCoord 类构造函数的声明,补充 ThreeDCoord 构造函数的实现,参数 a 和 b 通过调用基类的构造函数来初始化基类的数据成员 x 和 y,c 赋值给数据成员 2。请在注释“/*4*”之后添加适当的语句。输出结果如下;1,23,4,5注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件 tese9_3.cpp 清单如下:#includ
6、eiostream.hclass Coordinateprotected:/* 1 *public:Coordinate(int a=0, int b=0);/* 2 *;Coordinate:Coordinate(int a, int b)/* 3 *void Coordinate:Display() constcout x “, “ y end1;class ThreeDCoord:public Coordinateint z;public:ThreeDCoord(int a=0, int b=0, int c=0);virtual void Display() const;/* 4 *v
7、oid ThreeDCoord:Display() constcout x “, “ y “, “ z end1;void main ( )Coordinate c(1, 2);ThreeDCoord t(3, 4, 5);c.Display ();t.Display ();(分数:30.00)_二级 C+机试-93 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)1.使用 VC6 打开考生文件夹下的工程 test29_1,此工程包含一个源程序文件 test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:A:no
8、parametersB:int parameterA:no parametersB:int parameterC:int parameter源程序文件 test29_1.cpp 清单如下;#include iostream.hclass A/* found */private:A() cout“A:no parameters/n“;A(int a) cout“A: int parameter/n“;class B:public Apublic:B(int a)cout“B:int Parameter/n“;/* found */class C:public B,public Apublic:/
9、* found */C(int a) :B(a) cout“C: int parameter/n“; );void main ( )B b(1);C c(2);(分数:30.00)填空项 1:_ (正确答案:(1)错误:private:正确:public:(2)错误:class C:public B,public A正确:class C:public B(3)错误:C(int a):B(a)cout“C:int parameter/n“;)正确:C(int a):B(a)cout“C:int parameter/n“;)解析:解析 (1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用
10、户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用;(2)A 已经是 B 的基类,C 公有继承 B,A 也就成为了 C 的基类,根据程序的运行结果可知,C 是要公有继承 B;(3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“:”;二、2简单应用题(总题数:1,分数:40.00)2.编写函数 fun(),它的功能是求 n 以内(不包括 n)同时能被 3 与 7 整除的所有自然数之和的平方根 s,并做为函数值返回。例如:n 为 1000 时,函数值应为 s153.909064。注意:部分源程序给出如下。请勿改动主函数 ma
11、in 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#include conio.h#include math.h#include stdio.hdouble fun(int n)main()clrscr();printf(“s=%f/n“, fun(1000);(分数:40.00)_正确答案:(double fun(int n)double s0.0;int i;for(i=0; in;i+) /*从 0n 中找到既能被 3 整除同时又能被 7 整除的数,并将这些数求和*/if (i%3=0s=sqrt (s); /*对 s 求平方根*/return s
12、;)解析:本题的解题思路是逐个取得从 0n 之间的所有数,对每次取得的数进行条件判断,条件是既能被3 整除同时又能被 7 整除,注意:这两个条件要求同时成立,因此用到了“/* 2 *;Coordinate:Coordinate(int a, int b)/* 3 *void Coordinate:Display() constcout x “, “ y end1;class ThreeDCoord:public Coordinateint z;public:ThreeDCoord(int a=0, int b=0, int c=0);virtual void Display() const;/
13、* 4 *void ThreeDCoord:Display() constcout x “, “ y “, “ z end1;void main ( )Coordinate c(1, 2);ThreeDCoord t(3, 4, 5);c.Display ();t.Display ();(分数:30.00)_正确答案:(1)int x;int y;(2)virtual void Display()const;(3)xa;yb;(4)ThreeDCoord:ThreeDCoord(int a,int b,int c):Coordinate(a,b)解析:解析 本题主要考查考生对类数据成员的定义、构造函数、派生类及虚函数的理解,是 C+类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1