(0166)《面向对象技术》复习思考题

(0166)《面向对象技术》复习思考题
(0166)《面向对象技术》复习思考题

(0166)《面向对象技术》复习思考题

一、选择题

1、下列关键字中,( )不是类定义中使用的关键字。

关键字中,( )不是类定义中使用的关键字。

的关键字。

A. class

B. public

C. switch

D. private

. public C. switch D. private

tch D. private

2、在new运算符的下列描述中,( )是错误的。

A. 它可以动态创建对象和对象数组;

B. 用它创建对象数组时必须指定初始值;

C. 用它创建对象时要调用构造函数;

D. 用它创建的对象应使用运算符delete来释放。

3、主函数可以访问派生类的对象中它的哪一类基类成员?( )

A. 公有继承的基类的公有成员

B. 公有继承的基类的保护成员

C. 公有继承的基类的私有成员

D. 保护继承的基类的公有成员

4、定义重载函数的下列条件中,( )是错误的。

A. 要求参数个数不同;

B. 要求参数类型不同;

C. 要求函数返回值类型不同;

D. 要求在参数个数相同时,参数类型的顺序不同。

5、下列函数中,( )不能重载。

A. 成员函数

B. 非成员函数

C. 构造函数

D. 析构函数

6、下列有关运算符重载的描述中,( )是正确的。

A. 运算符重载可改变其优先级;

B. 运算符重载不改变其语法结构;

C. 运算符重载可改变其结合性;

D. 运算符重载可改变其操作数的个数。

7、下列构造函数的特点中,( )是错误的。

错误的。

A. 构造函数具有一般成员函数的特点;

有一般成员函数的特点;

B. 构造函数的名称与其类名相同;

C. 构造函数必须指明其类型;

D. 一个类中可定义1个或多个构造函数。

与其类名相同;

C. 构造函数必须指明其类型;

D. 一个类中可定义1个或多个构造函数。

8、C++语言的基本数据类型包括( )。

A. 整型、实型、逻辑型、空型

B. 整型、实型、字符型、空型

C. 整型、字符型、逻辑型、空型

D. 整型、实型、指针型、字符型

9、下列关于指针的运算中,( )是非法的。

A.两个指针在一定条件下,可以进行相等或不等的运算;

B.可以用一个空指针赋值给某个指针;

C.一个指针可以加上两个整数之差;

D.两个指针在一定条件下,可以相加。

10、在C++中,关于下列设置缺省参数值的描述中,正确的是( )。

A. 不允许设置缺省参数值;

B. 在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;

C. 只能在函数的定义中指定参数的缺省值;

D. 设置缺省参数值时,必须全部都设置。

11、预处理命令在程序中是以( )开头的。

A. *

B. #

C.:

D./

12、按照标识符的要求,( )符号不能组成标识符。

A. -

B. _

C. 大小写字母

D. 数字字符

13、假定a为一个数组名, 则下面的哪一种表示有错误。( )

A. a[i]

B. *(a+1)

C. *a

D. *a++

14、关于delete运算符的下列描述中,错误的是( )。

A. 它必须用于new返回的指针;

B. 使用它删除对象时要调用析构函数;

C. 对一个指针可以使用多次该运算符;

D. 指针名前只有一对方括号符号,不管所删除数组的维数。

15、下列对派生类的描述中,( )是错误的。

A. 一个派生类可以作为另一个派生类的基类;

B. 派生类至少应有一个基类;

C. 基类中成员的访问权限被派生类继承后都不改变;

D. 派生类的成员除了自己定义的成员外,还包含了它的基类成员。

16、main函数在源程序中的位置()。

A. 必须在最开始处

B. 必须在子函数的后面

C. 可以任意

D. 必须在最后

17、在c++语言中,要求参加运算的数必须是整数的运算符是()。

A. /

B.!

C. %

D. = =

18、对两个基本类型相同的指针变量,不能进行的运算是()。

A. +

B. -

C. =

D. = =

19、下列各种高级语言中,( )最早提出了对象的概念。

A.A1gol 60 B.Simula 67 C.Smalltalk D.C++

20、执行C++程序时出现的“溢出”属于( )错误。

A.运行 B.链接 C.编译 D.逻辑

21、下列关于引用的说法错误的是( )。

A.不能声明一个指针的引用;

B.引用必须在定义的同时进行初始化;

C.返回引用的函数,可以作为左值被调用;

D.使用引用参数,可以实现将实参的地址传递给行参。

22、为表示关系x≤y≤z,正确的C++表达式是( )。

A.(x<=y)&&(y<=z) B.(x<=y)AND(y<=z)

C.(x<=y<=z) D.(x<=y)&(y<=z)

23、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )。

A.a< >0 B.!a C.a=0 D.a

24、int * const p说明不能修改( )。

A.p指针;

B.p指针指向的变量;

C.p指针指向的数据类型;

D.上述A、B、C三者。

25、下面的函数声明中, ( )是” void BC(int a, int b);”的重载函数?

A.int BC(int a, int b) B.void BC(int a, char b)

C.float BC(int a, int b, int c=0) D.void BC(int a, int b=0)

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

A.说明静态数据成员时前边要加修饰符static;

B.引用静态数据成员时,必须用类名和作用域运算符引导;

C.静态数据成员是所有对象所共用的;

D.静态数据成员要在类的定义之外进行初始化。

27、判断字符串s1和s2是否相等的表达式为()。

A.s1=s2 B.s1= =s2

C.strcpy(s1,s2)= =0 D.strcmp(s1,s2)= =0

28、若用数组名作为调用函数的实际参数,则传递给形式参数的是()。

A.数组存储首地址;

B.数组的第一个元素值;

C.数组中全部元素的值;

D.数组元素的个数。

二、填空题

1、假定一个二维数组的定义为int a[4][5],则该数组所含元素的个数为___ ___。

2、预处理命令在程序中都是以_____ ___开头的。

3、执行cout<< char('E'+2)<

4、在32位机器中,若有定义:

int k=5; char *p=“Beijing”;

int arr1[5]; float *arr2=new float[k];

则 sizeof(k)=________, sizeof(p)=_________,

sizeof(arr1)=___________, sizeof(arr2)=__________。

5、面向对象系统最突出的特征是________性、________性和多态性。

6、C++源程序经过________和________后生成可执行程序。

7、任何一条C++语句都应该以________或________结束。

8、使用标准的输入流cin时,两个输入项之间用________分隔。

9、使用标准的输出流cout时,两个输出项之间用________分隔。

10、定义内联函数的关键字是________。

三、判断题

1、类的成员函数都应是公有的,而数据成员都应是私有的。

2、用class定义的类中,默认的访问权限是公有的。

s定义的类中,默认的访问权限是公有的。

义的类中,默认的访问权限是公有的。

3、运算符new可以创建变量或对象,也可以创建数组。

4、派生类不能再派生新的类。

5、在公有继承中,派生类对象的成员函数可以访问基类中的私有成员。

6、运算符重载可以改变其结合性。

7、函数参数个数和类型都相同,只是返回值类型不同,这不是重载函数。

8、C++中的模板分为函数模板和类模板两种。

9、const int *p说明不能修改p指针。

10、一个类的所有公共成员信息构成了它对外界的接口。

11、在C++中,China和china将被视作两个不同的变量。

12、定义对象引用时,系统会自动调用对应类的构造函数。

13、static关键字可以延长局部变量的生存期。

14、static关键字可以扩大全局变量的作用域。

15、C++允许使用友元,但是友元会破坏封装性。

16、友元函数可以通过使用this指针直接访问类的私有成员。

17、类的成员可以全部为私有的,也可以全部为公共的,或者一部分为私有、一部分为公共的。

18、定义一个对象时,系统只存储其数据成员而不用存储成员函数。

19、字符串”hello,world”在内存中存放时,共占用11个字节的空间。

20、参数的缺省值只能在函数的定义性声明中指定。

21、break语句和continue语句都只能用在循环语句中。

22、多态的实现需要迟后联编机制的支持。

四、简答题

1、 #define SQ(x) x*x

#include

void main()

{

int a = 2, b = 3;

cout << SQ(a+b) << endl;

}

该程序运行的结果是什么?

2、#include(iostream.h)

void main()

{int i,count=0,sum=0;

float average;

int a[]={1,2,3,4,5,6,7,8,9,10};

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

{if(a[i]%2==0)continue;

sum+=a[i];

count++;

}

average=sum/count;

cout<<”count=”<

}

该程序运行的结果是什么?

3、#include

void f(int *m,int n)

{ int temp;

temp=*m;*m=n;n=temp;

}

void main()

{ int a=5,b=10;

f(&a,b);

cout<

}

该程序运行的结果是什么?

4、指出#include 和#include“filename.h”的区别。

5、简述你对类的封装性的理解。

6、简述关键字const的作用(至少两条)。

7、简述关键字static的作用(至少两条)。

8、简述操作符sizeof的作用(至少两条)。

9、什么是this指针?它的主要作用是什么?

10、使用内置函数的优点和限制分别是什么?

五、程序编写题

1、编程计算1+11+111+ (111111111)

2、编程将输入的正整数按反序输出,例如:输入123,则输出321。

3、编写程序,统计一串字符中包含的单词数(假定单词以一个或多个空格分隔)。

4、设计一个函数,判断整数n是否为素数。

5、编程输出一个二维数组中鞍点元素的值及其位置,鞍点元素在其所在行中最小、所在列中最大。

6、编写一个函数模板,对不同类型的数组求平均值。在main函数中分别求一个整型数组和一个单精度浮点型数组的平均值。

7、写一个函数,找出给定字符串中数字字符(即’0’—‘9’这10个数字)的个数,如字符串”olympic2000”中数字字符的个数为4个。函数的原型为:

int CalcDigital(char *str);

//函数参数:str为所要处理的字符串。

//函数返回值:所给字符串中数字字符的个数。

int CalcDigital(char *str)

{

//在下面写出程序的实现

}

8、编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:

class String

{

public:

String(const char *str =NULL); //普通构造函数

String(const String&s); //拷贝构造函数

~String(); //析构函数

String & operator =(const String &s); //赋值函数

private:

char *m_data; //用于保存字符串

};

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