最新c++题库及答案 下载本文

值的等价形式:

*(*(p+i)+j) *(p[i]+j) p[i][j]都表示b数组第i+1、第j+1列元素的值。 所以题目分别访问p[0][0],p[0][1],p[0][2]。 18. 在C++中,使用流进行输入输出,其中用于屏幕输入() A. cin B. cerr C. cout D. clog

答案:A

解析:(1)标准输入流cin:istream类的对象。(2)标准输出流cout:ostream类的对象。 (3)非缓冲型标准出错流cerr:ostream类的对象。(4)缓冲型标准出错流clog:ostream类的对象

19. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数

成员a()的格式为() A. x.a B. x.a() C. x->a

D. (*x).a() 答案:B

解析:对象访问成员的方式为:对象名.成员。指针可以有两种:(*对象指针).成员或者对 象指针->成员。A选项是访问数据成员,B项是访问成员函数。 20. 关于对象概念的描述中,说法错误的是() A. 对象就是C语言中的结构变量

B. 对象代表着正在创建的系统中的一个实体 C. 对象是类的一个变量

D. 对象之间的信息传递是通过消息进行的 答案:A

解析:A对象在C++中才有,包括数据和操作两项,而C中的变量只有数据,没有操作。所

以A项错误。

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案 。错填、不填均无分。

1. C++的流库预定义了4个流,它们是cin、cout、clog和___。 答案:(P193)cerr

[解析]cin、cout、clog和cerr分别用于标准输入、输出、标准错误流(缓冲)和标准错误流

(非缓冲)。

2. 每个对象都是所属类的一个___。 答案:实例

[解析]类是对象的抽象,对象是类的一个实例。

3. 在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语 句___。

答案:int *ip=new int[10];

[解析]new用来动态开辟空间。常用来产生动态数组及对象构造函数。 4. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字___。 答案:class

[解析]类模板的使用。template ,也可以引入多参数的如:template

5. 定义类的动态对象数组时,系统只能够自动调用该类的___构造函数对其进行初始化。 答案:无参

[解析]使用new创建对象数组,调用无参构造函数。 6. 表达式cout<

[解析]endl与字符常量‘\n’等价。

7. 在C++中,访问一个指针所指向的对象的成员所用的指向运算符是___。 答案:->

[解析]指针使用成员有两种方法:“->”指向运算符和“.”成员访问运算符。

8. 假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调

用___构造函数来完成此功能。 答案:复制或拷贝

复制或拷贝构造函数就是用对象初始化新的对象。 9. 对赋值运算符进行重载时,应声明为___函数。 答案:(P183)类成员 [解析]运算符重载的方法有友元或者成员函数两种途径,但是赋值运算符只能使用成员函数的

方法来实现。

10. 如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加

入的语句___。

答案:(P109)friend void A::f();

[解析]成员函数作为另一个类的友元函数,格式为:friend 返回类型类名::函数(形参)。 11. 下列程序段的输出结果是___。

for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout<

答案:4

[解析]for循环结构,三个表达式的作用,初始化、循环判断条件和循环变量变化。循环执行了

三次,k的作用是计算i、j的和。

12. String 类的___方法返回查找到的字符串在主串的位置。 答案:(P40)find

[解析]string类对象方法的find,查不到字符串,则返回-1。 13. int n=0;

while(n=1)n++;

while循环执行次数是___。 答案:无限次

[解析]=是赋值运算符,不是关系运算符,且不等0,所以死循环。

14. 控制格式输入输出的操作中,函数___是用来设置填充字符。要求给出函数名和参数类型

答案:setfill(char)

[解析]格式控制方法的使用,如setw,setfill等等。

15. C++语言支持的两种多态性分别是编译时的多态性和___的多态性。 答案:运行时

[解析]多态性包括静态的(编译时)多态性和动态的(运行时)多态性。

16. 设函数sum是由函数模板实现的,并且sum(3,6)和sum(4.6,8)都是正确的函数调用,则函

数模板具有___个类型参数。 答案:2

17. 执行下列代码 string str(\

cout<

[解析]substr取子字符串,第1个参数表示要截取子串在字符串中的位置,第2个表示取多少个 字符。

18. 在面向对象的程序设计中,将一组对象的共同特性抽象出来形成___。 答案:类

[解析]类是相似特征的对象的抽象,对象是类的一个实例。

19. 定义类动态对象数组时,元素只能靠自动调用该类的___来进行初始化。 答案:无参构造函数

[解析]使用new 创建动态对象数组,不能有参数,所以只能调用无参的构造函数,初始化对象

20. 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。 答案:ector V2(V1);

[解析]采用向量初始化另一个向量的形式:vector name1(name);

三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下 横线标出错误所在行并给出修改意见。 1. #include class Test {private: int x,y=20; public:

Test(int i,int j){x=i,y=j;} int getx(){return x;} int gety(){return y;} };

void main() {Test mt(10,20);

cout<

}

答案:int x,y=20;在类内部不能对数据成员直接赋值。 [修改]int x,y;

2. #include class Test {int x,y; public:

fun(int i,int j) {x=i;y=j;} show()

{cout<<\if(y)

cout<<\cout<

void main() {Test a; a.fun(1); a.show(); a.fun(2,4); a.show(); }

答案:int i,int j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认 值。所以int i,int j错误。

[修改]int i,int j=0//注j只要有一个int类型的数据就行。 3. #include class A {int i; public:

virtual void fun()=0; A(int a) {i=a;} };

class B:public A {int j; public: void fun()

{cout<<\\n\B(int m,int n=0):A(m),j(n){} };

void main() {A *pa; B b(7); pa=&b;