[计算机类试卷]国家二级(C++)笔试模拟试卷127及答案与解析.doc

上传人:twoload295 文档编号:502581 上传时间:2018-11-29 格式:DOC 页数:24 大小:62KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷127及答案与解析.doc_第1页
第1页 / 共24页
[计算机类试卷]国家二级(C++)笔试模拟试卷127及答案与解析.doc_第2页
第2页 / 共24页
[计算机类试卷]国家二级(C++)笔试模拟试卷127及答案与解析.doc_第3页
第3页 / 共24页
[计算机类试卷]国家二级(C++)笔试模拟试卷127及答案与解析.doc_第4页
第4页 / 共24页
[计算机类试卷]国家二级(C++)笔试模拟试卷127及答案与解析.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 127及答案与解析 1 若需要利用形参直接访问实参,则应把形参变量说明为 ( )参数。 ( A)指针 ( B)引用 ( C)传值 ( D)常值 2 用单链表表示的链式队列的队头在链表的 ( )位置。 ( A)链头 ( B)链尾 ( C)链中 ( D)链表尾部前一个位置 3 如果只想得到 1024个元素组成的序列中第 5个最小元素之前的部分排序的序列,用 ( )方法最快。 ( A)冒泡排序 ( B)快速排序 ( C)简单选择排序 ( D)堆排序 4 以下选项中不属于 软件工程的目标是 ( )。 ( A)有效性 ( B)独立性 ( C)可移植性 ( D)可重用性 5

2、 线性表是一个具有 n个 ( )的有限序列。 ( A)表元素 ( B)数据元素 ( C)字符 ( D)数据项 6 设有 50行 60列的二维数组 A5060,其元素长度为 4字节,按行优先顺序存储,基地址为 200,则元素 A1825的存储地址为 ( )。 ( A) 3700 ( B) 4376 ( C) 3900 ( D) 4620 7 数据之间的相互关系和数据运算是指 ( )。 ( A)数据 ( B) 数据元素 ( C)数据项 ( D)数据结构 8 集簇属于 ( )。 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 9 设单链表中结点的结构为 (data, link)。已知

3、指针 q所指结点是指针 p所指结点的直接前驱,若在 *q与 *p之间插入结点 *s,则应执行下列哪一个操作 ?( )。 ( A) s - link=p- link; p- link=s ( B) q- link=s; s- link=p ( C) p- link=s- link; s- link=p ( D) p- link=s; s- link=q 10 以下不是数据库系统组成部分的是 ( )。 ( A)数据库 ( B)操作系统管理员 ( C)数据库管理系统 ( D)用户 11 标有 /*/的语句的执行次数是 ( )。 int y=5, x=2; do y=x*x; /* */ while(

4、+y 5); ( A) 5 ( B) 4 ( C) 2 ( D) 1 12 对下面的程序,正确的说法是 ( )。 main() int a,b=1, c=2; a=b+c, a+b, c+3; c=(c)? a+: b-; cout a+b, c; ( A)无错误 ( B)第三行有错误 ( C)第四行有错误 ( D)第五行有错误 13 假定 x和 y为 double型,则表达式 x=2, y=x+3/2的值是 ( )。 ( A) 3.5 ( B) 3 ( C) 2 ( D) 3 14 设 x, y, t均为 int 型变量,执行语句: x y=3; t=+x|+y;,完成后, y的值为 ( )

5、。 ( A)不确定 ( B) 4 ( C) 3 ( D) 1 15 以下程序的输出结果是 ( )。 main() int i; for(i=0; i 8; i+) switch(i) case 0: case 3: i+=2; case 1: case 2: i+=3; default: i+=5; cout i; ( A) 11 ( B) 35 ( C) 10 ( D) 45 16 关于类和对象不正确的说法是 ( )。 ( A)类是一种类型,它封装了 数据和操作 ( B)对象是类的实例 ( C)一个类的对象只有一个 ( D)一个对象必属于某个类 17 关于 this指针的说法错误的是 ( )

6、。 ( A) this指针必须显示说明 ( B)当创建一个对象后, this指针就指向该对象 ( C)成员函数拥有 this指针 ( D)静态成员函数不拥有 this指针 18 对于下面程序,对 p调用正确的是 ( )。 class A public:fun(int i)cout i endl; ; main() A a; int k=0; void(A: *p)(int); p=A: fun; ( A) a.p(k); ( B) *a p(k) ( C) a *p(k) ( D) a: *p(k) 19 下面关于子类型的描述中,错误的是 ( )。 ( A)子类型关系是可逆的 ( B)公有派生

7、类的对象可以初始化基类的引用 ( C)只有在公有继承下,派生类是基类的子类型 ( D)子类型关系可以传递 20 下面程序的运行结果为 ( )。 class A static int n; public: A()n=1; A(int num)n=num; void print()coutn; A: n=0; void main() A a, b(2); a.print(); b.pint(); ( A) 12 ( B) 11 ( C) 22 ( D) 21 21 下列程序的输出结 果为 ( )。 int fun(int n) if(n=0)return 1; else return n*fun(

8、n-1): return 0; void main() eout func(4) endl; ( A) 1 ( B) 10 ( C) 24 ( D) 11 22 在 C+语言中,数据封装要解决的问题是 ( )。 ( A)数据的规范化 ( B)便于数据转换 ( C)避免数据丢失 ( D)防止不同模块之间数据的非法访问 23 private访问属性限制对象的成员,可以在 ( )中访问。 ( A)本类的成员函数 ( B) main函数 ( C)父类的成员函数 ( D)子类的成员函数 24 如果定义了一个类 myclass,则为 myclass类对象以成员函数形式重载后 +运算符的声明应该为 ( )。

9、 ( A) myclass operator +(); ( B) myelass for (int i=0; strli=str2i; i+) 后,数组 str1中的字符是 XYZxyz,数组 str2中的字符串是【 】。 42 下列程序的执行结果是【 】。 include iostream. h int a; int sum_a(void) a=a+5; return a; void main(void) a = a+sum_a(); cout a endl; 43 根据输出结果填空完成下面程序。 # include iostream. h class Test private: stati

10、c int val; int a; public: static int func( ); void sfunc(Test ; 【 】 /初始化静态变量 val int Test:func() return val+; void Test:sfunc(Test cout “Result3=“ r.a; void main( ) cout “Resultl=“ Test:func( ) endl; Test a; cout “Result2=“ a. func( ); a. sfunc(a) 44 下列程序的运行结果是【 】。 # include iostream. h class test p

11、rivate: int num; public: test() int TEST() return num+100; test() ; test:test()num=0; test: test()cout “Destructor is active“ endl; void main() test x3 cout x1. TEST() endl; 45 下列程序是一个函数模板,用于把数组 a的每个元素按照逆序放入数组 b中。请填空完成该函数模板的定义 template class Type void Func(Type a, Type b,【 】 ) for(int i=0;i n;i+) bn

12、-i-1=ai; 46 下列程序的运行结果是【 】。 # include iostream. h # include string. h void main() char * a5=“stuent“,“worker“,“teacher“,“soldier“,“ peasant“; char * p1, * p2; p1=p2=a0 for(int i=0;i 5;i+) if(strcmp(ai,p1) 0) p1=ai; if(strcmp(ai,p2) 0) p2=ai; cout p1 “,“ p2 endl; 47 下列程序编译时发现 pb- f(10);语句出现错误,其原因是【 】。

13、 # include iostream. h class Base public: void f(int x)cout “Base:“ x endl; ; class Derived: public Base public: void f(char * str)cout “Derivcd:“ str endl; ; void main(void) Derived * pd=new Derived; pd- f(10) 48 下列程序的运行结果是【 】。 # include iostream. h class SomeClass public: SomeClass(int value) some

14、_value=value; void show_data(void) cout data “ some_value endl; ; static void set_data(int value) data=value; private: static int data; int some_value ; int SomeClass:data void main(void) SomeClass my_class(1001),your_class(2002); your_class. set_data(4004); my_elass. show_data() 49 下列程序用于打印出 ASC 字符

15、,其析构函数内的语句应为【 】。 # include iostream. h # inelude iomanip, h template class T class Array T * elems; int size; public: Array(int.s); Array() T template class T Array T :Array(int s) size=s; elems=new Tsize for(int i=0;i size;i+) elemsi=0 template celass T Array T : Array() _ template class T T templa

16、te class T void Array T :operator=(T temp) for(int i=0;i size;i+) elemsi=temp; void main() int i,n=26; Array int arr1(n) Array char arr2(n) for(i=0;i n;i+) -. arr1i=a+i; arr2i=a+i; cout “ASCII 字符 “ endl; for(i=0;i n;i+) cout setw(8) arr1i setw(8) arr2i endl; 50 下列程序对加号进行了重载,划线部分的语句是【 】。 # include io

17、stream. h # include math. h class Triangle int x,y,z; double area; public: Triangle(int i,int j, int k) double s; x=i;y=j;z=k; s=(x+y+z)/2.0; area=sqrt(s*(s-x)*(s-y)*(s-z); void disparea() cout “Area=“ area endl; friend double operator+(Triangle t1,Triangle t2) _ ; void main() Triangle t1(3,4,5),t2(

18、5,12,13); double s; cout “t1:“;t1.disparea() cout “t2:“;t2.disparea() s=t1+t2; tout “总面积 :=“ s endl; 50 多继承情况下,派生类对基类成员的访问会出现二义性。解决二义性的方法是【 】、【 】和【 】。 国家二级( C+)笔试模拟试卷 127答案与解析 1 【正确答案】 B 【试题解析】 在进行参数传递时,引用参数是利用形参直接访问实参,形参的变化直接影响实参的变化,而传值参数不会影响实参变量。 2 【正确答案】 A 【试题解析】 用单链表表示的链式队列的队头在链表的链头位置。 3 【正确答案】

19、D 【试题解析】 从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法,故本题答案应该为选项 D。 4 【正确答案】 B 【试题解析】 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括 :软件开发技术和软件工程管理。 5 【正确答案】 B 【试题解析】 线性表是一个具有 n个数据元素的有限序列。 6

20、【正确答案】 D 【试题解析】 200+(1860+25)4 4620。 7 【正确答案】 D 【试题解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 D。 8 【正确答案】 B 【试题解析】 内模式 (Internal Schema)又 称物理模式 (Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash等存取方式与存取路径。 9 【正确答案】 B 【试题解析】 由于指针 q 所指结点是指针 p所指结点的直接

21、前驱,若在 *q与 *p之间插入结点 *s,首先将 q 指向 s,再将 s指向 p,即插入了结点 s。 10 【正确答案】 B 【试题解析】 数据库管理系统 (Database Management System, DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、 数据操纵、数据维护、控制及保护和数据服务等,包括硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。 11 【正确答案】 D 【试题解析】 do while循环无条件执行一次。 12 【正确答案】 A 【试题解析】 第三行是由逗号表达式组成的语句,第四行是由条件表达式组成的语句,第五行 print

22、f语句的输出项为逗号表达式,本题没有语法错误。 13 【正确答案】 D 【试题解析】 其中 3/2=1。 14 【正确答案】 C 【试题解析】 对 |构成的 语句从左向右执行,如果出现真,则 |后面的语句不执行。 15 【正确答案】 A 【试题解析】 初始 i=0,则 case 0成立,由于没有 break,则所有语句将都执行,则 i=10,再执行 i+,则 i=11。 16 【正确答案】 C 【试题解析】 一个类可以声明多个对象。 17 【正确答案】 A 【试题解析】 在 C+中,每个当前对象都含有一个指向该对象的 this 指针, this指针只能在类的成员函数中使用,其中静态成员函数不能

23、够有 this指针。 18 【正确答案】 C 【试题解析】 使用类函数指针格式是:对象名 *指针名 = (实参表 ) 19 【正确答案】 A 【试题解析】 子类型关系不可逆。 20 【正确答案】 C 【试题解析】 n 是类的静态数据成员,发生静态数据成员的赋值,则所有对象的静态数据成员的值都发生改变。 21 【正确答案】 C 【试题解析】 递归函数求阶乘, 4!=24。 22 【正确答案】 D 【试题解析】 封装的含义。 23 【正确答案】 A 【试题解析】 私有成员只能被本类的成员函数或者友元函数访问 。 24 【正确答案】 C 【试题解析】 运算符重载函数说明为类的成员函数的格式:类名 o

24、perator运算符 (参数表 ) 25 【正确答案】 B 【试题解析】 k=(+i)+(+i)+(i+)表达式中, “+”号在 i前面的有两个,所以在计算 k之前, i要先增两次,即 i变为 7,然后再将 3个 7相加,使 k 得 21;表达式中 “+”号在 i后面的有 1个,所以得出 k 的值以后 i又增 1次变为 8。 26 【正确答案】 C 【试题解析】 设置默认参数值从右向左。 27 【正确答案】 B 【试题解析】 在同一作用域中,两个变量不能够重名。 28 【正确答案】 A 【试题解析】 静态数据成员是类的所有对象共享的数据。 29 【正确答案】 C 【试题解析】 只有常成员函数才

25、可以操作常对象,常对象不可更新。 30 【正确答案】 B 【试题解析】 虚函数的特性。 31 【正确答案】 B 【试题解析】 构造函数不可以为虚函数,但可以调用虚函数;析构函数可以为虚函数。 32 【正确答案】 C 【试题解析】 除了类属关系运算符 “ ”、成员指针运 算符 “ *”、作用域运算符“: ”、 sizeof 运算符合三目运算符 “?: ”以外,其余都可以重载。 33 【正确答案】 C 【试题解析】 模板函数的调用,执行语句 A double a(7.8, 3.4);后,则a.x=7.8、 a.y=3.4;执行语句 A char b(7.8, 3.4);后,将对 7.8和 3.4转

26、换为char类型,则 b.x=7、 b.y=3;函数 add()为整形, x+y将转换为整形。 34 【正确答案】 C 【试题解析】 类模板的定义。注意类模板和模板类的区别:类模板不是一个具 体的类,使用时必须首先实例化为具体的模板类,然后通过模板类定义对象。 35 【正确答案】 C 【试题解析】 setw 包含在 iomainip.h中。 36 【正确答案】 逻辑 【试题解析】 数据的逻辑结构主要是反映数据之间的逻辑关系,而存储结构是用来反映数据的逻辑结构在计算机存储空间中的存放形式。循环队列主要是强调数据之间的关系,因此属于逻辑结构。 37 【正确答案】 队尾 【试题解析】 在队列中,允许

27、插入的一端叫做 “队尾 ”,允许删除的一端叫做 “队头 ”。 38 【正确答案】 31 【试题解析】 设队列容量为 m, rear front,则队列中元素个数为 rear-front:rear front,则队列中元素个数为 m+(rear-front)。本题 rear front,则m=32+(2-3)=31。 39 【正确答案】 32 【试题解析】 二叉树第 k 层上,最多有 2k-i(k1)个结点。第 6 层的结点数最多是26-1=32。区别 “二叉树的结点最多数 ”和 “某一层的结点最多数 ”。前者的计算是深度为 m的二叉树最多有 2m-1个结点。 40 【正确答案】 45 【试题

28、解析】 对于长度为 n的线性表,在最坏情况下 (即线性表中元素现在的顺序与目标顺序正好相反 ),冒泡排序需要经过 n/2遍的从前往后的扫描和 n/2 遍的从后往前的扫描,需要的比较次数为 n(n-1)/2。 41 【正确答案】 XYZxyz 【试题解析】 注意 for的循环体为空语句,其第二个表达式为一个赋值语句而不是一个逻辑表达式语句。因此, for循环的作用实际上是将 str2的字符逐个赋值给str1中的对应位置。 42 【正确答案】 10 【试题解析】 本题考查全局变量的使用。全局变量被系统默认初始化 为 0,故在执行 a=a+sum _a();语句时,首先执行 sum_a函数,将 a的

29、值改变为 5,该函数的返回值也是 5,故最后 a的值被赋值为 10。 43 【正确答案】 int Test:val=200; 【试题解析】 类的静态成员变量必须要进行初始化才能使用,初始化时需要用域限定符 :指明该变量所属的类名。 44 【正确答案】 100 【试题解析】 本题比较简单,考查考生基本的类的定义,构造函数以及对象数组的概念。 45 【正确答案】 int n 【试题解析】 本题考查函数模板的定义 ,注意第三个参数不需要改变类型,仅仅用于给定循环体的上界为正整数,故可直接用 int来限定。 46 【正确答案】 worker, peasant 【试题解析】 分析本题的 for循环体内的

30、语句可知, p1和 p2将放置最大和最小的字符串,这里的比较是以第一个字符值为基准的。 47 【正确答案】 数据类型不匹配 【试题解析】 派生类中的成员函数隐藏了基类的同名函数,而参数 10又无法隐式转换为 char类型参数。 48 【正确答案】 4004 1001 【试题解析】 本题考查静态成员变量在 不同对象间的共享现象。无论哪个对象修改了其静态变量的值,其他对象再访问该变量时已经发生了变化。 49 【正确答案】 delete elems; 【试题解析】 注意,用 new动态申请的内存在使用完成后一定要用 delete释放。 50 【正确答案】 return t1.area+t2.area; 【试题解析】 符号重载时往往采用的方法是对对象中的每个成员分别处理,封装之后体现出对象参与运算的现象。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1