C++面向对象技术复习题汇总(含答案) 下载本文

内容发布更新时间 : 2024/12/26 6:42:54星期一 下面是文章的全部内容请认真阅读。

面向对象程序设计C++

复习资料与答案

第一、二、六、七章习题

一、选择题

1、系统约定C++源程序文件名的缺省的扩展名为( ) A、bcc B、c++ C、cpp D、vcc

2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理。

A、对数据的操作 B、信息 C、数据隐藏 D、数据抽象 3、当一个函数无返回值时,函数的类型应定义为( ) A、void B、任意 C、int D、无 4、对于C++的函数,正确的叙述是:

A、函数的定义不能嵌套,但函数的调用可以嵌套 B、函数的定义不能嵌套,但函数的调用不能嵌套 C、函数的定义和调用都不能嵌套 D、函数的定义和调用都可以嵌套 5、下列语句中错误的是( )

A、int *p=new int(10); B、int *p=new int[10] C、int *p=new int; D、int *p=new int[40](0);

6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:( ) A、name[3]=’a’; B、name=”lin”; C、name=new char[5]; D、cout<

7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( ) A、name[3]=’q’; B、name=”lin”;

C、name=new char[5]; D、name=new char(‘q’);

8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:( ) A、name[3]=’q’; B、name=”lin”;

C、name=new char[5]; D、name=new char(‘q’); 9、下面的类型声明中正确的是:( )

A、int &a[4]; B、int &*p; C、int &&q D、int i,*p=&i; 10、假设定义了函数模板( ) template

T max(T x,T y){ return(x>y)?x:y;}

并定义了int i;char c;错误的调用语句是:( )

A、max(i,i) B、max(c,c) C、max((int)c,i); D、max(i,c) 11、模板的使用是为了( )

A、提高代码的可重用性 B、提高代码的运行效率 C、加强类的封装性 D、实现多态性

12、设有二个语句:int x[‘a’];cin>>x;则编译器认为( ) A、说明语句int x[‘a’]错 B、二个语句都错

C、语句cin>>x 错 D、二个语句正确,没有语法错

13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )

A、f(py[10],n); B、f(py,n) C、f(*py,&n) D、f(py,&n) 14、在C++中实现封装是借助于( )

A、枚举 B、类 C、数组 D、函数 15、对于下面几个函数:

(1) void f(int x,float y) {? ? } (2) int f(int a,float b){? ? } (3) int f(int i,int j){? ? } (4) float k(int x){? ? } 是重载函数。

A、4个全部 B、1和2 C、2和3 D、3和4

16、使用myFile.open(“Sales.dat”,ios::app);语句打开文件Sales.dat后,则( ) A、使输出追加到文件尾部 B、打开一个文件进行读操作 C、打开一个文件进行读和写操作

D、文件以二进制方式打开,默认时为文本文件

二、填空题

1、面向对象的程序设计有四大特征,它们是抽象、封装、 、 。 2、结构体类型中的数据和成员函数默认类型为 。

3、C++要求为每个函数建立原型,以说明函数的名称、参数的 和 ,以及函数返回值。

4、在函数说明前加关键字“inline”,则该函数被声明为 函数,其引入的目的是为了消除函数调用时的开销,以提高运行速度。

5、引用变量与被引用变量占有 内存单元。

6、 运算符能够用于访问当前作用域内与局部变量同名的全局变量。 7、#include void s(int a,int &b){int t=a;a=b;b=t;} void main(void) { int x=500,y=1000; cout< void main(void)

{ for(int a=1,b=1;a<=5;a++) { if(b>=8) break; if(b%2==1){b+=7;continue;} b-=3; } cout<<”a=”<

int x=100;

void main(void)

2

{ int x=200;x+=::x; {int x=500;::x+=x;} cout<

void f(float x=5, int y=16, char z=?C?); void main( )

{ float a=1.6; int b=2; char c='D'; f();f(a);f(a,b); f(a,b,c); } void f(float x, int y, char z)

{ cout<<“x=”<

程序的第二行输出为 ,第三行输出为 。 11、以下程序的输出结果是 。 #include char a[]=“ABCDEFGHI”; char &f(int); int main()

{ f(6)=?X?; cout<

{ return a[i]; }

12、如果C++程序中使用了:cout、strcpy,则必须在程序首部包含文件 和 。 13、#include #include void main()

{ int i=7890; cout<

程序的第一行输出为 ,第二行输出为 。 14、#include void main()

{ int i=100;cout.setf(ios::hex); cout<

以上程序运行的结果是

第三章 类和对象

一、选择题

1、( )不是构造函数的特征。

A、构造函数的函数名与类名相同; B、构造函数可以重载;

C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。 2、下列关于构造函数的描述中,( )是正确的。 A、构造函数可以设置缺省参数; B、构造函数可以被继承;

C、构造函数可以对静态数据成员进行初始化; D、构造函数可以说明为虚函数;

3

3、( )是析构函数的特征。

A、析构函数可以有一个或多个参数; B、析构函数名与类名不同;

C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数; 4、定义析构函数时,应该注意( )。 A、其函数名与类名完全相同; B、函数返回类型是void类型; C、无形参,也不可重载;

D、函数体中必须有delete语句; 5、下列静态数据成员的特性中,( )是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的;

D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符; 6、友元的作用是( )。

A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类;

7、关于成员函数特征的下列描述中,( )是错误的。 A、成员函数一定是内联函数; B、成员函数可以重载;

C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;

8、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的; A、void print() const; B、const void print(); C、void const print(); D、void print(const);

9、在( )情况下适宜采用inline定义内联函数。 A、函数体含有循环语句; B、函数体含有递归语句; C、函数代码小,频繁调用; D、函数代码多,不常调用;

10、假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构

造函数的次数为( )。

A、 3 B、 4 C、 6 D、 9 11、通常拷贝初始化构造函数的参数是( )。 A、某个对象名

B、某个对象的成员名 C、某个对象的引用名 D、某个对象的指针名

12、有关类的说法不正确的是( )。

4