1、国家二级( C+)笔试模拟试卷 119及答案与解析 1 程序设计方法要求在程序设计过程中 ( A)先编制出程序,经调试使程序运行结果正确后再画出程序的流程图 ( B)先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释 ( C)先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释 ( D)以上三种说法都不对 2 下列叙述中正确的是 ( A)算法的空间复杂度是指算法程序的长度 ( B)算法的效率只与所处理数据的规模有关,而与数据的存储结构无关 ( C)数据的逻辑结构与存储结构是一一对应的 ( D)上述三种说法都不对 3 下列数据结构中具
2、有记忆作用的是 ( A)栈 ( B)队列 ( C)有序表 ( D)二又树 4 对下列二叉树进行后序遍历的结果是 ( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 5 在长度为 n的有序线性表中进行二分查找,需要的比较次数为 ( A) log2n ( B) nlog2n ( C) n/2 ( D) (n+1)/2 6 在结构化分析方法中,数据字典的作用是 ( A)存放所有需要处理的原始数据 ( B)存放所有处理的结果 ( C)存放所有的程序文件 ( D)描述系统中所用到的全部数据和文件的有关信息 7 下列叙述中正确的是 ( A)软件交
3、付使用后还需要进行维护 ( B)软件一旦交付使用就不需要再进行维护 ( C)软件交付使用后其生命周期就结束 ( D)软件维护是指修复程序中被破坏的指令 8 下列关于关系运算的叙述中正确的是 ( A)投影、选择、连接是从二维表的行的方向来进行运算 ( B)并、交、差是从二维表的列的方向来进行运算 ( C)投影、选择、连接是从 二维表的列的方向来进行运算 ( D)以上三种说法都不对 9 设有如下关系表: 则下列操作中正确的是 ( A) T=RS ( B) T=R S ( C) T RS ( D) t R/S 10 在下列数据管理的各阶段中,数据独立性最高的阶段是 ( A)手工管理 ( B)文件系统
4、 ( C)数据项管理 ( D)数据库系统 11 以下选项中,与 k=n+完全等价的表达式是 ( A) k n, n n+1 ( B) n n+1, k n ( C) k=+n ( D) k+=n+1 12 已知 char a; int b; float c; double d; 则表达式 a*b+c-d结果为 ( A) double ( B) int ( C) float ( D) char 13 假定有下列变量定义: int k=7, x=12; 则能使值为 0的表达式是 ( A) x*=k-k%5 ( B) x*=(k-k%5) ( C) x%=(k-=5) ( D) (x-=k)-(k+
5、=5) 14 下面关于 for循环的正确描述是 ( A) for循环只能用于循环次数已经确定的情况 ( B) for循环是先执行循环体语句,后判断表达式 ( C)在 for循环中,不能用 break语句跳出循环体 ( D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 15 在 int a 3, int, p 中, p的值是 ( A)变量 a的地址值 ( B)无意义 ( C)变量 p的地址值 ( D) 3 16 对于 int a37下列表示中错误的是 ( A) *(*a+3) ( B) *(a+1)5 ( C) *(*(a+1) ( D) *( else cout “# #
6、 # #“; ( A)有语法错误不能通过编译 ( B)输出 * * * * ( C)可以通过编译,但是不能通过连接,因而不能运行 ( D)输出 # # # # 20 下面程序的输出是 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(a b) if(b! =15) if( ! ok1) else if(ok2) x= 10 x=-1 cout x end1; ( A) -1 ( B) 0 ( C) 1 ( D)不确定的值 21 若有以下定义和语句 int a=4.b=3.* p, * q, * w; p=q= w=q;q=NULL; 则以下选项中错误
7、的语句是 ( A) *q=0; ( B) w=p; ( C) *p=a; ( D) *p=* w; 22 有以下程序 *f(int * x,int * y) if( * x * y) return x; else return y; main() int a=7.b=8, * p, * q, * r; p= q= coat * p “,“ * q “,“ * r end1; 执行后输出结果是 ( A) 7,8,8 ( B) 7.8,7 ( C) 8,7,7 ( D) 8.7,8 23 设有定义 class C public: int value; ; int x, * p; 则以下引用形式中,
8、正确的是 ( A) x=value; ( B) x=C: :value; ( C) p=中, ptr应该是【 】。 43 在 C+中,派生类有三种继承方式,它 们分别是公有继承、私有继承和【 】。 44 在创建对象时系统自动调用的函数是【 】。 45 下面程序输出的结果是【 】。 #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 pu
9、blic: 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); 46 下面程序输出的结果是【 】。 #include iostream using namespacc std; class A public: void show()tout “A!“; ; class B: public A public: virtual void show()cout “B!“; ; class C: public B public
10、: 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( 47 当需要函数返回多个值时,函数的参数应采用指针或【 】。 48 C+类对象销毁时,自动执行的函数是【 】。 国家二级( C+)笔试模拟试卷 119答案与解析 1 【正确答案】 D 【试题解析】 在程序设计过程中,一个很重要的环节是首先 确定实现各种功能的算法,并且用某种工具将它精确地表达出来。流程图是其中的工具之一。因此,程序设计的过程应是先画出
11、流程图,然后根据流程图编制出程序。因此,选项 A中的说法是错误的。程序中的注释是为了提高程序的可读性,使程序易于理解、易于维护,注释必须在编制程序的同时加入。因此,选项 B 和 C中的说法也都是错误的。 2 【正确答案】 D 【试题解析】 算法的空间复杂度;一般是指执行这个算法所需要的内存空间,它包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。因此,选项 A中的说法是错误的。 虽然算法的计算工作量 (即时间复杂度 )是问题规模的函数,但它是与数据的存储结构有密切的关系因此,选项 B中的说法也是错误的。 一个数据结构中的各数据元素在计算机存储空间中的位置关
12、系与逻辑关系有可能是不同的。因此,选项 C中的说法也是错误的, D则是正确的。 3 【正确答案】 A 【试题解析】 栈是按照 “先进后出 ”(FILO-First In Last Out)或 “后进先出 ”(LIFO-Last In First Out)的原则组织数据的,因此,栈也被称为 “先进后出 ”表或 “后进先出 ”表。因此,栈具有记忆作用。 4 【正确答案】 A 【试题解析】 按照二叉树后序遍历的方法:在访问根结点;遍历左子树与遍历右于树这三者中,首先遍历左子树,然后遍历右于树,最后访问根结点;并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点对本题中的二叉树进
13、行后序遍历的结果应是 ZBTYCPXA。 5 【正确答案】 A 【试题解析】 在长度为 n 的有序线性表中进行二分查找,需要的比较次数为log2n。 6 【正确答案】 D 【试题解析】 在结构化分析方法中 ,数据字典的作用是描述系统中所用到的全部数据和文件的有关信息。 7 【正确答案】 A 【试题解析】 维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。 软件维护通常有以下四类; 为纠正使用中出现的错误而进行的改正性维护; 为适应环境变化而进行的适应性维护; 为改进原有软件而进行的完善性维护; 为将来的
14、可维护和可靠而进行的预防性维护。 软件维护不仅包括程序代码的维护 ,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项 B、 C、 D中的说法都是错误的。 8 【正确答案】 C 【试题解析】 在关系模型的数据语言中,一般除了运用常规的集合运算 (并、交、差、笛卡尔积等 )外,还定义了一些专门的关系运算,如投影、选择、连接等运算。前者是将关系 (即二维表 )看成是元组的集合,这些运算主要是从二维表的行的方向来进行的,后者主要是从二维表的列的方向来进行运算。因此,选项 A与B 中的说法都
15、是错误的,而选项 C中的说法是正确的。 9 【正确答案】 B 【试题解析】 显然,关系表 T 是关系表 R与 S 的并,即 T=R S。 10 【正确答案】 D 【试题解析】 显然,在数据库系统阶段,数据独立性最高。 11 【正确答案】 A 【试题解析】 本题考察自增运算符和赋值运算符的运算顺序。考生要注意区分+n 和 n+的区别。 12 【正确答案】 A 【试题解析】 本题考察混合运算表达式类型,由表达式中具有最高优先级的类型所确定,所以答案为 A。 13 【正确 答案】 C 【试题解析】 本题考察考生对表达式的理解。只要考生能正确将表达式展开,并理解各符号的含义,将变量的值代入即可判断出正
16、确答案为 C。 14 【正确答案】 D 【试题解析】 for循环作为 C语言中的一种重要的控制结构之一,需要考生扎实掌握,尤其要注意 for循环的三个表达式的执行顺序。 15 【正确答案】 A 【试题解析】 本题实际是考察指针的含义。指针代表的是变量或函数等在内存的地址。 16 【正确答案】 B 【试题解析】 本题考察指针和数组的关系。其根本的联系在 于数组名表示该数组的首地址,等同于指针,因此用数组名进行指针运算是正确的,并能够进行与整数的加减操作。考生要注意的是 *的运算优先级和 的运算优先级的大小问题;本题正确答案为 B。 17 【正确答案】 D 【试题解析】 二维数组可以看作是一维数组
17、的扩展。选项 D表示的是一个一维数不清组,里面每个元素是一个指针,而指针肯定指向某个地址,从而完成二维数组的扩展。考生要注意选项 C中 *和 的运算优先级。 18 【正确答案】 B 【试题解析】 本题考察逗号表达式的使用规则。只要考生能将表达式正确展开 ,逐步分析,就可获得正确答案为 B。 19 【正确答案】 D 【试题解析】 注意本题本意是考察 x= y+z,但是少写了一个 =,因此逻辑表达式变成了赋值语句,故 x的值为 0,即假,因此程序执行 else部分。本题答案为D。 20 【正确答案】 A 【试题解析】 本题考察订语句的嵌套, else总是与最近的那个 if配对,只要考生按照逻辑表达
18、式的值进行细心判断就可以得到正确的答案。考生需要注意的是,在 C+语言中, 0表示假,非 0即为真,因此可以用数字作为逻辑判断的依据。 21 【正确答案】 D 【试题解析】 考生遇到这么复杂的变量间关系时,可以在草稿纸上画出各个变量的内存存放示意图,然后用箭头指向表示指针变量与其他变量之间的关系。如果能够清晰的画出这些变量间关系,则可以会让你容易的判断出正确答案为 D。 22 【正确答案】 B 【试题解析】 可以很容易分析出 f函数的功能是比较两个数的大小,返回较小者。而,指向的也是较小者,故代人数据即可得出正确结果为 B。 23 【正确答案】 B 【试题解析】 value作为类的数据成员在引
19、用时可以通过对象来引用,也可以通过域操作符引入类名来限 定。因此选项 A和 C可以排除,由于选项 D中 p 是指针,它对指针变量的赋值方式是错误的。 24 【正确答案】 A 【试题解析】 类中默认的类型是私有类型,除非特别指定为公有或保护类型。同时,并没有强制要求成员函数和数据成员的排列顺序,如果类的成员函数在类定义体内部定义,则为内联函数,一般类的成员函数都在类定义体的外部实现。 25 【正确答案】 D 【试题解析】 继承方式不同,派生类能够访问的基类的成员数量也不同。继承方式有三种;公有继承,私有继承和保护继承,每种继承方式结合成员函数的类型可以组 合成不同的访问级别,从而提供了灵活多样的
20、派生类访问基类的权限。 26 【正确答案】 B 【试题解析】 静态成员函数不能直接访问非静态数据成员。静态成员只有一份,供同一类的不同对象共享。友元函数对类的访问是完全开放的,从而增加了访问类的灵活性,但却破坏了类的封装性。 27 【正确答案】 D 【试题解析】 静态函数作为一种共享成份,过量使用或不当使用都可能造成程序间和对象间使用的混乱。而振生类,抽象类和虚函数则是构成了类层次和多态性的基础,是 C+中面向对象思想的重要实现方式。 28 【 正确答案】 B 【试题解析】 本题考察的是流操作中的文件打开方式,有 in, out和 app分别表示读,写和追加。 29 【正确答案】 A 【试题解
21、析】 析构函数不能有参数,是惟一的,没有返回类型,其主要工作就是完成对象销毁前的资源回收等工作。 30 【正确答案】 B 【试题解析】 继承具有传递性,从而在类的层次结构中才表现出丰富多彩的特性,呈现出动态性。 31 【正确答案】 A 【试题解析】 本题主要考察 const的使用, const根据其位置的不同修饰不同的成份,从而表现出 灵活的特性,考生容易混淆。此处 const修饰的是指针,雕指针本身不能改变,故选项 B、 C和 D都是错误的。但是指针指向的地址里面的值确实可以改变的,因此选项 A是正确答案。 32 【正确答案】 B 【试题解析】 函数调用时,如果实参是表达式。则表达式的结果传
22、人形参。形参和实参之间进行数。据的拷贝,当然需要为形参临时分配内存单元,函数调用完成之后,形参分配的单元被系统收回。因此这项 B 为正确答案。 33 【正确答案】 C 【试题解析】 对象是类的实例,类的成员可以是其他类的对象,那么在该类实例化的 时候,必须保证其他类的对象已经生成,否则将会出现错误。 34 【正确答案】 B 【试题解析】 抽象类是指包含纯虚函数的类,它主要用于基类,给其他派生类提供参考,由于含纯虚函数,故抽象类不能实例化。 35 【正确答案】 D 【试题解析】 本题考察多重继承情况下各层次类的命名和派生规则。 36 【正确答案】 n 【试题解析】 对具有 n 个结点的线性表进行
23、顺序查找,最坏情况下需要比较 n次。 37 【正确答案】 TZBACYXP 【试题解析】 按照二叉树中序遍历的方法:在访问根 结点、遍历左子树与遍历右子树这三者中,首先遍历左于树,然后访问根结点,最后遍历右于树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。对本题中的二叉树进行中序遍历的结果应是 TZBACYXP。 38 【正确答案】 消息 【试题解析】 在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为消息。 39 【正确答案】 动态分析 【试题解析】 程序的测试方法分为静态分析和动态分析。使用测试用例在计算机上运行程序,使程序在运行过程中
24、暴露错误,这种方法称 为动态分析。 40 【正确答案】 关系模式 【试题解析】 在关系模型中,一个关系的属性名表称为关系模式。 41 【正确答案】 0 【试题解析】 数组的下标是从。开始的。 42 【正确答案】 指向常量的指针 【试题解析】 见常量指针的定义。 43 【正确答案】 保护继承 【试题解析】 共有三种继承方式。 44 【正确答案】 构造函数 【试题解析】 构造函数在创建对象时系统自动调用。 45 【正确答案】 A! A! A! 【试题解析】 由于基类中没 有声明虚函数,故调用的全部是基类的函数。 46 【正确答案】 A! B! C! 【试题解析】 由于基类中声明了虚函数,故基类的引用可以调用不同类的虚函数。 47 【正确答案】 引用 【试题解析】 引用的作用之一是可以返回多个参数,因为引用和指针可以返回多个参数。 48 【正确答案】 析构函数 【试题解析】 C+类对象销毁时,自动执行的函数是析构函数。