c++经典习题(附答案)(可编辑修改word版)

  • 格式:docx
  • 大小:32.68 KB
  • 文档页数:25

1. 关于 C++语言,下列说法不正确的是

A. C++具有简洁、高效和接近汇编语言的特点B.C++本身几乎没有支持代码重用的语言结构C.C++语言不是一种纯面向对象的语言

D. C++支持面向对象的程序设计,这是它对 C 的重要改进

B

2. 使用关键字 说明的函数为内联函数。inline

3. C++支持两钟多态性,即 和 。编译时的多态性 运行时的多态性

4. 在下面横线处填上适当字句,使程序输出结果为 5,10

# include

void main(){ int n=5;

int& =n;

ref=ref+5;

cout<

const ref

5. const int *p;表明

A. p 本身是常量

B.p 指向一个固定的 int 类型的地址,而 p 的内容可以修改

C.p 只能指向一个整型常量

D. p 只能指向一个被 const 修饰的 int 类型的常量C

6. 数据封装给数据提供了与外界联系的 ,只有通过这些 ,使用规范的方式,才能访问数据。

标准接口 接口

7. 在下面横线处填上适当字句,使程序完整。int arr[]={1,2,3,4,5};

index(int i){return a[i];}

void main(){

index(3)= ;//将 a[3]改为 6

}

int & 6

8. #include

void main(){int *p,i,j;

cin>>j;// 输 入 4

p=new int[j];

if(!p){cout<<”Allocation error\n”;}

for(i=0;i

for(i=0;i

cout<

delete []p;

} 输出为:4(这是输入的数据)

0 1 2 3

9. #include

void comp(const int&,int&);

int main(){int n=6,t=10;

cout<<”n=”<

comp(n,t);

cout<<”n=”<

return 0;

}

void comp(const&in1,int &in2){in2=in1*10+in2;}

输出为:n=6, t=10

n=6,t=70

10. 下列属于 C++头文件约定使用的扩展名的是

i. .cpp

ii. .hpp

iii. .c

iv. .c++

B

11. C++提供了一种新的注释方式:从“//”开始,直到 ,都被计算机当做注释。

行尾

12. 在 C++中,多态性被直观地称为“ ”。一个名字,多个函数

13. #include

void addsub(int&,int&);

void main(){int a=10,b=15;

addsub(a,b);

cout<<”a=”<

}

void addsub(int &m,int &n)

{int temp=m;

m=m*n;

n=temp-n;}

输出为:a=150,b=-5

14. #include

void main(){int a[2][2]={{2,4},{6,8}};

int *pa[2];

pa[0]=a[0];

pa[1]=a[1];

for(i=0;i<2;i++)

for(j=0;j<2;j++,pa[i]++)

cout<<“a[”<

} 输出为:a[0][0]=2

a[0][1]=4

a[1][0]=6

a[1][1]=8

15. #include

#include

main(){cout<

}

输出为:21

*21

**21

16. C++有几种联编

i. 1 种

ii. 2 种

iii. 3 种

iv. 4 种

B

17. 由于引用不是变量,所以不能说明引用的 ,也不能说明数据类型为引用数组或是指向引用的指针。

引用

18. 函数原型标识一个函数的 ,同时也标识该函数参数的 和

返回类型 个数 类型

19. #include

void f(){static int i=15;

i++;

cout<<”i=”<

}

void main()

{ for(int k=0;k<2;k++)

f();

}

输出为:i=16

i=17

20. #include

#include

main(){cout<

cout<

cout<

cout<<100<<”aa”<

return 0;

}

输出为:14 12

xxxxxxx144aa

21. #include

int fun(int n1,int n2){return n1*n2;}

float fun(int f1,float f2){return f1*f2;}

void main(){int a=10;

int b=2.5;

float c=2.55;

float d=5.52;

cout<

cout<

}

输出为:20

11.04

22. 与标准错误输出设备相关联( 缓冲方式) 的, 由 C++流库预定义的流是

clog

23. C++的流类库预定义的,与标准输出设备相关联的流是

i. cin

ii. cout

iii. cerr

iv. clog

B

第三章习题及答案

9. 缺省的析构函数的函数体是

A. 不存在的B.随机产生的C.空的

D. 无法确定的

C

10. 以下说法中正确的是

A. 一个类只能定义一个构造函数,但可以定义多个析构函数B.一个类只能定义一个析构函数,但可以定义多个构造函数C.构造函数与析构函数同名,只是名字前加了一个波浪号(~)

D. 构造函数可以指定返回类型;而析构函数不能指定任何返回类型,即使是 void

类型也不可以

B

11. 不能在 C++中提供封装的关键字是

A. class

B.struct

C.type

D. union C

12. 由于数据隐藏的需要,静态数据成员通常被说明为

A. 私有的B.保护的C.公有的

D. 不可访问的

A

13. 在类中说明的任何成员都不能用 、 和 关键字进行修饰。

extern auto regist

14. 构造函数是和 同名的函数, 但要在后者的名字之前冠有一个

,以区别于前者。析构函数 波浪号 ~

15. 用关键字 static 修饰的成员称为 。静态成员

16. 已知 AA 是一个类,则 AA *a[2];声明了一个 数组。类对象指针

17. 拷贝初始化构造函数用对它所在类的 作为参数。引用

18. 指出下面程序段中的错误,并说明出错原因。

//str1.h

#include

#include

class str{private:char *string;

public:str(char* s){string=new char[strlen(s)+1];strcpy(string,s);}

~str(){cout<<”Delete…”<

void print(){cout<

#include “str1.h”

void main(){str s1=”student”;str s2=s1;

s1.print();s2.print();}

指针悬挂问题

24. 指出下面程序段中的错误,并说明出错原因。

class Location{

public:void init(int initX,int initY);

private:int X=1;

public:int getX();

private:int y;

};

不能采用这种方式初始化

25. 指出下面程序段中的错误,并说明出错原因。

class Test{

private: int num;

protected: int p;

};