0166《面向对象技术》复习思考题docWord格式文档下载.docx
《0166《面向对象技术》复习思考题docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《0166《面向对象技术》复习思考题docWord格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。
C.一个指针可以加上两个整数之差;
D.两个指针在一定条件下,可以相加。
10、在C++中,关于下列设置缺省参数值的描述中,正确的是()。
A.不允许设置缺省参数值;
B.在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;
C.只能在函数的定义中指定参数的缺省值;
D.设置缺省参数值时,必须全部都设置。
11、预处理命令在程序中是以(
A.*B.#
12、按照标识符的要求,()符号不能组成标识符。
A.-B._C.大小写字母D.数字字符
13、假定a为一个数组名,则下面的哪一种表示有错误。
()
A.a[i]B.*(a+l)C.*aD.*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.Algol60
B.Simula67
C.Smalltalk
D.C++
20、执行C++程序时出现的“溢出”属于()错误。
D.逻辑
A.运行B.链接C.编译
21、下列关于引用的说法错误的是()。
A.不能声明一个指针的引用;
B.引用必须在定义的同时进行初始化;
C.返回引用的函数,可以作为左值被调用;
D.使用引用参数,可以实现将实参的地址传递给行参。
22、为表示关系xWyWz,正确的C++表达式是()。
A.(x<
=y)&
&
(y<
=z)B.(x<
=y)AND(y<
=z)
C.(x<
=y<
=z)D.(x<
23、若要求在if后一对圆括号中表示a不等于。
的关系,则能正确表示这一关系的表达式为()o
A.a<
>
0B.!
aC.a=0D.a
24、int*constp说明不能修改()。
A・p指针;
B・p指针指向的变量;
C.p指针指也的数据类型;
D.
上述A、B、C三者。
floatBC(inta,intb,intc=0)D.voidBC(inta,intb=0)
26、下列静态数据成员的特性中,错误的是()。
A.说明静态数据成员时前边要加修饰符static;
B.引用静态数据成员时,必须用类名和作用域运算符引导;
C.静态数据成员是所有对象所共用的;
D.静态数据成员要在类的定义之外进行初始化。
27、判断字符串si和s2是否相等的表达式为()o
A.sl=s2B.sl==s2
C.strcpy(si,s2)==0D.strcmp(sl,s2)==0
28、若用数组名作为调用函数的实际参数,则传递给形式参数的是()。
A.数组存储首地址;
B.数组的第一个元素值;
C.数组中全部元素的值;
数组元素的个数。
关键字中,()不是类定义中使用的关键字。
30、在new运算符的下列描述中,()是错误的。
A.它可以动态创建对象和对象数组;
B.用它创建对象数组时必须指定初始值;
C.用它创建对象时要调用构造函数;
D.用它创建的对象应使用运算符delete来释放。
31、主函数可以访问派生类的对象中它的哪一类基类成员?
A.公有继承的基类的公有成员
B.公有继承的基类的保护成员
C.公有继承的基类的私有成员
D.保护继承的基类的公有成员
)是错误的。
B.要求参数类型不同;
D.要求在参数个数相同时,参数类型的顺序不同
32、定义重载函数的下列条件中,(A.要求参数个数不同;
C.要求函数返I口|值类型不同;
33、下列函数中,()不能重载。
A.成员函数B.非成员函数
C.构造函数D.析构函数
)是正确的。
34、下列有关运算符重载的描述中,(
A.运算符重载可改变其优先级;
B.运算符重载不改变其语法结构;
C.运算符重载可改变其结合性;
D.运算符重载可改变其操作数的个数。
35、C++语言的基本数据类型包括()。
A.整型、实型、逻辑型、空型
B.整型、实型、字符型、空型
C.整型、字符型、逻辑型、空型
D.整型、实型、指针型、字符型
二、填空题
1、C++程序的源文件扩展名为o
2、假定一个二维数组的定义为inta[4][5],则该数组所含元素的个数为。
执行cout«
charCE'
+2)<
Xendl;
语句后得到的输出结果是。
4、执行下列代码
cout<
X"
Hex:
"
«
hex«
255;
程序的输出结果为。
5、在32位机器中,若有定义:
intk=5;
char*p="
Beijing"
;
intarrl[5];
float*arr2二newfloat[k];
贝Ijsizeof(k)=,sizeof(p)=,
sizeof(arrl)=,sizeof(arr2)=。
6、类是用户定义的类型,具有类类型的变量称作。
7、对象的四大基本特性是多态性、继承性、和封装性。
8、对象将其大部分实现细节隐藏起来,这种机制称为o
9、不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为。
10、C++源程序经过和后生成可执行程序。
11、在C++中,访问指针所指向的对象的成员使用运算符。
12、C++是通过引用运算符来定义一个引用的。
13、如果一个引用不是用作函数参数或返I口I值,则在说明该引用时必须对它进行
14、当一个成员函数被调用时,该成员函数的指向调用它的对象。
15、重载函数在参数类型或参数个数上不同,但相同。
16、定义内联函数的关键字是。
17、定义虚函数所用的关键字是。
18、指令指示编译器将一个源文件嵌入到带该指令的源文件之中。
19、执行一操作将释放由P所指向的动态分配的数据空间。
20、在C++中把不返|口|任何类型的函数应该说明为o
三、判断题
1、C++每行可以写多条编译指令。
2、使用标准的输出流cout时,两个输出项之间用分隔。
3、运算符new可以创建变景或对象,也可以创建数组。
4、派生类不能再派生新的类。
5、在公有继承中,派生类对象的成员函数可以访问基类中的私有成员。
6、运算符重载可以改变其优先级别。
7、函数参数个数和类型都相同,只是返I口I值类型不同,这不是重载函数。
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<
iostream.h>
voidmain()
for(inti=-l;
iv4;
i++)
cout«
(i?
'
O'
该程序运行的结果是什么?
2、#defineSQ(x)x*x
#include<
iostream.h>
(
inta=2,b=3;
<
SQ(a+b)«
endl;
}
#include<
voidmainO
(inti,count=0,sum=0;
floataverage;
inta[]=(l,2,3,4,5,6,7,8,9,10};
for(i=0;
i<
10;
(if(a[i]%2==0)continue;
sum+=a[i];
count++;
)
average^sum/count;
cout<
”count="
count<
"
\t'
average=”«
average<
endl;
4、#include<
voidf(int*m,intn)
(inttemp;
temp=*m;
*m=n;
n=temp;
(inta=5,b=10;
f(&
a,b);
a<
”«
b<
5>
#include<
iomanip.h>
inti=l;
voidother(void)
staticinta=2,b;
intc=10;
a=a+1;
i=i+3;
c=c+5;
setw(5)«
i«
set\v(5)«
a«
b«
c«
b=a;
voidmain(void)
staticinta;
intb=-5,c=0;
voidother(void);
niabc\n"
c=c+8;
other();
i=i+10;
指出#include〈filename.h>
和#includeufilename,h"
的区别。
7、简述你对类的封装性的理解。
8、简述关键字const的作用(至少两条)o
9、简述关键字static的作用(至少两条)。
10、简述操作符sizeof的作用(至少两条)。
11、什么是this指针?
它的主要作用是什么?
12、使用内置函数的优点和限制分别是什么?
五、程序编写题
1、编程计算1+11+111+……+111111111。
2、编程将输入的正整数按反序输出,例如:
输入123,则输出321。
3、编写程序,统计一串字符中包含的单词数(假定单词以一个或多个空格分隔)。
4、设计一个函数,判断整数n是否为素数。
5、编程输出一个二维数组中鞍点元素的值及其位置,鞍点元素在其所在行中最小、所在列中最大。
6、编写一个函数模板,对不同类型的数组求平均值。
在main函数中分别求一个整型数组和一个单精度浮点型数组的平均值。
7、写一个函数,找出给定字符串中数字字符(即'
0'
一‘9,这10个数字)的个数,如字符串”olympic2000”中数字字符的个数为4个。
函数的原型为:
intCalcDigital(char*str);
〃函数参数:
str为所要处理的字符串。
//函数返回值:
所给字符串中数字字符的个数。
intCalcDigital(char*str)
〃在下面写出程序的实现
8、编写类String的构造函数、析构函数和赋值函数,L2知类String的原型为:
classString
public:
String(constchar*str=NULL);
//普通构造函数
String(constString&
s);
//拷贝构造函数
^String();
〃析构函数
String&
operator=(constString&
//赋值函数
private:
chardata;
〃用于保存字符串
);
9、在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形
math.h>
classpoint(
private:
floatx,y;
public:
point(floata,floatb)(x=a;
y=b;
point()(x=0;
y=0;
},
voidset(floata,floatb)(x=a;
floatgetx()(returnx;
floatgety()(returny;
};
classtri(
pointx,y,z;
floatsi,s2,s3;
public;
...settri(....);
//用于输入三个顶点坐标
・.・・test(....);
//用于判断是否构成三角形
};
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返1口1值类型)