c面向对象程序设计语言重点难点复习题及答案.pdf
《c面向对象程序设计语言重点难点复习题及答案.pdf》由会员分享,可在线阅读,更多相关《c面向对象程序设计语言重点难点复习题及答案.pdf(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2、如果一个函数定义中使用了些叵匚修饰,则该函数不允许被其它文件中的函数调用。5、C+程序运行时的内存空间可以分成全局数据区,堆区,栈区和代码区。6、局部变量具有局部生存期,存放在内存的栈区中。7、对类中对象成员的初始化是通过在构造函数中给出的初始化表来实现的。8、对类中常量成员的初始化是通过在构造函数中给出的初始化表来实现的。9、对类中引用成员的初始化只能通过在构造函数中给出的初始化我来实现。1 0、对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来实现,也可以通过构造函数中的函数体来实现。1 1、假定要把a a 定义为A B 类中的一个常量整数型数据成员,则定义语句c on
2、st in t a a,1 2、假定要把a a 定义为A B 类中的一个引用整数型数据成员,则定义语句为in t&a a 1 3、假定A B 类中只包含一个整型数据成员a,并且它是一个常量成员,若利用参数a a 对其进行初始化,则该类的构造函数的定义为A B (in t a a)a=a a;1 4、假定A B 类中只包含一个整型数据成员a,并且它是一个引用成员,若利用 引 用 参 数 aa对 其 进 行 初 始 化,则 该 类 的 构 造 函 数 的 定 义 为 A B(in t&a a)a=a a;。1 5、静态成员函数能够直接访问类的静态数据成员,只能通过对象名访问类的非静态数据成员。1
3、6、静态数据成员必须在所有函数的定义体外进行也始化。1 7、一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上类域的限定。四、修改程序题:下列程序段中,A _c l a ss的成员函数V a ria n c e。可求出两数的平方差,请改写该程序段,把 V a ria n c e。函数从A _c l a ss类中分离出来,用友元函数来实现该函数的功能。c l a ss A _c l a ss priva te:in t x,y,t;pub l ic:A _c l a ss(in t i,in t j):x(i),y(j)if(y x)t=x;x=y;y=t;)in t
4、 V a ria n c e 0 re turn x*x-y*y;其它函数从略);void m a in()A _c l a ss A _ob j 5);c outz,R e sul t/A _ob j.V a ria n c e ()x)t=x;x=y;y=t;)f rie n d in t V a ria n c e();其它函数从略);in t va ria n c e ()re turn x*x-y*y;)void m a in()A _c l a ss A _ob j(3,5);c outz/R e sul t:z/A _ob j.V a ria n c e ()变量s 的定义为“c
5、har*s=v Hello world!”;,要使变量p 指向s 所指向的同一个字符串,则应选取(A)。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s11、关于void指针,下列说法正确的是(C)。A.void指针就是未指向任何数据的指针B.void指针就是已定义而未初始化的指针C.指向任何类型数据的指针可直接赋值给一个void指针D.void指针值可直接赋给一个非void指针12、假定一条定义语句为“int a10,x,*pa=a;,若要把数组a 中下标为3的元素值赋给x,则不正确的语句为(I)。A.x=pa3;B.x=*(a+3);C.
6、x=a3;D.x=*pa+3;13、假定有定义“int b10;int*pb;,则不正确的赋值语句为(D)。A.pb=b;B.pb=&b0;C.*pb=new int;D.pb=b5;14、假定p 是具有double类型的指针变量,则表达式+p使 p 的值(以字节为单 位)增 加(C)。A.1 B.4 C.sizeof(double)D.sizeof(p)15、假定p 指向的字符串为 string,则 coutp+3的输出结果为(C).A.string B.ring C.ing D.i16、假定p 指向的字符串为”string,若要输出这个字符串的地址值,则使用(D)oA.cout*s;B.c
7、outs;C.cout&s;D.cout12,35;C.*(p a+5)=1 2.3 5;D.*(a 0 +5)=1 2.3 5;2 1、假定变量b 和 p b 定义为“in t b 1 0 ,*p b=b;w,要将2 4 赋值给b l 元素中,不正确的语句是(C )。A.*(p b+l)=2 4;B.*(b+l)=2 4;C.*+b=2 4;D.*+p b=2 4;2 2、假定指针变量p 定义为 in t *p=n e w in t(l O O);,要释放p 所指向的动态内存,应使用语句(A )。A.d e l e t e p;B.d e l e t e *p;C.d e l e t e&p
8、;D.d e l e t e p;2 3、假定指针变量p 定义为 in t *p=n e w in t 3 0 ;,要释放p 所指向的动态内存,应使用语句(D )。A.d e l e t e p;B.d e l e t e *p;C.d e l e t e&p;D.d e l e t e p;2 4、当类中一个字符指针成员指向具有n 个字节的存储空间时,它所能存储字符串的最大长度为(C )。A.n B.n+1 C.n-1 D.n-22 5、在一个川链表实现的队列类中,假定每个结点包含的值域用e l e m 表示,包含的指针域用n e x t 表示,链队的队首指针用e l e m H e a d
9、 表示,队尾指针用e l e m T a il 表示,若链队非空,则进行插入时必须把新结点的地址赋给(D 兀A.e l e m H e a d B.e l e m T a i1C.e l e m H e a d-n e x t 和 e l e m H e a d D.e l e m T a il-n e x t 和 e l e m T a il2 6、在一个用链表实现的队列类中,假定每个结点包含的值域用e l e m 表示,包含的指针域用n e x t 表示,链队的队首指针用e l e m H e a d 表示,队尾指针用e l e m T a il 表示,若链队为空,则进行插入时必须把新结点
10、的地址赋给(C)。A.e l e m H e a d B.e l e m T a ilC.e l e m H e a d 和 e l e m T a ilD.e l e m H e a d 或 e l e m T a il2 7、当类中的一个整型指针成员指向一块具有n*s iz e o f (in t)大小的存储空间时,它最多能够存储(A )个整数。A.nB.n+1 C.n-1 D.12 8、假定A B 为一个类,则执行A.动态分配一个数组“A B *p x=n e w A B n ;”语句时将(AB.动态分配一个对象)。C.静态分配一个数组D.静态分配一个对象2 9、设 p x 是指向一个类
11、对象的指针变量,则 执 行“d e l e t e p x;”语句时,将自动调用该类的(C )A.无参构造函数 B.带参构造函数 C.析构函数 D.拷贝构造函数3 0、当一个类对象离开它的作用域时,系统自动调用该类的(D )。A.无参构造函数 B.带参构造函数 C.拷贝构造函数D.析构函数3 1、假定一个类对象数组为A n ,当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C )。A.0 B.1 C.n D.n-13 2、假定A B 为一个类,则执行次数为(D )。“A B 语句时调用该类无参构造函数的A.0 B.1C.9 D.1 03 3、假定A B 为一个类,则执行造函数的次数为
12、(A )。“A B *p x=n e w A B n ;M语句时调用该类无参构A.n B.n-13 4、假定A B 为一个类,则执行数的次数为(A )。C.1 D.0“A B a,b(3),*p;”语句时共调用该类构造函A.2 B.3 C.4 D.53 5、假定A B 为一个类,则执行构造函数的次数为(B )。“A B a ,b 3 ,*p 4 ;”语句时共调用该类A.3 B.4 C.53 6、假定A B 为一个类,则执行“A B a,类无参构造函数的次数为(D )D.9b(2),c ,*p=&a;语句时共调用该A.5 B.6 C.3D.43 7、假定A B 为一个类,则执行 A B *p=n
13、 e w A B(1,2);”语句时共调用该类构造函数的次数为(B )。A.0 B.1 C.2 D.33 8、假定A B 为一个类,p x 为指向该类的一个含有n 个对象的动态数组的指针,则执行“d e l e t e 口 p x;”语句时共调用该类析构函数的次数为(C )。A.0 B.1 C.n D.n+1二、填空题:1、用于存储一个长度为n的字符串的字符数组的长度至少为_ n+l。2、若 a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为_ g e t l in e(c in,a);_ _ _ _ _ _ _ _ _,3、若 a是 一 个 而 薮 血,则向屏幕输出a中所存字符串的
14、表达式为_ c o u t a _ _ _ _ _ _ _。4、一个二维字符数组a 1 0 2 0 能够存储_ 1 0 _ _ _ _ _ 个字符串,每个字符串的长度至多为_19_ _ _ _。5、对一个二维字符数组a 进行初始化的数据为“1 2 3“,“4 5 6“,“7 8 9”,则 a l 元 素 对 应 的 字 符 串 为 4 5 6 _ _ _ _ _ _ _ _ o6、s t r l e n (a p p l e )的值为_ 5,s t r c m p (a ,A )的值为_ _ _ _ _ _ _。7、假定对数组a 口进行初始化的数据为 2,7,9,6,5,7,1 0 ,则 a
15、2 和 a 5 分别被初始化为9 和 7 。8、假定对二维数组a 3 4 进行初始化的数据为 3,5,6 ,2,8 ,7 ,则a l 1 和 a 2 3 分别被初始化为 8 和 0 。9、若二维数组a 有 m 列,设 a 0 0 位于数组的第一个位置上,则计算任一元素a i j 在数组中位置序号的公式为_ i*m+j+l 。1 0、若有定义“d o u b l e a 3 5 有“,则 a数组中行下标和列下标的最大值分别为 2 _ _ _ _和_ 4 _ _ _ _。1 1、一个指针类型的对象占用内存的 4 _ _ _ _ 个字节的存储空间。1 2、一个指针指向一个数据对象,它保存着该数据对象
16、的一地址,若数据对象为DataType类型,则相应的指针类型为_ _ _ D a t a t y p e*。13、若要把一个整型指针p 转换为字符指针,则采用的强制转换表达式为_(char*)p,14、假定一个数据对象为int*类型,则指向该对象的指针类型为_int*_.15、二假定p 是一个指向整数对象的指针,则 用*P 表示该整数对象,用P 表示指针变量p 的地址。16、假定p 是一个指针,则*p+运算首先访问_*p_,幅使 p_的值增I-17、假 定 p 是一个指针,则(*田+运算首先访问一*p _,然后使_*p的值增1。18、假 定 p 所指对象的值为25,p+1所指对象的值为4 2,
17、则*p+的值为_25_ o19、假 定 p 所指对象的值为25,p+1所指对象的值为4 2,则*+p的值为_42_ 20、假定p 所指对象的值为25,p+1所指对象的值为4 2,则执行(*p)+运算后,P所指对象的值为-26_。21、傀 p 所指对象的值为25,p+1所指对象的值为42,则挽亍*(p+)或*p+运算后,P 所指对象的值为 42。22、假定a 是一个一维指针数组,则 a+i所指对象的地址比a 大_4*i_字节。23、假定a 是一个一维数组,则 a i的指针访问方式为_*(a+i)_。24、假 定 a 是一个一维数组,则 a i对应的存储地址(以字节为单位)为_ a+i*sizeo
18、f(aij)_。25、一个数组的数由万场上是指向该数组首一元素的指针,并且在任何时候都不允许_ _ _ _修改它。26、假定指向一维数组b10中元素b4的指针为p,则 p+3所指向的元素为_ _ b7_,P-2所指向的元素为 2。27、若 要 定 义 整 型 指 针 p 并 初 始 指 向 X,则所使用的定义语句为_int*p=&x_。28、若 p 指向x,则_*p _ 与 x 的表示是等价的。29、在一个二维数组int 中,包含的一维元素a i的类型为一i nt n,访问a i时返回值的类型为_ i nt*。30、假定一个二维数组为c5 8,则 c3的值为二维元素c3 0.的地址,c3+2的
19、值为二维元素c3 2的地址。31、假 定 p 为指向二维数组int d46的指针,则 p 的类型为一int(*)6o32、假定a 是一个二维数组,则 的 指 针 访 问 方 式 为 _*(*(a+i)+j)33、执行int p=new in t操作得到的一个动态分配的整型对象为一*p。34、执 行 int*p=new int 10操作,使 p 指向动态分配的数组中下标为。的元素,该元素可表示为_*p_ 或_p0_ O35、执 行 char*p=new char(a )操作后,p 所指向的数据对象的值为_ 8.o36、执行new charm n操作时的返回值的类型为一char(*)n。3 7、执
20、行一d e l e t e”操作将释放由p 所指向的动态分配的数据空间。3 8、执行一d e l e t e p 操作将释放由p 所指向的动态分配的数组空间。3 9、N U L L 是一个符号常量,通常作为空指针值,它的具体值为_0_4 0、变量v 定义为 d o u b l e v=2 3.4;”,要使指针pv指向v,则定义pv的语句为_ _d o u b l e *pv=&v。4 1、已知语句c o u t p;w的输出是“H e l l o!”,则语句wc o u t*p;M输出的是.4 2、.已知语句r tc o u t s;w的输出是“a ppl e”,则执行语句 c o u t n
21、 a m e 等 价 的 表 达 式 是_(*p).name s c o r e o4 7、已知有定义“i n t x,a =5,7,9,*pa=a;,在执行“x=+*pa;“语句后,x 的值是_ _ _ _ 6 _ _ _ _ o4 8、已知有定义“i n t x,a =6,1 0,1 2),*pa=a;,在执行 x=*+pa;”语句后,*pa 的值是0。4 9、已知有定义“i n t x,a =1 5,1 7,1 9,*pa=a;,在执行 x=*pa+;”后,*pa 的值是一1 7 _ _ _ _ _ _。5 0、若 采 用 p-a b c(y)表达式调用一个成员函数,在成员函数中使用的_
22、 l h i s 一 就 代表了类外的p 指针。5 1、在一个用数组实现的队列类中,包含有两个数据成员,个指明队首元素位置,另一个指明一队列长度。5 2、在一个用数组实现的队列类中,包含有两个数据成员,一个指明队列长度,另一个指明一 队 首 元素的位置。5 3、在一个用数组实现的队列类中,假定数组长度为M S,队首元素位置为f i r s t ,队 列 长 度 为 l e n g t h ,则 插 入 个 新 元 素 的 位 置 为_ _(f i r s t+l e n g t h)MS。5 4、在 个用数组实现的队列类中,假定数组长度为M S,队首元素位置为f i r s t,队列长度为l
23、e n g t h,则删除一个元素后队首的位置为_ (first+DMS。5 5、定义类动态对象数组时,其元素只能靠自动调用该类的 无参构造函数来进行初始化。5 6、为了释放类对象中指针成员所指向的动态存储空间,则需要为该类定义析构函数 o57、假定AB为一个类,则执行“AB 语句时,系统自动调用该类构造函数的次数为_ 1 0 _ _ _ _ _。58、假定一个类对象数如为A M,当离开它的作用域时,系统自动调用该类析构函数的次数为_ N _ _ _ _ _ _。6 0、假定指针p指向一个动态分配的类对象,则当执行“d e l e t e p;语句时,在 释 放 P所指向的动态存储空间之前将自
24、动调用该类的 析构函数6 1、假定AB为一个类,该类中含有一个指向动态数组空间的指针成员p a,则在该类的析构函数中应该包含有一条_ _ d e l e t e pa;语句。三、程序填空题:1、采用指针访问方式从键盘给数组a N 输入数据,然后对元素值重新按逆序存放并输出。#i n c l u d e c o n s t i n t N=8;v o i d m a i n()(i n t a N ,*p,*q;f o r(p=a;p *p;p=a;q=a+N-l;w h i l e(p q)i n t r=*p;*p=*q;*q=r;p+;q+;)f o r(p=a;p *p (2)p+(或+
25、p)(3)q (或一q)2、假定有定义为 s t r u c t N O DE i n t d a t a;N O DE*n e x t;下面算法根据 t a b l e数组中的n 个元素建立一个表头指针为L 的链表,链表中结点值的顺序与数组元素值的顺序正好相反。v o i d f 6(N O DE*&L,i n t t a b l e,i n t n)(L=N U L L;i f(n d a t a=_ _ _(2)_ _ _;p-n e x t=L;_(3);i+;)2、(1)i n(2)t a b l e f i(3)L=p3、已知一维数组类AR R AY 的定义如下,构造函数的作用是把
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计语言 重点难点 复习题 答案
限制150内