1、二级 C+笔试 336 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列不属于软件工程三要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境2.形如 A:A(A 则下列调用中,正确的是( )。(分数:2.00)A.fun(1)B.fun(1,1)C.fun()D.fun(2,2,3,4)5.在设计程序时,应采纳的原则之一是( )。(分数:2.00)A.不限制 goto 语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解6.要求加快执行速度,而且函数完成的功能不太复杂时,应使用( )。(分数:2
2、.00)A.虚函数B.重载函数C.内联函数D.嵌套函数7.设 x 是一个类名,下列的形参( )是引用调用(分数:2.00)A.X 中,ptr 应是( )。(分数:2.00)A.指向常量的指针B.指针常量C.指针常数D.常指针13.树是结点的集合,它的根结点数目是( )。(分数:2.00)A.有且只有 1B.1 或多于 1C.0 或 1D.至少 214.程序设计语言的基本成分是数据成分、运算成分、控制成分和( )。(分数:2.00)A.对象成分B.变量成分C.语句成分D.传输成分15.对于多重继承,下面说法中正确的是( )。(分数:2.00)A.一个派生类只有一个基类B.一个基类只能产生一个派生
3、类C.一个派生类可有多个基类D.一个基类必须产生多个派生类16.下面正确的函数定义是( )。(分数:2.00)A.Fun()B.void funC.void fun()D.void fun()17.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:2.00)A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计18.下面哪些函数采用动态联编( )?(分数:2.00)A.重载函数B.嵌套函数C.虚函数D.递归函数19.下面关于析构函数的叙述错误的是( )。(分数:2.00)A.析构函数可以完成一些系统清理工作B.析构
4、函数可以由类对象自动调用C.析构函数可以有返回值D.析构函数是一种特殊的函数20.“:”符号的功能是( )。(分数:2.00)A.标识某个成员是属于哪个对象的B.标识对某个成员的引用C.标识某个成员属于哪个类的D.无意义21.在传值调用中,要求( )。(分数:2.00)A.形参和实参类型任意,个数相等B.形参和实参类型一致,个数相等C.形参和实参类型一致,个数不等D.形参和实参类型任意,个数任意。22.下述关于成员函数的描述,正确的是( )。(分数:2.00)A.成员函数一定是内联函数B.成员函数不可以重载C.成员函数不可以有默认值D.成员函数可以是静态的23.在一个被调用函数中,关于 ret
5、urn 语句使用描述,( )是正确的。(分数:2.00)A.函数返回值的类型是在定义函数时确定,在函数调用时是可能改变的B.函数返回值的类型就是返回值表达式的值C.函数返回值的类型决定了返回值表达式的类型D.函数返回值的类型可以与返回值表达式的类型不一致24.公有派生类对象可以访问基类中的( )。(分数:2.00)A.公有成员B.私有成员C.保护成员D.任何成员25.在 10S 中提供格式控制标志位中,转换为十六进制形式的标志位是( )。(分数:2.00)A.hexB.octC.decD.left26.下面 C+带有默认参数函数的叙述,正确的是( )。(分数:2.00)A.不允许设置函数的默认
6、值B.函数的默认值只能有一个C.函数的默认值应该先设置右边然后再设置左边D.函数的默认值应该先设置左边然后再设置右边27.n 个顶点的强连通图的边数至少有( )。(分数:2.00)A.n-1B.n(n-1)C.nD.n+128.通常拷贝构造函数的参数是( )。(分数:2.00)A.某个对象名B.某个对象的引用C.某个对象的指针D.某个对象的成员29.下面关于友元的叙述正确的是( )。(分数:2.00)A.友元可以提高程序的执行效率B.友元加强了类的继承性C.友元加强了类的多态性D.友元提高了程序的封装性30.C+中“”是一个( )符号(分数:2.00)A.用于输出的非成员函数B.用于输出操作的
7、成员函数C.用于输入的非成员函数D.用于输入操作的成员函数31.下面四个关键字中,说明友元函数的是( )。(分数:2.00)A.friendB.virtualC.publicD.base32.下面叙述不正确的是( )。(分数:2.00)A.在函数中,通过 return 语句传回函数值B.在函数中,可以有多条 return 语句C.主函数名 main()后的一对圆括号中也可以带有参数D.调用函数必须在一条独立的语句中完成33.下列说法错误的是( )。(分数:2.00)A.方法是对象的一部分B.在调用方法时,对象名是不可缺少的C.方法是一种特殊的过程和函数D.方法的调用格式和对象属性的使用格式相同
8、34.下述静态数据成员的特性中,( )是错误的(分数:2.00)A.静态成员前要加 static 修饰符B.静态成员可以在类的内部初始化C.静态成员不可以在类的内部初始化D.静态成员不属于某个类对象。35.下列有关析构函数的调用顺序是( )。(分数:2.00)A.先执行基类的构造函数,然后执行派生类的析构函数B.先执行派生类的构造函数,然后执行基类的构造函数C.析构函数在派生类与基类中同时执行。D.只执行派生类的构造函数,不执行基类的构造函数二、B填空题/B(总题数:14,分数:30.00)36.算法的基本特征是可行性、确定性、U 【1】 /U和拥有足够的情报。(分数:2.00)填空项 1:_
9、37.在长度为 n 的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为U 【2】 /U。(分数:2.00)填空项 1:_38.在面向对象方法中,类之间共享属性和操作的机制称为U 【3】 /U。(分数:2.00)填空项 1:_39.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为U 【4】 /U。(分数:2.00)填空项 1:_40.数据库设计分为以下 6 个设计阶段:需求分析阶段、U 【5】 /U、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。(分数:2.00)填空项 1:_41.数组的下标是从U 【6】 /U开始的。(分数:2.00)填空项 1:_42.下列说明
10、 const chr* ptr;中,ptr 应该是U 【7】 /U。(分数:2.00)填空项 1:_43.在 C+中,派生类有三种继承方式,它们分别是公有继承、私有继承和U 【8】 /U。(分数:2.00)填空项 1:_44.在创建对象时系统自动调用的函数是U 【9】 /U。(分数:2.00)填空项 1:_45.下面程序输出的结果是U 【10】 /U。 #include iostream using namespace std; class A public: virtual void show() cout“A!“; ; class B: public A public: void show
11、() cout “B!“; ; class C: public B public: void show()cout “C!“; ; void show_info(A void main() A ia; B ib; C ic; show_info(ia);show_info(ib); show_info(ic); (分数:2.00)填空项 1:_46.下面程序输出的结果是U 【11】 /U。 #include iostream using namespacc std; class A public: void show()tout“A!“; ; class B: public A public:
12、 virtual void show()cout“B!“; ; class C: public B public: virtual void show()cout“C!“; ; void show_info(A *i)i-show(); void main() A ia;B ib;C ic;show_info( show_info(show_info( (分数:2.00)填空项 1:_47.当需要函数返回多个值时,函数的参数应采用指针或U 【12】 /U。(分数:2.00)填空项 1:_48.C+编译时的多态性体现在U 【13】 /U,运行时的多态性体现在U 【14】 /U。(分数:4.00)
13、填空项 1:_49.C+类对象销毁时,自动执行的函数是U 【15】 /U。(分数:2.00)填空项 1:_二级 C+笔试 336 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列不属于软件工程三要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程三要素是工具、过程、方法。2.形如 A:A(A 则下列调用中,正确的是( )。(分数:2.00)A.fun(1)B.fun(1,1) C.fun()D.fun(2,2,3,4)解析:解析 fun 函数中第三个参数有默认值,故只需给出前两个参数即可。5.在设
14、计程序时,应采纳的原则之一是( )。(分数:2.00)A.不限制 goto 语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解 解析:解析 在设计程序时,应采纳的原则之一是程序结构应有助于读者理解。6.要求加快执行速度,而且函数完成的功能不太复杂时,应使用( )。(分数:2.00)A.虚函数B.重载函数C.内联函数 D.嵌套函数解析:解析 在某些情况下,内联函数可以提高程序的效率。7.设 x 是一个类名,下列的形参( )是引用调用(分数:2.00)A.X 中,ptr 应是( )。(分数:2.00)A.指向常量的指针B.指针常量C.指针常数D.常指针 解析:解析 此处是常
15、指针格式。13.树是结点的集合,它的根结点数目是( )。(分数:2.00)A.有且只有 1 B.1 或多于 1C.0 或 1D.至少 2解析:解析 树是结点的集合,它的根结点数目是有且只有一个结点。14.程序设计语言的基本成分是数据成分、运算成分、控制成分和( )。(分数:2.00)A.对象成分B.变量成分C.语句成分D.传输成分 解析:解析 程序设计语言的基本成分是数据成分、运算成分、控制成分和传输成分。15.对于多重继承,下面说法中正确的是( )。(分数:2.00)A.一个派生类只有一个基类B.一个基类只能产生一个派生类C.一个派生类可有多个基类 D.一个基类必须产生多个派生类解析:解析
16、C+支持多重继承。16.下面正确的函数定义是( )。(分数:2.00)A.Fun()B.void funC.void fun()D.void fun() 解析:解析 见函数定义的格式。17.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:2.00)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计解析:解析 软件开发的结构化生命周期方法将软件生命周期划分成定义、开发和运行维护。18.下面哪些函数采用动态联编( )?(分数:2.00)A.重载函数B.嵌套函数C.虚函数 D.递归函数解析:解析 虚函数采用动态联
17、编的方式。19.下面关于析构函数的叙述错误的是( )。(分数:2.00)A.析构函数可以完成一些系统清理工作B.析构函数可以由类对象自动调用C.析构函数可以有返回值 D.析构函数是一种特殊的函数解析:解析 与构造函数一样,析构函数没有返回值。20.“:”符号的功能是( )。(分数:2.00)A.标识某个成员是属于哪个对象的B.标识对某个成员的引用C.标识某个成员属于哪个类的 D.无意义解析:解析 “:”是类作用域符。21.在传值调用中,要求( )。(分数:2.00)A.形参和实参类型任意,个数相等B.形参和实参类型一致,个数相等 C.形参和实参类型一致,个数不等D.形参和实参类型任意,个数任意
18、。解析:解析 在传值调用中,形参和实参类型一致,个数相等。22.下述关于成员函数的描述,正确的是( )。(分数:2.00)A.成员函数一定是内联函数B.成员函数不可以重载C.成员函数不可以有默认值D.成员函数可以是静态的 解析:解析 成员函数可以是静态的。23.在一个被调用函数中,关于 return 语句使用描述,( )是正确的。(分数:2.00)A.函数返回值的类型是在定义函数时确定,在函数调用时是可能改变的B.函数返回值的类型就是返回值表达式的值C.函数返回值的类型决定了返回值表达式的类型 D.函数返回值的类型可以与返回值表达式的类型不一致解析:解析 函数返回值的类型决定了返回值表达式的类
19、型。24.公有派生类对象可以访问基类中的( )。(分数:2.00)A.公有成员 B.私有成员C.保护成员D.任何成员解析:解析 公有派生类对象只能访问基类中的公有成员。25.在 10S 中提供格式控制标志位中,转换为十六进制形式的标志位是( )。(分数:2.00)A.hex B.octC.decD.left解析:解析 hex 是十六进制的标志。26.下面 C+带有默认参数函数的叙述,正确的是( )。(分数:2.00)A.不允许设置函数的默认值B.函数的默认值只能有一个C.函数的默认值应该先设置右边然后再设置左边 D.函数的默认值应该先设置左边然后再设置右边解析:解析 函数的默认值应该先设置右边
20、然后再设置左边。27.n 个顶点的强连通图的边数至少有( )。(分数:2.00)A.n-1B.n(n-1)C.n D.n+1解析:解析 n 个顶点的强连通图至少有 n 条边。28.通常拷贝构造函数的参数是( )。(分数:2.00)A.某个对象名B.某个对象的引用 C.某个对象的指针D.某个对象的成员解析:解析 拷贝构造函数 X(X中,ptr 应该是U 【7】 /U。(分数:2.00)填空项 1:_ (正确答案:指向常量的指针)解析:解析 见常量指针的定义。43.在 C+中,派生类有三种继承方式,它们分别是公有继承、私有继承和U 【8】 /U。(分数:2.00)填空项 1:_ (正确答案:保护继
21、承)解析:解析 共有三种继承方式。44.在创建对象时系统自动调用的函数是U 【9】 /U。(分数:2.00)填空项 1:_ (正确答案:构造函数)解析:解析 构造函数在创建对象时系统自动调用。45.下面程序输出的结果是U 【10】 /U。 #include iostream using namespace std; class A public: virtual void show() cout“A!“; ; class B: public A public: void show() cout “B!“; ; class C: public B public: void show()cout
22、“C!“; ; void show_info(A void main() A ia; B ib; C ic; show_info(ia);show_info(ib); show_info(ic); (分数:2.00)填空项 1:_ (正确答案:A! A! A!)解析:解析 由于基类中没有声明虚函数,故调用的全部是基类的函数。46.下面程序输出的结果是U 【11】 /U。 #include iostream using namespacc std; class A public: void show()tout“A!“; ; class B: public A public: virtual v
23、oid show()cout“B!“; ; class C: public B public: virtual void show()cout“C!“; ; void show_info(A *i)i-show(); void main() A ia;B ib;C ic;show_info( show_info(show_info( (分数:2.00)填空项 1:_ (正确答案:A! B! C!)解析:解析 由于基类中声明了虚函数,故基类的引用可以调用不同类的虚函数。47.当需要函数返回多个值时,函数的参数应采用指针或U 【12】 /U。(分数:2.00)填空项 1:_ (正确答案:引用)解析:解析 引用的作用之一是可以返回多个参数,因为引用和指针可以返回多个参数。48.C+编译时的多态性体现在U 【13】 /U,运行时的多态性体现在U 【14】 /U。(分数:4.00)填空项 1:_ (正确答案:重载 虚函数)解析:解析 C+编译时的多态性体现在重载,运行时的多态性体现在虚函数。49.C+类对象销毁时,自动执行的函数是U 【15】 /U。(分数:2.00)填空项 1:_ (正确答案:析构函数)解析:解析 C+类对象销毁时,自动执行的函数是析构函数。