2022年《VC程序设计》期末复习题及答案.docx
名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆一、挑选题A (1)以下的()是引用调用;A形参是引用,实参是变量;B形参和实参都是变量;C形参是指针,实参是地址值;D形参是数组名,实参是数组名;C(2)作用域运算符的功能是() A 给定作用域的大小;表示作用域的级别的;C某个成员是属于哪个类的;指出作用域的范畴的;D(3)以下的各函数中, ()不是类的成员函数;A构造函数;析构函数;拷贝初始化构造函数;友元函数;D(4)下面()不是构造函数的特点;A 构造函数可以重载;构造函数可以设置缺省参数;构造函数的函数名和类名相同;构造函数必需指定返回值类型;C( 5)下述静态数据成员的特性中,()是错误的;<类名 >和作用域运算符;A 成员函数的指针;A静态数据成员要在类体外进行初始化;B说明静态数据成员时前边要加修饰符static;C静态数据成员不是全部对象所共有的;D引用静态数据成员时,要在静态数据成员名前加C(6)已知类 A 有三个公有成员:void f1int, void f2int 和 int a,就()是指向类 A *p;B. int A:*pc=&A:a; C void (A :*pa )(int);. A *p; C(7)以下关于对象数组的描述中,()是错的;对象数组的数组名是一个地址常量; 对象数组的下标是从开头的; 对象数组只能赋初值,不能被赋值; 对象数组的数组元素是同一个类的对象B(8)以下定义中, ( )是定义指向类 A的对象数组的指针;A A *p5; A *p 5; A * p5; A *p ; A(9)说明语句 const char *ptr; 中, ptr 是();A 指向字符常量的指针;指向字符的常量指针;指向字符串常量的指针;指向字符串的常量指针;B(10)关于 new 运算符的以下描述中, 是错的 . 使用它创建对象时要调用构造函数;使用它创建对象数组时必需指定初始值;它可以用来动态创建对象和对象数组;使用它创建的对象或对象数组可以使用运算符 delete 删除;答:(1)A (2)C (3)D( 4)D( 5)C( 6)C (7)C ( 8)B (9) A (10)B C( 1) 派生类的对象对它的基类成员中()是可以拜访的公有继承的爱护成员;公有继承的私有成员;公有继承的公有成员;私有继承的公有成员D(2) 下面关于派生类的描述中,( )是错的;一个派生类可以作为另一个派生类的基类;派生类至少有一个基类;派生类的成员除了它自己的成员外,仍包含了它的基类的成员细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 40 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆派生类中继承的基类成员的拜访权限到派生类保持不变;C( 3)派生类的构造函数的成员初始化列表中,不能包含()基类的构造函数调用;基类对象成员的初始化;派生类对象成员的初始化;派生类中一般数据成员的初始化B( 4)设置虚基类的目的是()削减目标代码;排除二义性;提高运行效率;简化程序;A(5) 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子 对象初始化()一次;二次;多次;与虚基类下面的派生类个数有关答案:(1)(2)D (3) (4)B (5) A A1 以下保留字()不能显现在说明虚函数原型的语句中;Astatic B. operator C. void D. const . D2 以下关于虚函数和纯虚函数的说法中,( )是不正确的 virtual 说明;A 在派生类中虚函数可以不用关键字 B. 虚函数在派生类中可以不重定义;C. 不能为虚函数定义缺省操作;D. 纯虚函数在派生类中可以不重定义;C3 以下关于动态绑定的说法中,正确选项()A 虚基类是动态绑定的;B. 指针是动态绑定的;C. 全部的虚函数和纯虚函数都是动态绑定的;D. 动态绑定与编译系统无关;C4 以下关于抽象类的说法中,( )是不正确的 A 不行创建抽象类的实例;B. 可以声明抽象类的引用;C. 抽象类的派生类也是抽象类;D. 抽象类的派生类也可以是抽象类;5 B 以下关于抽象类的说法中,只有()是正确的A 定义抽象类的目的是软件重用;B. 定义抽象类是为了提高拜访效率;C. 定义抽象类是使指针的使用更敏捷;D. 抽象类供应了对类进行分类的机制;6 D 以下关于多态性的说法中,( )是不正确的 A 每个多态类的对象有一个虚表指针;this 指针无关;B. 虚函数调用与 C. 每个多态类的基类都有一个虚函数表;D. 多态类的每一个派生类都有一个虚函数表;单项挑选题答案:1 A 2 D 3 C 4 C 5 B 6 D D(1)以下不是C+ 流对象的是 A.cout B.cin C.cerr D.ostream A (2)已知 :int w=-3,x=10,z=7 执行下面的语句的输出结果为cout<<x> (10.x+100:x-10 )<<(w+|z+ )<<(.w<z )<<(w&&z )细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 40 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆A. 0111 B.1111 C.0101 D.0100 C(3)void maincout<<setfill'*'<<setw10<<10<<endl; 的输出结果为 A. $ 10 10 B.*10 C. *10 D.*1010 D(4)C+全部输入和输出流的基类是 A.stream.h B.iostream.h C.cin 和 cout D.ios B(5)文件的输入与输出流是 A. iostream.h B. ifstream 和 ofstream C. istream_withassign , ostream_withassign D. istream 和 ostream C(6)语句 cout<<oct<<12; 的输出结果是转为八进制数0011 1100 14 A.12 B.1100 C.14 D. C ,其中对 is 的说法正确选项B(7)对 <<进行重载的语句istream & operator<< istream & is, date& dt A. 是一个 istream 对象B. 是 istream 的一个对象的 引用C. 起返回操作结果作用D. 仅作为参数传递的作用B(8)以流方式打开一个文件的输入文件的语句正确选项 A. ofstream afile; afile.open"test1.dat" , ios:in|ios:binary B. ifstream afile; afile.open"test1.dat" , ios:in|ios:binary C. ifstream afile; afile.open"test1.dat" , ios:out|ios:binary D. ofstream afile; afile.open"test1.dat" ,ios:out|ios:binary 答案:1.D 2.A 3.C 4.D 5.B 6.C 7.B 8.B 第 3 页,共 40 页 - - - - - - - - - B 94. 关于消息,以下说法中不正确选项( B ); A. 发送消息的对象恳求服务,接受消息的对象供应服务 B. 消息的发送者必需明白消息的接收者如何相应消息 C. 在 C+中,消息的发送详细表达为对接收消息的对象的某个函数的调用 D. 每个对象只能接收某些特定格式的消息 D 95. 关于封装,以下说法中不正确选项( D ); A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体 B. 通过封装,一个对象的实现细节被尽可能地隐匿起来(不行见) C. 通过封装,每个对象都成为相对独立的实体 D. 通过封装,对象的属性都是不行见的 C 96. 面对对象方法的多态性是指(); A. 一个类可以派生出多个特别类 B. 一个对象在不同的运行环境中可以有不同的变体 C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的 C 104. 在一个类的定义中,包含有()成员的定义; A. 数据 B. 函数 C. 数据和函数 D. 数据或函数 D 105. 在类作用域中能够通过直接使用该类的()成员名进行拜访; A. 私有 B. 公用 C. 爱护 D. 任何 B 106. 在关键字 public后面定义的成员为类的()成员;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - -名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆 A. 私有 B. 公用 C. 爱护 D. 任何x 对象中数据成员a 的格式为 A 107. 在关键字 private后面定义的成员为类的()成员; A. 私有 B. 公用 C. 爱护 D. 任何D 108. 假定 AA为一个类, a 为该类公有的数据成员,x 为该类的一个对象,就拜访(); A. xa B. xa C. x->a D. x.a B 109. 假定 AA为一个类, a 为该类公有的 函数 成员, x 为该类的一个对象,就拜访x 对象中函数成员a 的格式为(); A. x.a B. x.a C. x->a D. x->a C 110. 假定 AA为一个类, a 为该类公有的数据成员,px 为指向该类对象的一个指针 ,就拜访px 所指对象中数据成员 a 的格式为(); A. pxa B. pxa C. px->a D. px.a D 111. 假定 AA为一个类, a 为该类 私有 的数据成员, GetValue 为该类公有函数成员,它返回 a 的值, x 为该类的一个对象,就拜访 x 对象中数据成员 a 的格式为(); A. x.a B. x.a C. x->GetValue D. x.GetValue A 112. 假定 AA为一个类, int a 为该类的一个成员函数,如该成员函数在类定义体外定义,就函数头为 (); A. int AA:a B. int AA:a C. AA:a D. AA:int a A 113. 假定 AA为一个类, a 为该类 公有 的数据成员, 如要在该类的一个成员函数中拜访它,就书写格式为 (); A. a B. AA:a C. a D. AA:a B 114. 如需要把一个类外定义的成员函数指明为内联函数,就必需把关键字 ()放在函数原型或函数头的前面; A. in B. inline C. inLine D. InLiner D 115. 在多文件结构的程序中,通常把类的定义单独存放于()中;)中; A. 主文件 B. 实现文件 C. 库文件 D. 头文件 B 116. 在多文件结构的程序中,通常把类中全部非内联函数的定义单独存放于( A. 主文件 B.实现文件 C. 库文件 D. 头文件 A 117. 在多文件结构的程序中,通常把含有main 函数的文件称为(); A. 主文件 B. 实现文件 C. 程序文件 D. 头文件 C 118. 一个 C+程序文件的扩展名为(); A. .h B. .c C. .cpp D. .cp A 119. 在 C+程序中使用的 cin 标识符是系统类库中定义的()类中的一个对象; A. istream 输入流 B. ostream C. iostream D. fstream B 120. 在 C+程序中使用的 cout 标识符是系统类库中定义的()类中的一个对象; A. istream B. ostream C. iostream D. fstream D 121. 假定 AA是一个类, abc 是该类的一个成员函数,就参数表中隐含的第一个参数的类型为();); A. int B. char C. AA D. AA* C 122. 假定 AA是一个类, abc 是该类的一个成员函数,就参数表中隐含的第一个参数为( A. abc B. *this C. this D. this& *this赋值的语句,当 A 123. 假定 AA是一个类,“AA& abc;” 是该类中一个成员函数的原型,如该函数存在对用 x.abc调用该成员函数后,x 的值();this值,当用 x.abc A. 已经被转变 B. 可能被转变 C. 不变 D.不受函数调用的影响 C 124. 假定 AA是一个类,“ AA* abc const; ” 是该类中一个成员函数的原型,如该函数返回调用该成员函数后,x 的值(); 第 4 页,共 40 页 - - - - - - - - - A. 已经被转变 B. 可能被转变 C. 不变 D. 受到函数调用的影响 B 125. 类中 定义的成员默认为()拜访属性; A. public B. private C. protected D. friend A 126. 结构中 定义的成员默认为()拜访属性;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - -名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆 A. public B. private C. protected D. friend ; C 127. 当类中一个字符指针成员指向具有n 个字节的储备空间时,它所能储备字符串的最大长度为 A. n B. n+1 C. n-1 D. n-2 C 128. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length ,就队尾(即最终一个)元素的位置 为 ; A. length+1 B. first+length C. first+length-1%MS D. first+length%MS MS,队首元素位置为first,队列长度为length ,就队尾 D 129. 在一个用数组实现的队列类中,假定数组长度为的后一个位置 为 ; A. length+1 B. first+length C. first+length-1%MS D. first+length%MS first,队列长度为length ,就队首 B 130. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为的后一个位置为 ; A. first+1 B. first+1%MS C. first-1%MS D. first+length%MS D 131. 在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包含的指针域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用 elemTail 表示,如链队非空,就进行插入时必需把新结点的地址赋给 ; A. elemHead B. elemTail C. elemHead->next 和 elemHead D. elemTail->next 和 elemTail C 132. 在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包含的指针域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用 elemTail 表示,如链队为空, 就进行插入时必需把新结点的地址赋给 ; A. elemHead B. elemTail C. elemHead 和 elemTail D. elemHead 或 elemTail A 133. 队列具有()的操作特性; A. 先进先出 B. 先进后出 C. 进出无序 D. 进出任意 B 134. 栈具有()的操作特性; A. 先进先出 B. 先进后出 C. 进出无序 D. 进出任意 A 135. 对于一个类的构造函数,其函数名与类名 ; A. 完全相同 B. 基本相同 C. 不相同 D. 无关系 C 136. 对于一个类的析构函数,其函数名与类名 ; A. 完全相同 B. 完全不同 C. 只相差一个字符 D. 无关系 C 137. 类的构造函数是在定义该类的一个 时被自动调用执行的; A. 成员函数 B. 数据成员 C. 对象 D. 友元函数 B 138. 类的析构函数是一个对象被 时自动调用的; A. 建立 B. 撤消 C. 赋值 D. 引用 A 139. 一个类的 构造函数 通常被定义为该类的 成员; A. 公用 B. 爱护 C. 私有 D. 友元 C 140. 一个类的析构函数通常被定义为该类的 成员; A. 私有 B. 爱护 C. 公用 D. 友元 B 141. 假定 AB为一个类,就执行“ AB x; ” 语句时将自动调用该类的 ; A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 A 142. 假定 AB为一个类,就执行“ AB xa,5;” 语句时将自动调用该类的 ; A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 D 143. 假定 AB为一个类,就执行“ AB *s =new ABa,5;” 语句时得到的一个动态对象为 _; A. s B. s->a C. s.a D. *s D 144. 假定 AB为一个类,就执行“ AB r1=r2; ” 语句时将自动调用该类的 ; 第 5 页,共 40 页 - - - - - - - - - A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数 B 145. 如需要使类中的一个指针成员指向一块动态储备空间,就通常在 函数中完成; A. 析构 B. 构造 C. 任一成员 D. 友元细心整理归纳 精选学习资料 - - - - - - - - - - - - - - -名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆 A 146. 当类中的一个整型指针成员指向一块具有n*sizeofint大小的储备空间时,它最多能够储备 个整数; A. n B. n+1 C. n-1 D. 1 C 147. 假定一个类的构造函数为“Aint aa, int bb a=aa; b=aa*bb;” ,就执行“A x4,5;” 语句后,x.a 和 x.b 的值分别为 ; A. 4 和 5 B. 5 和 4 C. 4 和 20 D. 20 和 5 D 148. 假定一个类的构造函数为“ Aint aa=1, int bb=0 a=aa; b=bb;” ,就执行“ A x4;” 语句后, x.a和 x.b 的值分别为 ; A. 1 和 0 B. 1 和 4 C. 4 和 1 D. 4 和 0 B 149. 假定 AB为一个类,就 为该类的拷贝构造函数的原型说明; A. ABAB x; B. ABAB& x; C. void ABAB& x; D. ABint x; C 150. 假定一个类的构造函数为“Bint ax, int bx: aax, bbx ” ,执行“ B x1,2,y3,4;x=y;”语句序列后 x.a 的值为 ; A. 1 B. 2 C. 3 D. 4 D 151. 假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为 ; A. AB a=0; B. ABint aa=0: aaa C. ABint aa: aaa D. AB C 152. 假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为 ; A. AB B. AB: a0 C. ABint aa=0 a=aa; D. ABint aa D 153. 对于任一个类,用户所能定义的构造函数的个数至多为 ; ; A. 0 B. 1 C. 2 D. 任意个 B 154. 对于任一个类,用户所能定义的析构函数的 个数至多为 ; A. 0 B. 1 C. 2 D. 任意个 A 155. 假定 AB为一个类,就执行“ AB *px=new ABn;” 语句时将 ; A. 动态安排一个数组 B. 动态安排一个对象 C. 静态安排一个数组 D. 静态安排一个对象 C 156. 设 px 是指向一个类对象的指针变量,就执行“ delete px;” 语句时,将自动调用该类的 A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 拷贝构造函数 D 157. 当一个类对象离开它的作用域时,系统自动调用该类的 ; A. 无参构造函数 B. 带参构造函数 C. 拷贝构造函数 D. 析构函数 C 158. 假定一个类对象数组为An ,当离开它定义的作用域时,系统自动调用该类析构函数的次数为 A. 0 B. 1 C. n D. n-1 D 159. 假定 AB为一个类,就执行“ AB a10;” 语句时调用该类无参构造函数的次数为 ; A. 0 B. 1 C. 9 D. 10 A 160. 假定 AB为一个类,就执行“ AB *px=new ABn;” 语句时调用该类无参构造函数的次数为 ; A. n B. n-1 C. 1 D. 0 A 161. 假定 AB为一个类,就执行“ AB a, b3, *p;” 语句时共调用该类构造函数的次数为 ; A. 2 B. 3 C. 4 D. 5 *P 无调用 B 162. 假定 AB为一个类,就执行“ AB a2, b3, *p4;” 语句时共调用该类构造函数的次数为 A. 3 B. 4 C. 5 D. 9 B3 调用 3 次 D 163. 假定 AB为一个类,就执行“AB a, b2, c3, *p=&a; ” 语句时共调用该类无参 构造函数的次数为 A. 5 B. 6 C. 3 D. 4 B 164. 假定 AB为一个类,就执行“AB *p=new AB1,2;” 语句时共调用该类构造函数的次数为 ; A. 0 B. 1 C. 2 D. 3 C 165. 假定 AB为一个类, px 为指向该类的一个含有n 个对象 的动态数组的指针,就执行“delete px;” 语句时共调用该类析构函数的次数为 ; A. 0 B. 1 C. n D. n+1 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 40 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学而不思就惘,思而不学就殆 B 166. 对类对象成员的初始化是通过构造函数中给出的 实现的;B的(); A. 函数体 B. 初始化表 C. 参数表 D. 初始化表或函数体 C 167. 对类中常量成员的初始化是通过构造函数中给出的 实现的; A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体 C 168. 对类中引用成员的初始化是通过构造函数中给出的 实现的; A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体 D 169. 类的构造函数可以带有 个参数; A. 0 B. 1 C. 2 D. 任意 A 170. 类的析构函数可以带有 个参数; A. 0 B. 1 C. 2 D. 任意 C 171. 一个类的静态数据成员所表示属性 ; A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 D 172. 类的静态成员的拜访掌握(); A. 只答应被定义为private B. 只答应被定义为private或 protected C. 只答应被定义为public D. 可答应被定义为private、protected或 public B 173. 静态成员函数对类的数据成员拜访(); A. 是不答应的 B. 只答应是静态数据成员 C. 只答应是非静态数据成员 D. 可答应是静态数据成员或非静态数据成员 A 174. 被非静态成员函数拜访的类的数据成员 ; A. 可以是非静态数据成员或静态数据成员 B. 不行能是类的静态数据成员 C. 只能是类的非静态数据成员 D. 只能是类的静态数据成员 D 175. 静态数据成员的初始化是在()中进行的; A. 构造函数 B. 任何成员函数 C. 所属类 D.全局区 D 176. 当将一个类A或函数 f 说明为另一个类B的友元后,类A 或函数 f 能够直接拜访类 A. 只能是公有成员 B. 只能是爱护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员 C 177. 引入友元的主要目的是为了(); A. 增强数据安全性 B. 提高程序的牢靠性 C. 提高程序的效率和敏捷性 D. 保证类的封装性 A 178. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明(); A.需加上类域的限定 B. 不需加上类域的限定 C. 类域的限定可加可不加 D. 不需要任何限定 D 179. 一个类的友元不是该类的成员,与该类的关系亲密,所以它(); A. 有 this指针,有默认操作的对象 B. 没有 this指针,可以有默认操作的对象 C. 有 this指针,不能执行默认操作 D. 没有 this指针,也就没有默认操作的对象 B 180. 在重载一个运算符时,其参数表中没有任何参数,这说明该运算符是(); A. 作为友元函数重载的1 元运算符 B. 作为成员函数重载的1 元运算符 C. 作为友元函数重载的2 元运算符 D. 作为成员函数重载的2 元运算符 B 181. 在成员函数中 进行双目运算符重载时,其参数表中应带有()个参数; A. 0 B. 1 C. 2 D. 3 C 182. 双目运算符重载为一般函数 时,其参数表中应带有()个参数; A. 0 B. 1 C. 2 D. 3 A 183. 假如表达式a+b 中的“ +” 是