您的当前位置:首页正文

C++习题2(构造函数和静态成员)

来源:九壹网


习题2

第一题 选择:

1、 下面的程序输出结果是什么?

int i=2,sum=0;

while(i<=5){

sum=sum+i;

i=i+1; }

cout <<\"sum = \" <A、14 B、15 C、16 D、17

2、 下面的程序输出结果是什么?

int a = 8;

int b = ++a;

cout<int c = a++;

cout<A、9,9,10,9 B、9,10,10,9

C、9,9,9,9 D、9,9,10,10

3、 下面的程序输出结果是什么?

int x=0;

if(x = 0) cout<<\"a\";

else cout<<\"b\";

A、b B、a C、ab D、a b

4、 下面的程序输出结果是什么?

int x=0;

(x==0)?(cout<<\"1\"):(cout<<\"3\");

A、1 B、3 C、13 D、31

5、 下面的程序输出结果是什么?

int x=2;

switch(x){

case 1: cout<<\"1\";

case 2: cout<<\"2\";

case 3: cout<<\"3\"; break;

case 4: cout<<\"4\";

default:;

}

A、23 B、123

C、1234 D、234

6、 下面的程序输出结果是什么?

static int a[]={1,2,4};

for(int i=0; i<(sizeof(a)/sizeof(int)); i++)

cout <cout <A、1 2 4

B、1

C、1

2

4

D、12

7、 下面的程序输出结果是什么?

#include

void main()

{ int* iPtr;

int iCount=18;

iPtr=&iCount;

iCount++;

cout <<*iPtr <A、19 B、20 C、18 D、17

1、

8、 下面的程序输出结果是什么?

#include

void fun(char *s)

{

++s; ++s;

cout<<*s<}

void main()

{

char a[] = \"ABCDEFGHIJ\";

fun(a);}

A、C B、ABCDEFGHIJ C、CDEFGHIJ D、A

9、 数组定义为 int a[100];以下数组输入正确的是?

A、cin>>a[]; B、cin>>a[100];

C、for(int i=0;i<100;++i) cin>>a[i];

D、cin>>int a[100];

10、 下面的程序输出结果是什么?

#include

void fun(char *s)

{ ++s; ++s;

cout<}

void main()

{ char a[] = \"ABCDEFGHIJ\";

fun(a);

}

A、CDEFGHIJ B、C C、ABCDEFGHIJ D、J

11、 C++程序从上机到得到结果的几个操作步骤依次是( A. 编译、编辑、连接、运行

B. 编辑、编译、连接、运行

C. 编译、运行、编辑、连接

D. 编辑、运行、编辑、连接

12、 程序中主函数的名字为( )。

)。

A. main B. MAIN C. Main D. 任意标识符

13、 设int a=15,b=26;,则cout<<(a,b);的输出结果是( )。 A. 15 B. 26,15 C. 15,26 D. 26

14、 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为( )。

A. 1 B. 0 C. 与x值相同 D. 与x值相反

15、 字符串\"a+b=12\"的长度为( )。

A. 6 B. 7 C. 8 D. 9

16、 下列的符号常量定义中,错误的定义是( )。

A. const char M=10; B. const int M=20;

C. const char ch; D. const bool mark=true;

17、 循环语句\"for(int i=0; i18、 在下面循环语句中循环体执行的次数为( )。

int i=0,s=0; while(s<20) {i++; s+=i;}

)。

A. 4 B. 5 C. 6 D. 7

19、 在下面循环语句中循环体执行的次数为( )。

int i=0; do i++; while(i*i<10);

A. 4 B. 3 C. 5 D. 2

20、 假定一个二维数组的定义语句为\"int a[3][4]={{3,4},{2,8,6}};\",则元素a[2][1]的值为)。

A. 0 B. 4 C. 8 D. 6

21.下列的各类函数中,不是类的成员函数。( )

A)构造函数 B)析构函数 C)友元函数 D)拷贝初始化构造函数

22.作用域运算符\"::\"的功能是:( )

A)标识作用域的级别的 B)指出作用域的范围的

C)给定作用域的大小的 D)标识成员是属于哪个类的

23.在类定义的外部,可以被访问的成员有( )

A)所有类成员 B)private的类成员

C)public的类成员 D)public或private的类成员

24.关于类和对象不正确的说法是:( )

A)类是一种类型,它封装了数据和操作 B)对象是类的实例

C)一个类的对象只有一个 D)一个对象必属于某个类

25.在C++中实现封装是借助于( )

A)枚举 B) 类 C) 数组 D)函数

26.定义析构函数时,说法正确的是:( )

A)其名与类名完全相同 B)返回类型是void类型

C)无形参,也不可重载 D)函数体中必须有delete语句

27.类的指针成员的初始化是通过函数完成的,这个函数通常是:( )

A)析构函数 B) 构造函数 C)其它成员函数 D)友元函数

28.关于构造函数的说法,不正确的是:( )

A)没有定义构造函数时,系统将不会调用它 B)其名与类名完全相同

C)它在对象被创建时由系统自动调用 D)没有返回值

29.通常拷贝构造函数的参数是:( )

A)对象名 B)对象的成员名 C)对象的引用名 D)对象的指针名

30.关于成员函数特征的描述中,错误的是:( )

A)成员函数一定是内联函数 B)成员函数可以重载

C)成员函数可以设置参数的默认值 D)成员函数可以是静态的

31.有如下类声明\"class A{int x; ......};\",则A类的成员x是:( )

A)公有数据成员 B)私有数据成员 C)公有成员函数 D)私有成员函数

32.以下关键字不能用来声明类的访问权限的是:( )

A)public B)private C)static D)protected

33.类的私有成员可在何处访问( )

A)通过子类的对象访问 B)本类及子类的成员函数中

C)通过该类对象访问 D)本类的成员函数中

34.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:( )

A)编译器总是自动创建一个不带参数的构造函数 B)这个类没有构造函数

C)这个类不需要构造函数 D)该类不能通过编译

35.下列关于类的权限的描述错误的是:( )

A)类本身的成员函数只能访问自身的私有成员

B)类的对象只能访问该类的公有成员

C)普通函数不能直接访问类的公有成员,必须通过对象访问

D)一个类可以将另一个类的对象作为成员

36.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:(A)A类构造函数先执行 B)成员构造函数先执行

C)两者并行执行 D)不能确定

37拷贝构造函数的作用是( )。

A. 进行数据类型的转换 B. 用对象调用成员函数

C. 用对象初始化对象 D. 用一般类型的数据初始化对象

38.通过指针访问类对象成员的方法是( )。

A. :: B. ; C. . D. ->

39.对C++语言和C语言的兼容性,描述正确的是:( )

A)C++兼容C B)C++部分兼容C C)C++不兼容C D)C兼容C++

40.下列静态数据成员的特性中,错误的是( )。

A.静态数据成员的声明以关键字static开头

B. 静态数据成员必须在文件作用域内初始化

C. 引导数据成员时,要在静态数据成员前加(类名)和作用域运算符

D. 静态数据成员不是类所有对象共享的

第二题:填空题

1、 在撤销类的对象时,C++程序将自动调用该对象的_____函数。

2、 对类中的成员函数和属性的访问是通过______、______和______这3个关键字来控制的。

3、 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_______________ 。

3、 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句________________。

5、 在结构定义中,数据和成员函数默认权限是__________。在类定义中,数据和成员函数默认权限是___________。

6、 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__________权限,而把成员函数(方法)定义为__________权限。

7、 在类中定义和实现的函数称为_ __。

8、 非成员函数应声明为类的________才能访问这个类的private成员。

9. 假定x=10,则表达式x<=10?20:30的值为____________。

10.表达式sqrt(81)和pow(6,3)的值分别为______和______。

11. 用于输出表达式值的标准输出流对象是_________。

12. 用于从键盘上为变量输入值的标准输入流对象是________。

13. 一个函数定义由________和________两部分组成。

14.C++头文件和源程序文件的扩展名分别为______和______。

15.假定x是一个逻辑量,则x && !x的值为__________。

16.假定x是一个逻辑量,则x || !x的值为__________。

三、读程序写结果

1. 。

请问以下程序输出什么?

#include

class A{

public:

A(){x=0; cout<<\"CA0\"<A(int i){x=i; cout<<\"CA1\"<A(A &r){x=r.x; cout<<\"CA2\"<~A(){cout<<\"DA\"<private:

int x;

};

void f1(A m)

{}

void f2(A &m)

{}

int main()

{

A a;

A b(a);

f1(a);

f2(a);

}

四、程序填空:

1、class Point

{

public:

Point(int xx=0,int yy=0){X=xx; Y=yy;}

Point (Point& p) ;

int GetX() {return X;}

int GetY() {return Y;}

private:

int X,Y;

};

__________________//定义拷贝构造函数

{

X=p.X;

Y=p.Y;

}

int main()

{ Point A(1,2);

__________________//用对象A初始化新建对象B

cout<}

2、

class Student //定义Student类

{

public:

Student(int n,int a,float s):num(n),age(a),score(s){ } //定义构造函数

void total( );

__________________//声明静态成员函数average

private:

int num;

int age;

float score;

static float sum; //静态数据成员

static int count; //静态数据成员

};

__________________//定义成员函数total

{ sum+=score;

count++;

}

float Student∷average( ) //定义静态成员函数

{ return(sum/count); }

答案:

1.选择:

1

2

3

4

5

6

7

8

9

10

A

A

A

A

A

A

A

A

C

A

11

12

13

14

15

16

17

18

19

20

B

A

D

C

B

C

C

C

A

A

21

22

23

24

25

26

27

28

29

30

C

B

C

C

B

C

B

A

C

A

31

32

33

34

35

36

37

38

39

40

B

C

D

A

A

B

C

D

A

D

2.填空:

1.析构

2. public__、__protected__和___private

3. friend class FriendClass;___。

4. __friend void FriendFunction();_

5. _public__ private___

6. private_ public

7.内联函数

8.友元函数

9.20

10.9,216

11.cout

12.cin

13函数头和函数体

14 .h .cpp

15false (或0)

16. true (或1)

第三题读程序:

答案:屏幕上输出,CA2,CA2,不输出。

第四题:

1. Point::Point (Point& p) Point B(A)或者Point B=A;

2. static float average( );void Student::total( )

1

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

Top