1、 C++对C语言作了很多改进,下列描述中( )使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符; B、允许函数重载,并允许设置缺省参数;
C、规定函数说明必须用原型; D、引进了类和对象的概念;
2、 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。
A.类 B.对象 C.函数体 D.数据块
3、 关于new运算符的下列描述中,( )是错误的。
A、 它可以用来动态创建对象和对象数组;
B、使用它创建的对象或对象数组可以使用运算符delete删除;
C、使用它创建对象时要调用构造函数;
D、使用它创建对象数组时必须指定初始值;
4、 ( )不是构造函数的特征。
A、构造函数的函数名与类名相同; B、构造函数可以重载;
C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。
5、 假定一个类的构造函数为B(int x,int y){a=x--;b=a*y--;},则执行B x(3,5); 语句后,x.a和x.b的值分别为( )
A、 3和5 B、 5和3 C、 3和15 D、20和5
6、 关于成员函数特征的下列描述中,( )是错误的。
A、成员函数一定是内联函数; B、成员函数可以重载;
C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;
7、 在公有继承的情况下,基类成员在派生类中的访问权限( )。
A.受限制 B.保持不变 C.受保护 D.不受保护
8、 友元的作用是( )。
A、提高程序的运用效率; B、加强类的封装性;
C、实现数据的隐藏性; D、增加成员函数的种类;
9、 在C++中,关于下列设置缺省参数值的描述中,( )是正确的。
A、不允许设置缺省参数值;
B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;
C、只能在函数的定义性声明中指定参数的缺省值;
D、设置缺省参数值时,必须全部都设置;
10、关于delete运算符的下列描述中,( )是错误的。
A、它必须用于new返回的指针;
B、使用它删除对象时要调用析构函数;
C、对一个指针可以使用多次该运算符;
D、指针名前只有一对方括号符号,不管所删除数组的维数。
11、const int *p说明不能修改( )。
A、p指针; B、p指针指向的变量;
C、p指针指向的数据类型;D、上述A、B、C三者;
12、当需要打开A盘上的以xxk.dat文件用于输入时,则定义文件流对象的语句为 ( )。
A.fstream fin(“A:xxk.dat”,1) B.ifstream fin(“A:xxk.dat”,ios::nocreate)
C.ofstream fin(“A:xxk.dat”) D.ifstream fin(“A:xxk.dat”,ios::app)
13、派生类的对象对它的基类成员中( )是可以访问的。
A、公有继承的公有成员; B、公有继承的私有成员;
C、公有继承的保护成员; D、私有继承的公有成员;
14、假定一个字符串的长度为n,则定义存储该字符串的字符数组的长度至少为()。A.n-1 B.n C. n+1 D.n+2
15、 在int a=3; *p=&a;中,*p的值是( )。
A、变量a的地址值 B、无意义 C、变量p的地址值 D、 3
16、 下列常量中,( )不是字符常量。
A、’\005’ B、’\n’ C、 ’c’ D、“a”
二、 填空题(每小题1.5分,合计15分)
1、 当建立 【1】 ,程序自动调用该类的构造函数。
2、 在C++中有二种参数传递方式: 【1】 和【2】 。
3、 模板对处理数据的类型的要求不同可以分为两种类型: 【3】 和 【4】 。
4、 异常是通过【5】 、【6】 和【7】 来实现的。
5、 虚函数实现了C++的【8】 机制,类实现了C++的【9】 机制。
6、 面向对象程序设计的 【10】机制提供了重复利用程序资源的一种途径。
三、指出函数或程序的功能。(每小题5分,合计10分)
1、 template <class Type>
void AC(Type &x , Type &y )
{
Type a=x;
x=y ;
y=a ;
}
2、int AB(int *a , int n)
{
int x=a[0];
for (int i=1; i<n; i++)
if (a[i]<x) x=a[i];
return x;
}
四、给出下列程序的运行结果。(每小题5分,合计20分)
1、# include <iostream.h>
class A {
int a , b ;
public :
A( ) { a=b=0; }
A( int aa , int bb ) : a(aa),b(bb) {
cout <<”a=”<<a<<”,”<<”b=”<<b<<endl;
}
~A( ){cout <<”Destructor!”<<endl; }
};
void main() {
A x , y(2 , 3);
}
2、 # include <iostream.h>
int AD(int a[] , int n) {
int x=1;
for (int i=0; i<n; i++)
x*=a[i];
return x;
}
void main() {
int a[]={ 2, 8, 6, 5};
cout <<AD(a , 4)<<endl;
}
3、#include <iostream.h>
class R
{
public:
R(int r1,int r2) {R1=r1;R2=r2;}
void print();
void print() const;
private:
int R1,R2;
};
void R::print()
{
cout<<R1<<":"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<";"<<R2<<endl;
}
void main()
{
R a(5,4);
a.print();
const R b(20,52);
b.print();
}
4、#include <iostream.h>
class A
{
public:
virtual void act1();
void act2() {act1();}
};
void A::act1()
{
cout<<"A::act1() called. "<<endl;
}
class B : public A
{
public:
void act1();
};
void B::act1()
{
cout<<"B::act1() called. "<<endl;
}
void main()
{
B b;
b.act2();
}
五、程序填空(每空3分,合计6分)
1、 class A
{
int * a;
int n;
public :
A(int nn=0):n(nn)
{
if (n==0) a=0;
else a= ; // 分配长度为n的动态数组
}
void Seta(int * aa)
{
for (int i=0; i<n; i++) a[i]=aa[i];
}
// 定义析构造函数,释放动态数组空间
};
六、编写函数或程序(每小题8分,合计24分)
1. 编写一个函数,实现两个数的交换。
2. 编写一个函数,返回三个整数形参中的最小值。
3. 编写一个类LEI,实现打印私有变量a的值
一、 选择题(每小题1.5分,合计25分)
1 D
2 A
3 D
4 D
5 C
6 A
7 B
8 D
9 B
10、B
11、B
12、A
13、A
14、C
15、D
16 D
二、 填空题(每小题1.5分,合计15分)
1、 【1】对象
2、 【1】传值 【2】传址
3、 【3】函数模版 【4】类模版
4、 【5】try【6】throw【7】catch
5、 【8】多态【9】封装
6、 【10】继承
三、指出函数或程序的功能。
1、 建立函数模版
2、找最小值
四、给出下列程序的运行结果。(每小题5分,合计20分)
1
a=2,b=3
Destructor!
Destructor!
2
480
3、
5:4
20;52
4、
B::act1( ) called.
五、程序填空(每空3分,合计6分)
1、
new int[nn]
~A( ) { delete a; }
六、编写函数或程序(每小题8分,合计24分)
1. 编写一个函数,实现两个数的交换。
void f(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
2. 编写一个函数,返回三个整数形参中的最小值。
int f(int a,int b,int c)
{
int m=a;
if(m>b)
m=b;
if(m>c)
m=c;
return m;
}
3. 编写一个类LEI,实现打印私有变量a的值
#include<iostream.h>
class LEI
{
int a;
public:
void print()
{
cout<<a;
}
};