当前位置:编程学习 > C/C++ >>

C++期末考试复习题请高手帮忙做下撒谢谢!!!!

单项选择题(每题1分共15分)

1、Sample 为一个类,则执行Sample sample;语句时将自动调用该类的

   A) 有参构造函数    B) 无参构造函数

  C) 拷贝构造函数    D) 赋值重载函数

2、在C++类体系中,不能被派生类继承的是___________。

A) 构造函数 B) 虚函数

C) 静态成员函数 D) 赋值操作函数

3、对类的定义

   class A{

public:

virtual void func1(){ }

void func2(){ }

};

class B:public A{

public:

void func1(){cout<<”class B func1”<<endl;}

virtual void func2(){cout<<”class B func2”<<endl;}

};

下面正确的叙述是

  A) A::func2( )和B::func1( )都是虚函数

B) A::func2( )和B::func1( )都不是虚函数

C) B::func1( )是虚函数,而A::func2( )不是虚函数

D) B::func1( )不是虚函数,而A::func2( )是虚函数

4、在int a[5]={1,3,5};中,数组元素a[1]的值是___________。

A)1 B)0

C)3 D)2

5、语句 ofstream f(“SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,而且

  A) 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

B) 若文件存在,将其置为空文件;若文件不存在,打开失败

C) 若文件存在,将文件写指针定位于文件首,若文件不存在,建立一个新文件

  D) 若文件存在,打开失败;若文件不存在,建立一个新文件

6、___________功能是释放对象所占资源

  A) 析构函数 B) 数据成员

  C) 构造函数 D) 静态成员函数

7、在C++中有下列4条语句

   int hot =100;

int &rad=hot;

hot+=100;

cout<< rad << endl;

执行这4句后输出为

   A) 0  B) 100   C) 200   D)  300

8、在C++中,数据的封装要解决的问题是

  A) 数据规范化     B) 数据自动转换

C) 避免数据丢失  D) 禁止不同模块之间的数据非法使用

9、以下说法中正确的是___________。

A) C++程序总是从第一个定义的函数开始执行的。

B) 在C++程序中,要调用的函数必须在main()函数中定义。

C) C++程序总是从main()函数开始执行的。

D) C++程序中的main()函数必须放在程序的开始部分

10、下面说易做图确的是

A) 内联函数在运行时是将该函数的代码插入每个调用该函数的地方

B) 内联函数在编译时是将该函数的代码插入每个调用该函数的地方

C) 类的内联函数必须在类体内定义

D) 类的内联函数必须在类体外通过加关键字inline定义

11、假定类的构造函数为A(int aa,int bb){a=aa;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为

A) 4和5               B) 5和4

C) 4和20              D) 20和5

12、下面对继承关系描述中,正确的是___________。

A) 在公有继承中,派生类对象可访问基类中的公有成员和私有成员。

B) 在公有继承中,派生类对象只可访问基类中的公有成员。

C) 在私有继承中,派生类对象可访问基类的公有成员。

D) 在私有继承中,派生类的对象可访问基类中的保护成员。

13、下列函数模板定义不正确的是:

A) template<class Q> B) template<class Q>

Q F(Q x) Q F(Q x)

{ return Q+x; } { return x+x; }

C) template<class T> D) template<class T>

T F(T x) T F(T x)

{ return x*x; } { return x>1; }

14、关于静态数据成员,下面说法错误的是___________。

A) 使用静态数据成员,实际上是为了消除全局变量。

B) 可以使用“对象名.静态成员”或者“类名::静态成员”来访问静态数据成员。

C) 静态数据成员可以被所有成员函数引用。

D) 所有对象的静态数据成员占用同一内存单元。

15、从键盘的输入中读入一个值,并赋值给x的语句是___________。

A) cin >> x B) cin << x

C) cout >> x D) cout << x

二、判断题(每题1分、共10分)

1、char* cont name=”ABC”是声明了一个常指针name,所以不能改变该指针地址的值,但可以改变该指针所指向的字符串的值。

2、内联函数是以时间换空间的措施,所以对于调用太频繁的而且很长的函数,最好作为内联函数来处理

3、int &i=j;cout<<&pi<<endl;这两个语句中,两个“&”符号分别表示地址运算和引用。

4、虽然friend函数可以定义在类的内部,具有和类的其它成员同样的访问权 A)1 B)0

C)3 D)2

5、语句 ofstream f(“SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,而且

  A) 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

B) 若文件存在,将其置为空文件;若文件不存在,打开失败

C) 若文件存在,将文件写指针定位于文件首,若文件不存在,建立一个新文件

  D) 若文件存在,打开失败;若文件不存在,建立一个新文件

6、___________功能是释放对象所占资源

  A) 析构函数 B) 数据成员

  C) 构造函数 D) 静态成员函数

7、在C++中有下列4条语句

   int hot =100;

int &rad=hot;

hot+=100;

cout<< rad << endl;

执行这4句后输出为

   A) 0  B) 100   C) 200   D)  300

8、在C++中,数据的封装要解决的问题是

  A) 数据规范化     B) 数据自动转换

C) 避免数据丢失  D) 禁止不同模块之间的数据非法使用

9、以下说法中正确的是___________。

A) C++程序总是从第一个定义的函数开始执行的。

B) 在C++程序中,要调用的函数必须在main()函数中定义。

C) C++程序总是从main()函数开始执行的。

D) C++程序中的main()函数必须放在程序的开始部分

10、下面说易做图确的是

A) 内联函数在运行时是将该函数的代码插入每个调用该函数的地方

B) 内联函数在编译时是将该函数的代码插入每个调用该函数的地方

C) 类的内联函数必须在类体内定义

D) 类的内联函数必须在类体外通过加关键字inline定义

11、假定类的构造函数为A(int aa,int bb){a=aa;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为

A) 4和5               B) 5和4

C) 4和20              D) 20和5

12、下面对继承关系描述中,正确的是___________。

A) 在公有继承中,派生类对象可访问基类中的公有成员和私有成员。

B) 在公有继承中,派生类对象只可访问基类中的公有成员。

C) 在私有继承中,派生类对象可访问基类的公有成员。

D) 在私有继承中,派生类的对象可访问基类中的保护成员。

13、下列函数模板定义不正确的是:

A) template<class Q> B) template<class Q>

Q F(Q x) Q F(Q x)

{ return Q+x; } { return x+x; }

C) template<class T> D) template<class T>

T F(T x) T F(T x)

{ return x*x; } { return x>1; }

14、关于静态数据成员,下面说法错误的是___________。

A) 使用静态数据成员,实际上是为了消除全局变量。

B) 可以使用“对象名.静态成员”或者“类名::静态成员”来访问静态数据成员。

C) 静态数据成员可以被所有成员函数引用。

D) 所有对象的静态数据成员占用同一内存单元。

15、从键盘的输入中读入一个值,并赋值给x的语句是___________。

A) cin >> x B) cin << x

C) cout >> x D) cout << x

二、判断题(每题1分、共10分)

1、char* cont name=”ABC”是声明了一个常指针name,所以不能改变该指针地址的值,但可以改变该指针所指向的字符串的值。

2、内联函数是以时间换空间的措施,所以对于调用太频繁的而且很长的函数,最好作为内联函数来处理

3、int &i=j;cout<<&pi<<endl;这两个语句中,两个“&”符号分别表示地址运算和引用。

4、虽然friend函数可以定义在类的内部,具有和类的其它成员同样的访问权限,但该函数不是类的成员函数。

5、类的构造函数的名称可以不与类的名称相同。

6、双目运算符作为成员函数,其形参列表可以是一个参数,也可以是两个参数。

7、一个类中如果声明了一个虚函数,那么无论该类派生多少子类,只要子类中有一函数,其函数名和形参与基类的虚函数相同,那么该函数就是虚函数。

8、类的静态数据成员属于类,而不属于某个类的对象,所以静态数据成员在类对象使用之前必须对其进行初始化,但也可以通过类对象访问或更改静态数据成员的值。

9、函数模板也是一个函数,所在用法上和普通的函数用法一样。

10、C++语言提供了函数重载功能,在类的设计过程中,任何类的成员函数都可以进行重载。

三、填空题(每题1.5分,共30分)

1、根据程序注释完成下面的类

class MyClass{

private:

int *x;

public:

MyClass(int Value)

{_____________________}//用Value初始化x

//定义类的拷贝构造函数

{*this->x=*Cpyobj->.x}

//定义该类的析构函数

{

//释放数据空间

}

}

2、完成下列类模板的程序,使得程序能够正常运行

#include<iostream.h>

__________________//声明类模板的形式参数,模板的形式参数为Type

class myClass{

private:

Type value;

public:

myClass(Type v); ~myClass();

};

class Person

{};

__________________//实现构造函数

{

value=v;

}

__________________//实现析构函实

{

cout<<"Destructor.."<<endl;

}

void main(){

Person p;

____________//声明一个存放Person对象的模板类对象obj;并用p初始化

}

3、填定下程序的空白,完成两个类

#include<iostream.h>

class AbstractClass{

private:

int value;

public:

AbstractClass(int v){value=v;}

//定义纯虚函数getValue,返回int类型的数据

};

{//由AbstractClass 派生出类ConcreteClass

public:

//实现基类的纯虚函数getValue

{

return value;

}

}

4、 给下列程序填空,使程序的运行结果为:0,56,70

#include<iostream.h>

class base{

public:

int a;

base(){a=0;}

base(int x){a=x;}

void setValue(int x){a=x;}

func(){return 0;}

};

class derived:public base{

int b,c;

public:

//构造函数

{ b=y;

c=z;

}

func()

{return(a+b)*c;}

};

void main()

{

base b;

derived d(3,5);

cout<<b.func()<<",";

cout<<d.func()<<",";

//声明对象引用pb

pb.setValue(5);

cout<<d.func()<<endl;

}

5、填写下列空白,使得能正确显示出圆和长方形的面积。

class LOCATION{ public:

void show_area() ;

private:

float x,y; };

class CIRCLE:public LOCATION{

public:

{ cout<<”圆面积为:”<<3.14*radius*radius<<endl; }

private:

float radius;

};

class RECTANGLE:public LOCATION{

public:

{ cout<<”矩形面积为:”<<width*length<<endl; }

private:

float width,length;

};

void main()

{ CIRCLE circle;

RECTANGLE rectangle;

p;

p=&circle; p->show_area();

p=&rectangle; p->show_area();

}

答案:单项选择题(每题1分共15分)

1、Sample 为一个类,则执行Sample sample;语句时将自动调用该类的 B

   A) 有参构造函数    B) 无参构造函数

  C) 拷贝构造函数    D) 赋值重载函数

2、在C++类体系中,不能被派生类继承的是____D_______。

A) 构造函数 B) 虚函数

C) 静态成员函数 D) 赋值操作函数

3、对类的定义

   class A{

public:

virtual void func1(){ }

void func2(){ }

};

class B:public A{

public:

void func1(){cout<<”class B func1”<<endl;}

virtual void func2(){cout<<”class B func2”<<endl;}

};

下面正确的叙述是 C

  A) A::func2( )和B::func1( )都是虚函数

B) A::func2( )和B::func1( )都不是虚函数

C) B::func1( )是虚函数,而A::func2( )不是虚函数

D) B::func1( )不是虚函数,而A::func2( )是虚函数

4、在int a[5]={1,3,5};中,数组元素a[1]的值是_____C______。

A)1 B)0

C)3 D)2

5、语句 ofstream f(“SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,而且 A

  A) 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

B) 若文件存在,将其置为空文件;若文件不存在,打开失败

C) 若文件存在,将文件写指针定位于文件首,若文件不存在,建立一个新文件

  D) 若文件存在,打开失败;若文件不存在,建立一个新文件

6、_____A______功能是释放对象所占资源

  A) 析构函数 B) 数据成员

  C) 构造函数 D) 静态成员函数

7、在C++中有下列4条语句

   int hot =100;

int &rad=hot;

hot+=100;

cout<< rad << endl;

执行这4句后输出为 C

   A) 0  B) 100   C) 200   D)  300

8、在C++中,数据的封装要解决的问题是 D

  A) 数据规范化     B) 数据自动转换

C) 避免数据丢失  D) 禁止不同模块之间的数据非法使用

9、以下说法中正确的是______C_____。

A) C++程序总是从第一个定义的函数开始执行的。

B) 在C++程序中,要调用的函数必须在main()函数中定义。

C) C++程序总是从main()函数开始执行的。

D) C++程序中的main()函数必须放在程序的开始部分

10、下面说易做图确的是 B

A) 内联函数在运行时是将该函数的代码插入每个调用该函数的地方

B) 内联函数在编译时是将该函数的代码插入每个调用该函数的地方

C) 类的内联函数必须在类体内定义

D) 类的内联函数必须在类体外通过加关键字inline定义

11、假定类的构造函数为A(int aa,int bb){a=aa;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为 C

A) 4和5               B) 5和4

C) 4和20              D) 20和5

12、下面对继承关系描述中,正确的是______B_____。

A) 在公有继承中,派生类对象可访问基类中的公有成员和私有成员。

B) 在公有继承中,派生类对象只可访问基类中的公有成员。

C) 在私有继承中,派生类对象可访问基类的公有成员。

D) 在私有继承中,派生类的对象可访问基类中的保护成员。

13、下列函数模板定义不正确的是: A

A) template<class Q> B) template<class Q>

Q F(Q x) Q F(Q x)

{ return Q+x; } { return x+x; }


C) template<class T> D) template<class T>

T F(T x) T F(T x)

{ return x*x; } { return x>1; }


14、关于静态数据成员,下面说法错误的是_____A______。

A) 使用静态数据成员,实际上是为了消除全局变量。

B) 可以使用“对象名.静态成员”或者“类名::静态成员”来访问静态数据成员。

C) 静态数据成员可以被所有成员函数引用。

D) 所有对象的静态数据成员占用同一内存单元。

15、从键盘的输入中读入一个值,并赋值给x的语句是______A_____。

A) cin >> x B) cin << x

C) cout >> x D) cout << x

二、判断题(每题1分、共10分)

1、char* const name=”ABC”是声明了一个常指针name,所以不能改变该指针地址的值,但可以改变该指针所指向的字符串的值。 对

2、内联函数是以时间换空间的措施,所以对于调用太频繁的而且很长的函数,最好作为内联函数来处理 错

3、int &i=j;cout<<&pi<<endl;这两个语句中,两个“&”符号分别表示地址运算和引用。 错(反了)

4、虽然friend函数可以定义在类的内部,具有和类的其它成员同样的访问权限,但该函数不是类的成员函数。 对

5、类的构造函数的名称可以不与类的名称相同。 错

6、双目运算符作为成员函数,其形参列表可以是一个参数,也可以是两个参数。 对

7、一个类中如果声明了一个虚函数,那么无论该类派生多少子类,只要子类中有一函数,其函数名和形参与基类的虚函数相同,那么该函数就是虚函数。 对

8、类的静态数据成员属于类,而不属于某个类的对象,所以静态数据成员在类对象使用之前必须对其进行初始化,但也可以通过类对象访问或更改静态数据成员的值。 对

9、函数模板也是一个函数,所在用法上和普通的函数用法一样。对

10、C++语言提供了函数重载功能,在类的设计过程中,任何类的成员函数都可以进行重载。对

三、填空题(每题1.5分,共30分)

1、根据程序注释完成下面的类

class MyClass{

private:

int *x;

public:

MyClass(int Value)

{_x=(int *)malloc(sizeof(int));__*x=Value;___________}//用Value初始化x

//定义类的拷贝构造函数
MyClass(Myclass *Cpyobj)
{*this->x=*Cpyobj->.x}

//定义该类的析构函数
~MyClass()
{
delete x;
//释放数据空间

}

}

2、完成下列类模板的程序,使得程序能够正常运行

#include<iostream.h>

template<class Type>__________________//声明类模板的形式参数,模板的形式参数为Type

class myClass{

private:

Type value;

public:

myClass(Type v); ~myClass();

};

class Person

{};

myClass(Type v)__________________//实现构造函数

{

value=v;

}

~myClass()_________________//实现析构函实

{

cout<<"Destructor.."<<endl;

}


void main(){

Person p;

template<class Person>myClass obj(p);____________//声明一个存放Person对象的模板类对象obj;并用p初始化

}

3、填定下程序的空白,完成两个类

#include<iostream.h>

class AbstractClass{

private:

int value;

public:

AbstractClass(int v){value=v;}

//定义纯虚函数getValue,返回int类型的数据
virtual int getValue()
{
return value;
};

class ConcreteClass:public AbstractClass
{//由AbstractClass 派生出类ConcreteClass
public:

//实现基类的纯虚函数getValue
int getValue()
{

return value;

}

}

4、 给下列程序填空,使程序的运行结果为:0,56,70

#include<iostream.h>

class base{

public:

int a;

base(){a=0;}

base(int x){a=x;}

void setValue(int x){a=x;}

func(){return 0;}

};

class derived:public base{

int b,c;

public:

//构造函数
derived(int y,int z)
{ b=y;

c=z;

}

func()

{return(a+b)*c;}

};

void main()

{

base b;

derived d(3,5);

cout<<b.func()<<",";

cout<<d.func()<<",";

//声明对象引用pb
derived & pb=d;
pb.setValue(5);
//你这里56和70是怎么得出来的我不清楚 应该还要添加某些语句 但看你注释 不知道添到哪里
cout<<d.func()<<endl;

}

5、填写下列空白,使得能正确显示出圆和长方形的面积。

class LOCATION{ public:

void show_area() ;

private:

float x,y; };

class CIRCLE:public LOCATION{

public:

void show_area()
{ cout<<”圆面积为:”<<3.14*radius*radius<<endl; }

private:

float radius;

};

class RECTANGLE:public LOCATION{

public:

void show_area()
{ cout<<”矩形面积为:”<<width*length<<endl; }

private:

float width,length;

};

void main()

{ CIRCLE circle;

RECTANGLE rectangle;

CIRCLE *p;

p=&circle; p->show_area();

p=&rectangle; p->show_area();

}

上一个:当我用C C++时要注意什么
下一个:有C++基础学JAVA会觉得难吗?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,