您好,欢迎来到六九路网。
搜索
您的当前位置:首页C++期末复习题(带答案)

C++期末复习题(带答案)

来源:六九路网


C++复习电子版(带答案)

一、选择题(20分)

1.面向对象的程序设计语言必须具备的关键要素是(D)

A.抽象和封装 B.抽象和多态性

C.抽象,封装和继承性 D.抽象,封装,继承和多态性

2.下列说法中正确的是( A )

A.类中的函数成员可以在类体中定义,也可以在类体之外定义

B.类定义中只能声明函数成员的函数头,不能定义函数体

C.类中的函数成员在类体之外定义时必须要与类的定义放在同一文件中

D.在类体之外定义的函数成员不能操作该类的私有数据成员

3.在下列成对的表达式中,运算符“+”的意义不相同的一对是( C )

A. 5.0+2.0和5.0+2 B. 5.0+2.0和5+2.0

C. 5.0+2.0和5+2 D. 5+2.0 和 5.0+2

4.类的成员的初始化是通过函数完成的,这个函数通常是( B )

A.析构函数 B.构造函数

C.其他成员函数 D.友元函数

5.下列关键字中,用以说明类中公有成员的是( D )

A. friend B. private

C. protected D. public

6.静态成员函数没有(B)

A .返回值 B .this指针

C.指针参数 D.返回类型

7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(A.都是虚函数

B.只有被重新说明时才是虚函数

C. 只有被重新说明为virtual时才是虚函数

A )

D.都不是虚函数

8.假定AB为一个类,则执行“ AB x:”语句时将自动调用该类的( D )

A.有参构造函数 B.析构函数

C.拷贝构造函数 D.无参构造函数

9.在c ++中实现封装是借助于( B )

A.枚举 B.类

C.数组 D.函数

10.所有在函数中定义的变量,都是( B )

A.全局变量 B.局部变量

C. 静态变量 D.寄存器变量

二、填空题(20分)

11.静态成员函数,友元函数,构造函数和析构函数中,不属于类的成员函数的是_友元函数___。

12.C++中,类的继承方式有___公有继承_____ , ___保护继承______和私有继承三种

方式。

13.语句序列 ifstream datafile;

datafile.open( “data.dat” );

的功能可用一个语句实现,这个语句是__ifstream datafile( “data.dat” );___。

14.一般将运算符重载为类的友元函数或者类的___成员函数______。

15.当一个类中含有___纯虚__函数时,这个类便成为抽象类。

16.在C++中,虚函数实现了类族的___多 态__性。

17.通过C++语言中类的 继承机制 , 可以扩充和完善已有类派生出新类,以适应新的需求。

18.为了在对象生存期结束时清理释放其指针成员所指向的动态存储空间,通常需要为该类定义___析构函数____。

19.在函数头与函数体之间加_____const_______关键字可以防止该函数改变数据成员的值。

20. A是一个类,已有语句“A*p; p=new A [10] ;”。要释放由p指向的动态空间,正确的语句应该是___delete [] p;____。

三、改错题(5题,10分)

21.下面的类定义有一处错误,请用下横线标出错误所在行并改正错误。

22.class A{

23. int a;

24.public:

25. A(int aa):a=aa{ } A(int aa){a=aa;}

26.};

答案:A(int aa):a=aa{}错误,改为A(int aa):a(aa){}

27.下面的程序先把字符串“Look out!”输出到一个文件中,然后再从该文件输入,并显示在屏幕上,显示效果为Look out!。程序中有一处错误,请用下横线标出错误所在行,并给出更改意见。

28.# include

29.void main(){

30. ofstream outf(“D:\em.dat”,ios::trunc);

31. outf<<“Look out!”;

32. outf.close( );

33. ifsteam inf(“D:\em.dat”);

34.char k[20]; 改:inf.getline(k,20); //inf>>k inf>>k; count<35. inf.close( );

36.}

答案:inf>>k;错误,它只能读出Look,应改为,inf.getline(k,20); 23.下面的程序有一处错误,请用下横线标出错误所在行并改正错误。

# include

class Test{

public;

static int x;

};

int x=20;//对类成员初始化

void main ( )

{

cout<}

答案:int x=20;错误,应改为int Test::x=20;

24.下面的程序类B的定义中有一处错误,请用下横线标出错误所在行并说明错误原因。

#include

#include

class A{

public:A(const char *nm){strcpy(name,nm);}

private:char name[80];

};

class B:public A{

public:B(const char *nm):A(nm){ }

void PrintName( )const;

};

void B::PrintName( )const{

cout<<“name:”<}

void main( ){

B b1(“wang li”);

b1.PrintName( );

}

答案:cout<<“name:”<25.用下横线标出下面程序main函数中的错误所在行,并说明错误原因。

# include

class Location{

private:

int X,Y;

public;

void init(int initX,int initY);

int sumXY( );

};

void Location::init(int initX,int initY)

{

X=initX;

Y=initY;

}

int Location::sumXY( )

{

return X+Y;

}

void main( )

{

Location A1;

int x,y;

A1.init(5,3);

x=A1.X;y=A1.Y;(私有成员不能直接访问!)

cout< } }

四、完成程序题(5题,20分)

26.完成下面类中的成员函数的定义。

class test

{

private:

int num;

float x;

public:

test(int,float f);

test(test &);

};

test::test(int n,float f)

{ num=n;

① ①____x=f_______________;

}

test::test(test & t)

{

② ___num=t.num_______________;

X=t.X ;

}

27. 在下面的横线处填上适当的内容,是程序完整。

# include

# include

Class loc{

Private:

Float x,y;

Public:

loc( ① float x1,float y1 )

{

x=x1;

y=y1;

}

float getx( ) {return x;}

float gety( ) {return y;}

② static float dis (loc&,loc&);

};

float loc::dis (loc&a, loc&b)

{

flost dx = a.x-b.x;

flost dy = a.y-b.y;

return sqrt (dx*dx+dy*dy);

}

void main( )

{

loc pl(3.5 , 4.5),p2(5.5 , 6.5);

float d = loc::dis (p1,p2);

cout <<“The distance is”<< d;

}

28.在下面程序中的横线处填上适当内容,使程序完整。

# include

class vehicle

{

protected:

int size;

int speed;

public;

void setSpeed(int s){speed=s;}

①____virtual____int____ getSpeedLevel( ){return speed/10;}

};

class car:public vehicle

{

public:

int getSpeedLeve( ){return speed/5;}//求派生类小汽车速度级

};

class truck:public vehicle

{

public:

int getspeedLevel( ){return speed/15;}//求派生类大卡车类速度级

};

int maxSpeedLevel(vehicle ② &v2 ,vehicle ③ &v1 具类族中速度级

)//比较交通工

{

if(v1.getSpeedLevel( )>v2.getSpeedLevel( ))

return 1;

else

reutrn 2;

}

void main()

{

turck t;

car c;

t.setSpeed(130);

c.setSpeed(60);

cout<}

29.在下面横线处填上合适内容,完成类B 的定义。

# include

class A{

public:A( ){a=0;}

A(int i){a=i;}

void print( ){cout<private:int a;

};

class B:public A{

public:B( ){b1=b2=0} //默认无参构造函数

B(① ____int i______){b1=i;b2=0;} //需一个参数i的构造函数

B(int i,int j,int k) ; ② _____A=i______ { b1=j; b2=k; } //使a 的值为i

void print( ){A::print( );cout<private:int b1,b2;

}

30.根据注释在空白处填写适当内容。

class Location{

private:

int X,Y;

public:

void init(int initX,int initY);

int GetX( );

int GetY( );

};

void Location::init(int initX,int initY)

{

X=initX;

Y=initY;

}

int Location::GetX( )

{

reutrn X;

}

int Location::GetY( )

{

reutrn Y;

}

# include

void main( )

{

Location A1;A1.init(20,90);

①____ Location &rAL=Al_;______ //定义一个指向A1 的引用rA1

②____cout<}

一, 程序分析题(4题,16分)

31.写出下面程序的输出结果:(3.7.9.1.5.4)

#include

class FunArray

{

int *pa; //指向一个数据空间

int size; //数组元素个数

public:

FunArray(int a[],int thesize):pa(a),size(thesize){ }

int Size( ){return size;}

int& operator[ ](int index){return pa[index-1];}

};

void main( )

{

int s[ ]={3,7,2,1,5,4};

FunArray ma(s,sizeof(s)/sizeof(int));

ma[3]=9;

for(int i=1;i<=ma.Size( );i++) cout<;

32.写出下面程序的输出结果:

# include

template

class Tclass{

T x,y;

public:

Tclass(T a,T b):x(a){y=b;}

Tclass(T a){y=(T)0,x=a;}

void pr( ){

char c;

c=(y>=(T)0?′+′:′-′);

cout<(T)0? y:-y)<<″i″<}

};

void main( )

{

Tclassa(10.5,-5.8);

a.pr( );

Tclassb(10);

b.pr( );

}

33.写出下面程序的输出结果:

# include

class Test{

private:

static int val;

int a;

public;

static int func( );

void sfunc(Test &r);

};

int Test::val=200;

int Test::func( )

{

return val++;

}

void Test::sfunc(Test &r)

{

r.a=125;

cout<<″ Result3=″<}

void main( )

{

cout<<”Result1=”<Test a;

cout<<”Result2=”<a.sfunc(a);

}

34. 写出下面程序的输出结果:

#include

class A

{ public;

virtual void print(){cout<<”This is class A printing.”<};

class B:public A

{ public:

void print(){}

};

class C:public B

{ public:

void print(){cout<<”This is class C printing.”<};

void show(A &a){ a.print(); }

void main()

{ A a;

B b;

C c;

show(a);

show(b);

show(c);

}

二, 程序编写(14分)

35.用面向对象的方法,设计数组类检验及学生类。编写一个程序从键盘输入10个学生的基本情况,每个学生的信息包括学号(No),姓名(Name),成绩(Score),要求按每个学生的 成绩由低到高排序输出。

要求:(1)用UML图对数组类检验及学生类的结构进行编程。(4分)

(2)编程实现类的结构,成员函数及测试用的主函数(10分)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务