1、国家二级( C+)机试模拟试卷 97及答案与解析 一、选择题 1 有如下程序: #include using namespace std; class A public: A() cout using namespace std; class Base int x; public: Base(int n=0): x(n) cout p2; MyTemp p33; 编译系统在处理上钢琴 -无名面的语句序列时,所生成的模板 MyTemp 的实例的个数是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 8 Windows环境下,由 C+源程序文件编译而成的目标文件的扩展名是 ( A) obj
2、 ( B) exe ( C) cpp ( D) out 9 有如下程序: #include using namespace std; class XB int a; public: static int b; XB(int aa):a(aa) b+; XB() b-; int get() return a; ; int XB:b=0; int main() XB d(2); int n=d.get()+XB(3).get(); cout using namespace std; class Base public: Base() couta = a; / static int g() retu
3、rn a; / void h(int b) Test:b = b; ; / private: int a; static int b; const int c; ; int Test:b = 0; 在标注号码的行中,能被正确编译的是 ( )。 ( A) ( B) ( C) ( D) 16 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 17 有如下类定义: class AA int a; public: AA(int n=0):a(n) ; class BB :public AA public: BB(int x) _ ; 其中划
4、线处应填写的内容是 ( A) :AA(x) ( B) :a(n) ( C) a(x); ( D) a=x; 18 假定在一个程序中执行到语句: cout using namespace std; class Base protected: Base() cout using namespace std; class XB int a; public: static int b; XB(int aa):a(aa) b+; XB() b-; int get() return a; ; int XB:b=0; int main() XB d(2); int n=d.get()+XB(3).get()
5、; coutclassA; ( B) templateclassA; ( C) templateclassA; ( D) templateclassA; 31 设变量 x和 y为整型变量,若有函数调用为 “fun( ( B) voidfun(int ( C) voidfun(int*a,int ( D) voidfun(int*a,int*b) 32 有如下类声明: class How int k; public: How(int n):k(n) How(How 则类 How所拥有的构造函数的数量是 ( A) 2 ( B) 3 ( C) 4 ( D) 5 33 在数据管理技术发展的三个阶段中,
6、数据共享最好的是 ( )。 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)三个阶段相 同 34 派生类的成员函数不能访问基类的 ( )。 ( A)公有成员和保护成员 ( B)公有成员 ( C)私有成员 ( D)保护成员 35 软件测试的目的是 ( )。 ( A)评估软件可靠性 ( B)发现并改正程序中的错误 ( C)改正程序中的错误 ( D)发现程序中的错误 36 下列运算符函数中,肯定不属于类 Number的成员函数的是 ( A) Numberoperator+(Number); ( B) Numberoperator-(Number); ( C) Number
7、operator*(int); ( D) Numberoperator/(Number,Number); 37 下列关于 C+流的叙述中,正确的是 ( A)与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现 ( B)从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作 ( C) cin是一个预定义的输入流类 ( D)输出流有一个名为 open的成员函数,其作用是生成一个新的流对象 38 已知 int型变量 y的初值是 5,但在执行语句 “f(y);“后, y的值被改变,因此该语句所调用函数的原型是 ( A) voidf(intx); ( B) voidf(int*x); (
8、 C) voidf(constint*x); ( D) voidf(int 39 下列关于模板的表述中,正确的是 ( A)如果一个类中存在纯虚函数,这个类就是类模板 ( B)函数模板不能有形式参数表 ( C)类模板是一种参数化类型的类,是类的生成器 ( D)类模板中不能包含构造函数 40 下列关于类定义的说法中,错误的是 ( A)类定义中包括数据成员和函数成员的声明 ( B)类成员的缺省访问权限是私有的 ( C)数据成员必须被声明为私有的 ( D)成员函数可以在类体外进行定义,也可以在类体内进行定义 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 pmjl下的工程 pro
9、j1,其中在编辑窗口内显示的主程序文件中定义有类 ABC和主函数 IIlain。程序文本中位于每行 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: 2123 注意:只修改每个 “ ERROR*found*”下面的一行,不要改动程序中的其他任何内容。 #include usingnamespacestd; classABC public: ERROR*: found* ABC()a=0; b=0; c=0; ABC(intaa, intbb, intcc); voidSetab()+a, +b; intSum()returna+b+c; privat
10、e: inta, b; constintc; ; KBC: ABC(intaa, intbb, intcc): c (cc)a=aa; b=bb; intmain() ABCx(1, 2, 3), y(4, 5, 6); ABCz, *w= ; 所以 B选项正确。 26 【正确答案】 B 【试题解析】 A和 B 为一对多的联系,则对于 A中的每一个实体, B 中有多个实体与之联系,而 B与 C为一对一联系,则对于 B中的每一个实体, C中之多有一个实体与之联系,则可推出对于 A中的每一个实体, C中有多个实体与联系,所以为一对多联系。 27 【正确答案】 B 【试题解析】 本题考查类的构造函数
11、和静态数据成员,题目中定义了类的静态数据成员 b,当执行定义对象 d(2)和 XB(3).get()时执行构造函数,构造函数执行b+,所以 b最终为 2,而 d.get()为 2,最终结果为 6, B选项正确。 28 【正确答案】 B 【试题解析】 算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序 ,A选项错误。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果, C选项错误。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的, D选项错误。算法在实现时需要用具体的程序设计
12、语言描述,所以程序可以作为算法的一种描述方法, B选项正确。 29 【正确答案】 C 【试题解析】 流运算符 “Sum(); 【试题解析】 (1)主要考查考生对构造函数的掌握情况,根据私有成员的定义:constintc;可知, c为常变量,因此构造函数必须使用成员列表初始化来给 c赋初始值。 (2)主要考查考生对类的指针的掌握情况,根据主函数的第一条语句: ABCx(1,2, 3), y(4, 5, 6);可知, x和 y都是 ABC类,但不是指针,因此它们调用 ABC类的成员函数要使用标识符 “ ”,而不是 “-”。 (3)主要考查考生对类的指针的掌握情况,根据主函数的第二条语句: ABCz
13、,*w=&z;可知, w 是 ABC类的指针,指向 z,因此 w调 用 ABC类的成员函数时要使用标识符 “-”,而不是 “ ”。 三、简单应用题 42 【正确答案】 (1)point getX()+width, point getY()+height (2)radius*radius (3)center getX()一 radius, center getY()一 radius (4)2*radius 【试题解析】 (1)主要考查考生对成员函数的掌握,程序要求返回右下角顶点,该点的 x坐标为左上角顶点的 x坐标加上 width,该点的 y坐标为左上角顶点 y坐标加上 height,即 ret
14、urnPoint(point getX()+width, point getY()+height);。 (2)主要考查考生对成员函数的掌握,程序要求计算圆形面积,也就是返回圆面积,即 retumPI*radius*radius;。 (3)主要考查考生对成员函数的掌握,首先看函数声明: RectangleCircle:boundingBox()const,可知该函数要返回的是一个 Rectangle类型,即要返回的是圆的外切矩形。再看 Rectangle类的构造函数 Rectangle(Pointp, intw, inth),由此可知,空格处要定义的点 pt为左上角点,即 Pointpt(cen
15、ter getX()一 radius,center getY()一 radius);。 (4)由函数声明和 Rectangle类的构造函数可知, w和 h 应该为直径,即w=h=2*radius;。 四、综合应用题 43 【正确答案】 Inttemp=0; 定义整数变量 temp,并赋值为零 for(inti=0; iM; i+) 遍历矩阵的行 for(intj=0; jN; j+) 遍历短阵的列 if(temparrayij) 如果 temp小于 arrayij temp=arrayij; 把 arrayij赋值给 tempreturntemp;返回 temp 【试题解析】 主要考查考生对二维数组的掌握,题目要求成员函数 max_value的功能是求出所有矩阵元素中的最大值。因此只要逐个元素比较即可,下标 i和 j作为矩阵行和列的标记,使用双层 for循环来遍历数组中的所有元素。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1