精品0166《面向对象技术》复习思考题doc.docx
《精品0166《面向对象技术》复习思考题doc.docx》由会员分享,可在线阅读,更多相关《精品0166《面向对象技术》复习思考题doc.docx(13页珍藏版)》请在冰点文库上搜索。
精品0166《面向对象技术》复习思考题doc
(0166)《面向对象技术》复习思考题
一、选择题
1、以下说法中正确的是()
A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++函数必须有返冋值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一个程序文件中
2、一•个函数功能不太复杂,但要求被频繁调用,选用()
A.内联函数B.重载函数
C.递归函数D.嵌套函数
3、构造函数不具备的特征是()
A.构造函数的函数幺与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
4、下列不是描述类的成员函数的是()
A.友元函数B.析构函数
C.构造函数D.拷贝构造函数
5、intFunc(int,int):
不可与下列哪个函数构成重载()
intFunc(int,int,int);
doubleFunc(int,int);
doubleFunc(double,double);
D.doubleFunc(int,double):
6、一•个类可包含析构函数的个数是()
A.0个B.1个
C.至少一个D.0个或多个
7、在编译指令中,宏定义使用哪个指令()
A.tfincludeB.#define
C.#ifD.ftelse
8、在关键字public后面定义的成员为类的()
A.私有成员B.保护成员
C.公有成员D.任何成员
9、下列关于指针的运算中,()是非法的。
A.两个指针在一定条件下,可以进行相等或不等的运算;
B.可以用一个空指针赋值给某个指针;
C.一•个指针可以加上两个整数之差;
D.两个指针在一定条件下,可以相加。
10、在C++中,关于下列设置缺省参数值的描述中,止确的是()。
A.不允许设置缺省参数值;
B.在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;
C.只能在函数的定义中指定参数的缺省值;
0.设置缺省参数值时,必须全部都设置。
11、预处理命令在程序中是以()开头的。
A.*B.#C.:
D./
B.
关于delete运算符的下列描述中,鉛误的是()。
A.它必须用于new返回的指针;
B.使用它删除对彖时要调用析构函数;
C.对一个指针可以使用多次该运算符;
D.指针名前只有一对方括号符号,不管所删除数组的维数。
下列对派生类的描述中,()是错误的。
A.一个派生类可以作为另一个派生类的基类;
B.派生类至少应有-•个基类;
C.基类中成员的访问权限被派生类继承后都不改变;
D.派生类的成员除了自C定义的成员外,还包含了它的基类成员。
nidin函数在源程序中的位置()o
A.必须在最开始处B.必须在子函数的后面
C.可以任意D.必须在最后
在C++语言中,要求参加运算的数必须是整数的运算符是()。
A./B.!
C.%D.==
对两个基本类型相同的指针变量,不能进行的运算是()。
A.+B.-C.=D.==
下列各种高级语言中,()最早提出了对象的概念。
D.C卄
执行C卄程序时出现的“溢出”属于()错误。
D.逻辑
A.运行B.链接C.编译
下列关于引用的说法错误的是()。
A.不能声明一个指针的引用;
B.引用必须在定义的同时进行初始化;
C.返回引用的函数,可以作为左值被调用;
D.使用引用参数,可以实现将实参的地址传递给行参。
为表示关系xWyWz,止确的C++表达式是()。
A.(x<=y)&&(y<=z)B.(x<=y)AND(y<=z)
C.(x<=y<=z)D.(x<=y)&(y<=z)
若要求在if后一对圆括号中表示d不等于0的关系,则能止确表示这-关系的表达式)o
A.a<>0B.!
aC.a=0D.a
int*constp说明不能修改()。
A.p指针;
B.p指针指向的变量;
C.p指针指向的数据类型;
D.上述A、B、C三者。
下面的函数声明中,()是”voidBC(inta,intb);”的重载函数?
A.intBC(inta,intb)B.voidBC(inta,charb)
C.floatBC(inta,intb,intc=0)
D.voidBC(inta,intb二0)
26、下列静态数据成员的特性中,鉛误的是()o
A.说明静态数据成员时前边要加修饰符static;
B.引用静态数据成员时,必须用类名和作用域运算符引导;
C.静态数据成员是所有対象所共用的;
D.静态数据成员耍在类的定义之外进行初始化。
27、判断字符串si和s2是否相等的表达式为()=
A.sl=s2B.sl==s2
C.strcpy(si,s2)==0D.strcmp(sl,s2)==0
28、若用数组名作为调用函数的实际参数,则传递给形式参数的是()0
A.数纽存储首地址;
B.数纽的第一个元素值;
C.数组中全部元素的值;
D.数组元素的个数。
29.
下列关键字中,()不是类定义中使用的关键字。
关键字中,()不是类定义中使用的关键字。
30、在new运算符的下列描述中,()是错误的°
A.它可以动态创建对象和对彖数组;
B.用它创建对象数纽•时必须指定初始值:
C.用它创建对彖时要调用构造函数;
D.用它创建的刘象应使用运算符delete來释放。
31、主函数可以访问派生类的对象中它的哪一类基类成员?
()
A.公有继承的基类的公有成员
B.公有继承的基类的保护成员
C.公有继承的基类的私有成员
0.保护继承的基类的公有成员
)是错误的。
B.要求参数类型不同;
D.要求在参数个数相同时,参数类熨的顺序不同。
32、定义重载函数的下列条件中,(
A.要求参数个数不同;
C.要求函数返冋值类型不同;
33、下列函数中,()不能重载。
A.成员函数B.非成员函数
C.构造函数D.析构函数
34、下列有关运算符重载的描述中,()是正确的。
A.运算符重载可改变其优先级;
B.运算符重载不改变其语法结构;
C.运算符重载可改变其结合性;
D.运算符重载川•改变其操作数的个数。
35、C++语言的基本数据类型包括()。
A.整型、实型、逻辑型、空型
B.幣型、实型、字符型、空型
C.整型、字符型、逻辑型、空型
D.報型、实型、指针型、字符型
二、填空题
1、C++程序的源文件扩展名为o
2、假定一个二维数组的定义为inta[4][5],则该数组所含元素的个数为。
3、执行cout«char(,E*+2)<4、执行下列代码
cout〈<"Hex:
”«hex«255;
程序的输出结果为0
5、在32位机器中,若有定义:
intk=5;char"Beijing”;
intarrl[5];float*arr2=newfloat[k];
贝I」sizeof(k)=,sizeof(p)=,
sizeof(arrl)=,sizeof(arr2)=。
6、类是用户定义的类型,具有类类型的变量称作。
7、対象的四大基本特性是多态性、继承性、和封装性。
8、对彖将英大部分实现细节隐藏起來,这种机制称为。
9、不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为。
10、C++源程序经过和后生成可执行程序。
11、在C++中,访问指针所指向的对象的成员使用运算符0
12、C++是通过引用运算符来定义一个引用的。
13、如果一个引用不是用作函数参数或返冋值,则在说明该引用时必须对它进行
O
14、当一个成员函数被调用时,该成员函数的指向调用它的对象。
15、重载函数在参数类型或参数个数上不同,但相同。
16、定义内联函数的关键字是o
17、定义虚函数所用的关键字是。
18、指令指示编译器将一个源文件嵌入到带该指令的源文件Z中。
19、执行操作将释放山p所指向的动态分配的数据空间。
20、在C++中把不返冋任何类型的函数应该说明为-
三、判断题
1、C++每行可以写多条编译指令。
2、使用标准的输出流cout时,两个输出项之间用分隔。
3、运算符new可以创建变量或对象,也可以创建数纽。
4、派生类不能再派生新的类。
5、在公有继承中,派生类对象的成员函数可以访问基类中的私有成员。
6、运算符重载可以改变其优先级别。
7、函数参数个数和类羽都相同,只是返冋值类型不同,这不是重载苗数。
8、C++中的模板分为函数模板和类模板两种。
9、int*constp说明不能修改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、多态的实现需要迟后联编机制的支持。
23、用class定义的类中,默认的访问权限是私有的。
s定义的类中,默认的访问权限是私有的。
义的类中,默认的访问权限是私有的。
24、作为友元函数重载的一个运算符,英参数表中没有任何参数,表明它是1元运算符。
25、类的成员函数都应是公有的,而数据成员都应是私有的。
四、简答题
1、#include
voidmain()
cout«(i?
'0"
该程序运行的结果是什么?
2、#defineSQ(x)x*x
ttincludevoidmain()
{
inta=2,b=3;cout<}
该程序运行的结果是什么?
3>#include
voidmain()
{inti,count=0,suni=0;
floataverage;
inta[]={l,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
{if(a[i]%2==0)continue;
sum+=ci[i];
count++;
}
«average<average^sum/count;
cout«count二”«count<}
该程序运行的结果是什么?
4>#include
voidf(int*m,intn)
{inttemp;
temp二*m;柚二口;n二temp;
I
voidmain()
{inta=5,b=10;
f(&d,b);
cout<该程序运行的结果是什么?
5、#include
#include
inti=l;
voidothei-(void)
{
staticinta=2,b;
intc=10;
a=a+l;i=i+3;c=c+5;
cout«setw(5)«i«setw(5)«a«setw(5)«b«setw(5)«c«endl;
b=a;
)
voidmain(void)
{
staticinta;
intb=-5,c=0;
voidother(void);
cout«Miabc\nM;
cout«setw(5)«i«setw(5)«a«setw(5)«b«setw(5)«c«endl;
c=c+8;other();
cout«setw(5)«i«setw(5)«a«setw(5)«b«setw(5)«c«endl;
i=i+10;other();
}
6、指出#include和#includeufilename,h?
,的区别。
7、简述你对类的封装性的理解。
8、简述关键字const的作用(至少两条儿
9、简述关键字static的作用(至少两条)。
10、简述操作符sizeof的作用(至少两条)。
11、什么是this指针?
它的主要作用是什么?
12、使用内置函数的优点和限制分别是什么?
五、程序编写题
1、编程计算1+11+111+……+111111111=
2、编程将输入的止整数按反序输出,例如:
输入123,则输出321。
3、编写程序,统计一串字符中包含的单词数(假定单词以一•个或多个空格分隔)。
4、设计一个函数,判断整数n是否为素数。
5、编程输出一个二维数组中鞍点元素的值及其位置,鞍点元素在其所在行中最小、所在列中最大。
6、编写一个函数模板,对不同类型的数纽.求平均值。
在nidin函数屮分别求一个整型数组和
•个讥精度浮点型数组的平均值。
7、写一个函数,找岀给定字符串中数字字符(即’(T—9这10个数字)的个数,如字符串”olympic2000”中数字字符的个数为4个。
函数的原型为:
intCalcDigital(char*str);
//函数参数:
str为所要处理的字符串。
//函数返回值:
所给字符串中数字字符的个数。
intCalcDigital(char*str)
{
//在下面写出程序的实现
I
8、编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:
classString
{
public:
String(constchar*str二NULL);//普通构造函数
String(constString&s);//拷贝构造函数
"String();//析构函数
String&operator=(constString&s);//赋值函数
private:
char*m_data;//用于保存字符串
};
9、在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形
#include
#include
classpoint{
private:
floatx,y;
public:
point(floata,floatb){x=a;y=b;}
point(){x=0:
y=0;),
voidset(floata,floatb){x=a;y=b;}
floatgetx(){returnx;}
floatgety(){returny;}
};
classtri{
pointx,y,z;
floats1,s2,s3;
public;...settri(....);//用于输入三个顶点坐标
....test(....);//用于判断是否构成三角形
);
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数最,以及返冋值类型)