自考C++程序设计2015年4月试题
自考C++程序设计2015年4月试题及答案解析
自考C++程序设计2015年4月试题及答案解析,该试卷为自考C++程序设计历年真题试卷,包含答案及详细解析。
一、单项选择题(本大题共20小题,每小题1分,共20分。)在每小题列出的备选项中只有一项是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均不得分。
1.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,C++在求解问题方法上进行的最大改进是( )
A.面向过程
B.面向对象
C.安全性
D.复用性
2.结构化程序设计所规定的三种基本控制结构是( )
A.输入、处理、输出
B.树形、网形、环形
C.顺序、选择、循环
D.主程序、子程序、函数
3.关于函数模板,描述错误的是( )
A.函数模板必须由程序员实例化为可执行的函数模板
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
4.作用域运算符“::”的功能是( )
A.标识作用域的级别的
B.指出作用域的范围的
C.给定作用域的大小的
D.标识成员是属于哪个类的
5.采用重载函数的目的是( )
A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性
6.以下关键字不能用来声明类的访问权限的是( )
A.public
B.private
C.static
D.protected
7.有如下类声明“class A{int x; …};”,则A类的成员x是( )
A.公有数据成员
B.私有数据成员
C.公有成员函数
D.私有成员函数
8.下列不是构造函数的特征的是( )
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置缺省参数
D.构造函数不能重载
9.通常的拷贝构造函数的参数是( )
A.某个对象名
B.某个对象成员名
C.某个对象的引用
D.某个对象的指针名
10.下列哪个类型函数不适合声明为内联函数?( )
A.函数体语句较多
B.函数体语句较少
C.函数执行时间较短
D.函数执行时间过长
11.设x和y均为bool量,则x&&y为真的条件是( )
A.它们均为真
B.其中一个为真
C.它们均为假
D.其中一个为假
12.对于友元描述正确的是( )
A.友元是本类的成员函数
B.友元不是本类的成员函数
C.友元不是函数
D.友元不能访问本类私有成员
13.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )
A.public成员
B.private成员
C.protected成员
D.友元
14.在C++语言中,080是( )
A.八进制数
B.十进制数
C.十六进制
D.非法数
15.下面函数原型声明中,声明了fun为虚函数的是( )
A.void fun( )=0
B.virtual void fun( )=0
C.virtual void fun( )
D.virtual void fun( ){ }
16.下列虚基类的声明中,正确的是( )
A.class virtual B:public A
B.class B:virtual public A
C.class B:public A virtual
D.virtual class B:public A
17.下列运算符中,在C++语言中不能重载的是( )
A.*
B.﹥=
C.::
D./
18.在C++语言中,能代表逻辑值“假”的是( )
A.小于0的数
B.大于0的数
C.非0整数
D.0
19.以下叙述中不正确的是( )
A.在一个函数中,可以有多条return语句
B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值
D.不同的函数中可以使用相同名字的变量
20.已知:int m=10;在下列表示引用的方法中,下列哪一项是正确的?( )
A.int&x=m
B.int &y=10
C.int &z
D.float &t=&m
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。
11.对象的核心概念就是通常所说的继承、封装和__________。
12.cin后面的符号是:﹥﹥,cout后面的符号是__________。
13.面向对象编程的英文缩写是__________。
14.已知x=2,y=3,x﹤y的值是__________。
15.执行下列代码: double pi= 3.1415926; cout﹤﹤setprecision(5)﹤﹤pi; 程序的输出结果是__________。
16.建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的__________。
17.重载运算符的含义必须清楚,不能有__________。
18.按照联编进行阶段的不同,联编方法可分为两种:动态联编和__________。
19.设要把一个文件输出流对象myFile与文件“f:myText.txt”相关联,所用的C++语句是__________。
110.在C++中,函数的参数有两种传递方式,它们是__________和地址或指针或引用传递。
111.设有定义int x=3, y=4; 则表达式x*=y+5的值为__________。
112.在C++中,函数在定义时可以预先定义出默认的形参值。默认形参值必须按__________的顺序定义。因为在调用时,实参初始化形参是按从左到右的顺序。
113.如果一个函数直接或间接地调用自身,这样的调用称为__________调用。
114.函数模板中紧随template之后尖括号内的类型参数都要冠以保留字__________。
115.假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调用__________构造函数来完成此功能。
116.设函数sum是由函数模板实现的,并且sum(3,6)和sum( 4.6,8)都是正确的函数调用,则函数模板具有__________个类型参数。
117.如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。
118. 一个const对象只能访问__________成员函数。
119.如果通过同一个基类派生一系列的类,则将这些类总称为__________。
120.A是一个类,已有语句“A *p; P=new A[10];”。要释放由P指向的动态空间,正确的语句应该是__________。
三、改错题(本大题共5小题,每小题2分,共10分)
21. #include "stdafx. h" #include ﹤iostream﹥ using namespace std; class Test { private: int x, y =20; public: Test( int i, int j) {x=i, y=j; } int getx( ) { return x; } int gety( ) { return y; } }; void main( ) {Test mt(10, 20); cout﹤﹤mt. getx( )﹤﹤endl; cout﹤﹤mt. gety( )﹤﹤endl; }
22. #include "stdafx.h" #include ﹤iostream﹥ using namespace std; class Test { int x, y; public: fun(int i, int j) {x=i; y=j; } show( ) {cout﹤﹤"x="﹤﹤x; if(y) cout﹤﹤" ,y="﹤﹤y﹤﹤endl; cout﹤﹤endl;} }; void man( ) {Test A; A. fun (1); A. show( ); A. fun(2,4); A. show( ); }
23.#include "stdafx.h" #include ﹤iostream﹥ using namespace std; class A { int i; public: virtual void fun( )=0; A( int a) { i=a;} }; class B: public A { int j; public: void fun( ) {cout﹤﹤"B:: fun( ) ";} B(int m, int n=0): A(m),j(n) { } }; void main ( ) { A *pa; B b(7); pa=&b; }
24.#include ﹤iostream. h﹥ class f{ private: T x, y; public: f1(T a, T b) { x=a; y=b; } float max( ) { return(x﹥y)? x: y; } }; main( ){ f a; a. f1( 1.5, 3.8); cout﹤﹤a. max( )﹤﹤endl; }
25.#include ﹤iostream. h﹥ #include ﹤string. h﹥ class Base { public: Base( char *s="
