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

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

习题2 第一题选择:

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

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、下面的程序输出结果是什么?A

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、下面的程序输出结果是什么?A

int x=0;

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

else cout<<"b";

A、b

B、a

C、ab

D、a b

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

int x=0;

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

A、1

B、3

C、13

D、31

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

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、下面的程序输出结果是什么?A

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、下面的程序输出结果是什么?A

#include

void main()

{ int* iPtr;

int iCount=18;

iPtr=&iCount;

iCount++;

cout <<*iPtr <

A、19

B、20

C、18

D、17

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

#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];以下数组输入正确的是?C

A、cin>>a[];

B、cin>>a[100];

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

D、cin>>int a[100];

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

#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++程序从上机到得到结果的几个操作步骤依次是( B )。

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

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

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

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

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

A. main

B. MAIN

C. Main

D. 任意标识符

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

A. 15

B. 26,15

C. 15,26

D. 26

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

A. 1

B. 0

C. 与x值相同

D. 与x值相反

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

A. 6

B. 7

C. 8

D. 9

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

A. const char M=10;

B. const int M=20;

C. const char ch;

D. const bool mark=true;

17、循环语句“for(int i=0; i

A. 1

B. n-1

C. n

D. n+1

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

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

A. 4

B. 5

C. 6

D. 7

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

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

A. 0

B. 4

C. 8

D. 6

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

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

22.作用域运算符“::”的功能是:(B)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

A. 进行数据类型的转换

B. 用对象调用成员函数

C. 用对象初始化对象

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

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

A. ::

B. ;

C. .

D. ->

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

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

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

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

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

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

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

第二题:填空题

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

2、对类中的成员函数和属性的访问是通过public__、__protected__和___private

这3个关键字来控制的。

3、若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句__ friend class FriendClass;___。_____________ 。

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

5、在结构定义中,数据和成员函数默认权限是_ _public___

_________。在类定义中,数据和成员函数默认权限是__ private____________。

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

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

8、非成员函数应声明为类的_友元函数

_______才能访问这个类的private成员。

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

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

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

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

13. 一个函数定义由_函数头_______和_函数体_______两部分组成。

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

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

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

三、读程序写结果

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);

}

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

四、程序填空:

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;

};

__ Point::Point (Point& p)________________//定义拷贝构造函数{

X=p.X;

Y=p.Y;

}

int main()

{ Point A(1,2);

__ Point B=A;________________//用对象A初始化新建对象B cout<

}

2、

class Student //定义Student类

{

public:

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

void total( );

__ static float average( );________________//声明静态成员函数average private:

int num;

int age;

float score;

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

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

};

__ void Student::total( )________________//定义成员函数total

{ sum+=score;

count++;

}

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

{ return(sum/count); }

答案:

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( )

相关主题
相关文档
最新文档