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

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

1、国家二级( C+)笔试模拟试卷 66及答案与解析 1 以下内容不属于算法程序所占的存储空间的是 ( )。 ( A)算法程序所占的空间 ( B)输入的初始数据所占的存储空间 ( C)算法程序执行过程中所需要的额外空间 ( D)算法执行过程中所需要的存储空间 2 数据的存储结构是指 ( )。 ( A)数据所占的存储空间量 ( B)数据的逻辑结构在计算机中的表示 ( C)数据在计算机中的顺序存储方式 ( D)存储在外存中的数据 3 在一个长度为 n的线性表中插入一个元素,最坏情况下需要移动的数据元 素数目( )。 ( A) 1 ( B) n ( C) n+1 ( D) n/2 4 对于建立良好的程序

2、设计风格,下面有关数据说明描述错误的是 ( )。 ( A)数据说明的次序规范化 ( B)说明语句中变量安排有序化 ( C)使用注释来说明复杂数据的结构 ( D)数据说明次序可以任意排列 5 结构化程序设计主要强调的是 ( )。 ( A)程序的规模 ( B)程序的易读性 ( C)程序的执行效率 ( D)程序的可移植性 6 如下图所示的 4棵二叉树中,不是完全二叉树的是 ( )。 ( A) ( B) ( C) ( D) 7 需求分析最终结果是产生 ( )。 ( A)项目开发计划 ( B)需求规格说明书 ( C)设计说明书 ( D)可行性分析报告 8 下列叙述中,正确的是 ( )。 ( A)数据库的

3、库结构包括数据库中各个记录的数据 ( B)数据库中的数据不仅仅是数值型数据 ( C)数据库管理系统的主要功能是建立数据 ( D)数据库文件的结构不能由系统自动生成 9 关系数据库管理系统能实现的专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连 接 ( C)关联、更新、排序 ( D)显示、打印、制表 10 数据库设计有两种方法,它们是 ( )。 ( A)概念设计和逻辑设计 ( B)模式设计和内模式设计 ( C)面向数据的方法和面向过程的方法 ( D)结构特性设计和行为特性设计 11 以下各选项中, ( )中都是 C+语言保留字。 ( A) cout, operator

4、, this ( B) short, string, static ( C) if, while, = ( D) private, public, printf 12 若有以下程序: #include iostream using namespace std; int main() int a=3; cout (a+=a-=a+A) end1; return 0; 程序执行后的输出结果是 ( )。 ( A) -6 ( B) 12 ( C) 0 ( D) -12 13 已知枚举类型定义语句为: enum Token NAME, NUMBER, PLUS=5,MINUS, PRINT=10; 则下

5、列说法中,错误的是 ( )。 ( A)枚举常量 NAME的值为 1 ( B)枚举常量 NUMBER的值为 1 ( C)枚举常量 MINUS的值为 6 ( D)枚举常量 PRINT的值为 10 14 有以下程序: #include iostream using namespace std; int main () int n; cin n; if (n+ 10) cout n end1; else cout n- end1; return 0; 若执行该程序时从键盘上输入 9,则输出结果是( )。 ( A) 11 ( B) 10 ( C) 9 ( D) 8 15 设有语句: char str1=

6、“string“,str28,*str3,*str4=“string“; 则下列对库函数strcpy()调用不正确的是 ( )。 ( A) strcpy(str1,“Hell01“); ( B) strcpy(str2,“Hell02“); ( C) strcpy(str3,“Hell03“); ( D) strcpy(str4,“Hell04“); 16 下列对变量的引用中,错误的是 ( )。 ( A) int a; int else return n*Fun(n+1); B) int Fun(ira n) if(abs(n) 1) return 1; else return n*Fun(n

7、/2); C) int Fun(int n) if(n 1) return 1; else return n*Fun(n*2)1 D) int Fun(int n) if(n 1) return 1; else retun n*Fun(n-1); ( A) A ( B) B ( C) C ( D) D 18 有如下类的定义。空格处的语句是 ( )。 class MyClass _ int x, y; public: MyClass(int a=0,int b=0) x=a; y=b; static void change() x-=10; y-=10; ; ( A) static ( B) c

8、onst ( C) private ( D)不需要填入内容 19 假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句 为 ( )。 ( A) MyClass ( B) MyClass (MyClass x); ( C) MyClass(MyClass ( D) MyClass (MyClass *x); 20 下列类的定义中,有 ( )处语法错误。 class Base public: Base ( ) Base(int i) data=i; private: int data; ; class Derive : public Base public: Derive() : Bas

9、e(O) Derive (int x) d=x; void setvalue(int i) data=i; private: d; ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 21 以下程序执行后的输出结果是 ( )。 #include iostream using namespace std; void try(int,int,int,int); int main ( ) int x,y,z,r; x=1; y=2; try(x,y,z,r); cout r end1; return 0; void try(int x,int y, int z,int r) z = x+y;

10、 x = X*X; y = y*y; r = z+x+y; ( A) 18 ( B) 9 ( C) 10 ( D)不确定 22 有以下程序 : #include iostream using namespace std; int main ( ) int n3,i,j,k = 2; for(i = 0;i k;i+) ni = O; for(i = O;i k;i+) for(j = O;j k;j+) nj = ni + 1; cout n 0 end1; return 0; 上述程序运行后,输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 23 以下函数实现的功

11、能是 ( )。 void fun(char *s) char *p,*q, temp; p=s; q=s+strlen (s) -1; while (p q) temp=*p; *p=*q; *p=temp; p+; q-; ( A)将一个字符串首尾颠倒 ( B)计算字符串的长度 ( C)统计字符串中的空格个数 ( D)将字符串中的小写字母变成大写字母 24 以下程序段有 ( )处错误。 #include iostream using namespaces std; class Sample private: int n; public: Sample (int i n=i; void set

12、value(int i) n=i; void display() cout “n=“n end1; ; int main ( ) const Sample a(lO); a. setvalue (5); a.display(); return 0; ( A) 1 ( B) 2 ( C) 3 ( D) 4 25 有以下程序 : #include iostream using namespace std; class sample private: int n; public: sample() sample (int m) n=m; sample add(sample sl,sample s2)

13、 this- n=sl.n+s2.n; return (*this); void disp() cout “n=“ n end1; ; int main ( ) sample sl(10) ,s2 (5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是 ( )。 ( A) n=10 ( B) n=5 ( C) n=20 ( D) n=15 26 有以下程序 : #include iostream using namespace std; class A private: int x; public: A(int a) x=a; frie

14、nd class B; ; class B public: void print(A a) a.x-; cout a, x end1; ; int main () A a(10); B b; b.print (a) ; return 0; 程序执行后的输出结果是 ( )。 ( A) 9 ( B) 10 ( C) 11 ( D) 12 27 类 Contain 的定义如下: class Contain private: int x; protected: int z; public: class Embed private: int y; public: Embed ( ) y=100; int

15、 Embed_Fun(); MyEmbed; int Contain_Fun(); ; 下列对上面定义的描述中,正确的是 ( )。 ( A)定义类 Embed对象的语句是: Contain: Embed Myobject; ( B)类 Contain的成员函数 Contain_Fun()中可以 访问对象 MyEmbed的私有成员 y ( C)类 Embed的成员函数 Embed_Fun()中可以直接访问类 Contain的所有成员 ( D)类 Embed的成员函数 Embed_Fun()中只能直接访问类 Contain的公有成员 28 若有以下程序: #include iostream usi

16、ng namespace std; class Base int x; protected: int y; public: int z; void setx(int i) x=i; int getx ( ) return x; ; class Inherit : private Base private: int m; public: int p; void setvalue(int a,int b,int c, int d) setx(a) ; y=b; z=c; m=d; void display() cout getx () “, “ y “, “ z “, “ m end1; ; in

17、t main() Inherit A; A.setvalue(1,2,3,4); A.display(); return 0; 程序运行后的输出结果是 ( )。 ( A) 1,2,3,4 ( B)产生语法错误 ( C) 4,3,2,1 ( D) 2,3,4,5 29 为使程序的输出结果为: Base: fun 那么应在下列程序画线处填入的正确语句是 ( )。 #include iostream using namespace std; class Base public: void fun () cout “Base: :fun“ end1; ; class Derived : public

18、Base public: void fun ( ) cout “Derived: :fun“end1; ; int main ( ) Base a,*pb; Derived b; _; pb- fun(); /调用基类的成员函数 fun() return 0 ; ( A) pb=&a ( B) pb=b ( C) pb=&b ( D) pb=&Base 30 C+流中重载了运算符,它是一个 ( )。 ( A)用于输出操作的成员函数 ( B)用于输入操作的成员函数 ( C)用于输入操作的非成员函数 ( D)用于输出操作的非成员函数 31 冒泡排序算法在最好的情况下的元素交换次数为【 】。 32

19、在最坏情况下,堆排序需要比较的次数为【 】。 33 若串 s=“MathTypes“,则其子串的数目是【 】。 34 软件开发环境是全面支持软件开发全过程的【 】集合。 35 关系数据库的关系演算语言是以【 】为基础的 DML语言。 36 一个 C+语言程序的开发步骤通常包括编辑、【 】、链接、运行和调试。 37 若已知 a=10, b=20,则表达式 !a b的值为【 】。 38 友元类的所有成员函数都是另一个类的【 】。 39 表达式 x operator+()还可写成【 】。 40 以下程序的输出结果是【 】。 #include iostream h void main() int a=

20、0; a+ =(a=8) ; cout a; 41 若要在 C盘根目录下作为二进制文件打开文件 test dat,则应该用的语句是【 】。 国家二级( C+)笔试模拟试卷 66答案与解析 1 【正确答案】 D 【试题解析】 一个算法程序所占的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法程序执行过程中所需要的额外空间,而不是算法执行过程中所需要的存储空间。因此,答案为 D。 2 【正确答案】 B 【试题解析】 数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,而且一般不可能相同。数据的逻辑结构在计 算机存储空间中的存放形式称为数据的存储结构,也称数据的物

21、理结构。 3 【正确答案】 B 【试题解析】 在一般情况下,要在第 i个元素之前插入一个新元素时,首先是从最后一个元素开始,直到第 i个元素之间共 n-i+1个元素依次向后移动一个位置,移动结束后,第 i个位置就被空出,然后将新元素插入到第 i项。最坏情况指的是在线性表的第 1个元素之前插入一个新元素,则需要移动表中所有的元素,答案为 B。 4 【正确答案】 D 【试题解析】 数据说明的风格对建立良好的程序设计风格很重要,良好的数据说明的风格要求 数据说明的次序规范化、说明语句中变量安排有序化、使用注释来说明复杂数据的结构。满足要求的数据说明的风格才能使程序中的数据说明更容易理解和维护。 5

22、【正确答案】 B 【试题解析】 采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,从而便于编写程序;二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。 6 【正确答案】 D 【试题解析】 本题考查完全二叉树的概念。完全二叉树是指除最后一层外,每一层上的 节点数都达到最大值;在最后一层上只缺少右边的若干节点。选项 D中第2层的左边节点没有达到最大值。 7 【正确答案】 B 【试题解析】 本题考核软件工程中的需求分析环节。需求分析应交付的主要文档就是需求规格说明书。 8 【正确答案】 B 【试题解析】 数据

23、库的库结构是指数据在存储介质内的存放形式。数据库中的数据可以是合法的任意数据类型,而不仅仅是数值型数据。数据库管理系统的功能主要有数据模式定义、数据存取的物理构建、数据操纵、数据的完整性、安全性定义与检查、数据库的并发控制与故障恢复和数据的 服务。数据库文件的结构可以由系统自动生成。 9 【正确答案】 B 【试题解析】 关系数据库系统的特点之一是它建立在数学理论的基础上,有很多数学理论可以表示关系模型的数据操作。选项 A、 C、 D都不属于关系运算。 10 【正确答案】 C 【试题解析】 概念设计和逻辑设计是数据库设计中包括的两个设计内容。模式设计和内模式设计是概念设计的两种方法。从系统开发的

24、角度来看,结构特性设计和行为特性设计是数据库应用系统所具有的两个特性。结构特性的设计:设计各级数据库模式 (静态特性 ):行为特性的设计:改变实 体及其特性,决定数据库系统的功能 (动态特性 )。 11 【正确答案】 A 【试题解析】 本题主要考察有关 C+语言保留字这个知识点。 C+语言中,运算符 ( =)、函数名 (printf)和非基本数据类型 (string)都不是 C+语言的保留字 (关键词 )。 12 【正确答案】 D 【试题解析】 本题考核运算符的优先级和结合性。根据运算符的优先级和结合性用括号来分出表达式的优先级: a+=(a-=(a*A) )。先计算 a*a得 9,再执行语句

25、: a-=9:得到 a=-6,然后执行 a+=a 得到结果 -12。 13 【正确答案】 A 【试题解析】 枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点: 枚举类型的第一个常量默认值是 0。 枚举类型常量的值允许彼此相同。 虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较。 由此可知,枚举常量 NAME的值应为 0。所以选项 A是错误的。 14 【正确答案】 B 【试题解析】 程序的功能是从键盘输入一个整数,然后执行 if语句的条件表达式“n+ 10”,表达式 “n+ 10”等价于 “n 10; n+;

26、”这两条语句。所以输出结果n的值为 10。 15 【正确答案】 C 【试题解析】 本题考核库函数 strcpy()的正确调用。函数 strcpy()的函数原型为: char*strcpy(char*strDest, constchar*strSrC) ; 其功能是复制 strSrc所有字符到 strDest,并返回 strDest。 根据函数 strcpy()的原型可知,选项 A、 B和 D的调用都是正确的。在选项 C中,由于指针 *str3没有初始化其字符长度,容易引起访问越界,故是不正确的。 16 【正确答案】 C 【试题解析】 本题考核引用的定义和初始化。引用具有如下特点: 引用能够使用

27、任何合法变量名。 引用不是变量,所以必须在定义时初始化,而且一旦初始化之后,就不能再成为其他变量的引用。 引用不是值,不占存储空间,说明引用时,目标的存储状态不会改变。所以,引用只有说明,没有定义。 引用仅在说明时带有 “&”,以后就像普通变量一样使用,不能再带 “&”。 在选项 C中,由于在定义引用 p后没有进行 初始化,所以此语句是错误的。故本题答案是 C。 17 【正确答案】 B 【试题解析】 本题考查递归函数这个知识点。递归函数由递归出口和递归体两部分组成:递归出口给出了递归终止的条件;递归体给出了递归的方式。对于选项A,当参数 n =1时,不满足递归调用的结束条件;对于选项 C,当参

28、数 n =0时,不满足递归调用的结束条件;对于选项 D,当参数 n: 2时,不满足递归调用的结束条件。 18 【正确答案】 A 【试题解析】 类的静态成员函数只可以直接访问类中的静态成员,不能直接访问类中的非静态成员。对于 上述类的定义,由于在静态成员函数 change()访问了类MyClass的数据成员 x和 y,只能把 x和 y定义为静态数据成员。 19 【正确答案】 C 【试题解析】 声明拷贝构造函数的格式为: 类名:拷贝构造函数 (const类名 &引用名 ); 其中 const是修饰符可以省略。 20 【正确答案】 B 【试题解析】 本题考核派生类的定义和成员的访问权限。 第 1处错

29、误:在派生类的构造函数 Derive(intx)中没有调用基类的构造函数对基类对象初始化。 第 2处错误:数据 data是基类 Base的私有成员,派生类 Derive不能访问,所以在函数 setvalue中对 data的赋值是错误的。 21 【正确答案】 D 【试题解析】 本题常见的错误解答是:把 x=1, y=2代入到函数 try中,逐步计算出 r=8。最后得到 r的输出值是 8。下面是正确解答。根据程序逐步分析: 程序中定义了一个名为 try的 void型函数,即函数 try()没有任何返回值。 而 try()函数在主函数中是以一条独立语句的方式被调用的,且主函数最后输出变量 r的值。

30、但在主 函数中,并没有对变量 r赋值。 在 C+语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以,虽然在函数 try()中, r的值为 8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。 22 【正确答案】 D 【试题解析】 本题考核数组的定义、初始化及其使用。根据程序逐步分析:程序首先给数组 n的所有元素赋初值 0,然后执行一个嵌套的循环结构。嵌套循环的执行过程如下: i=0时, j分别取值 0、 1,使得 n0、 n1的值分别变 1、 2,内层循环结束。 i=1时,对外层循环进行判断,符合循环条件,执行

31、内层循环, j分别取值 0、1,使得 n0、 n1的值变为 3、 3,退出内层循环。 i=2时,判断外层循环,不再符合循环条件,退出外层循环,执行 cout语句,输出 n0的值为 3。 23 【正确答案】 A 【试题解析】 在该函数中,循环开始时,指针 p指向字符串的第 1个字符,指针q指向字符串的最后一个字符,首先交换这两个字符:然后,指针 p前进一个字符位置 (指向下一个字符 ),指针 q后退一个字符位置 (指向前一个字符 ):经过若干次循环,条件 p q将为假 (即指针 p和指针 q相遇 ),循环结束。从而实现了将一个字符串首尾颠倒的功能。 24 【正确答案】 B 【试题解析】 本题考查

32、常对象的掌握。本程序中有两个错误: 第 1处错误是 “a setvalue(5); ”语句,由于对象 a为常对象,所以对象 a的私有数据成员 n不能被更新。 第 2处错误是语句 “a.display(); ”。由于对象 a为常对象,所以通过对象 a只能调用它的成员函数,而成员函数 display()不是常成员函数。 25 【正确 答案】 D 【试题解析】 本题考核 this指针的使用。类中成员函数 add中的 this指针指向该成员函数被调用的对象。在主函数 main()中调 s3 add(s1, s2),即对象 s3的私有变量 n的值为对象 s1和 s2私有变量的和,所以程序最后输出 15,

33、即选项 D。 26 【正确答案】 A 【试题解析】 本题考核友元类的应用。在程序中,类 B是类 A的友元类,因此,在类 B的所有成员函数中均可访问类 A的任何成员。在 main()中,先定义类A的一个对象 a(10)和类 B的一个对象 b。然后通过对象 b调用其成员函 数print(),输出对象 a的私有成员 x的值减 1即 9。 27 【正确答案】 A 【试题解析】 对象 MyEmbed是类 Contain的成员对象,通过对象 MyEmbed不能访问其私有数据成员 y,所以选项 B是错误的。 类 Embed是类 Contain的嵌套类,类 Embed的成员函数不能直接访问类 Contain的

34、所有成员,所以选项 C和 D都是错误的。 28 【正确答案】 A 【试题解析】 本题中,基类 Base中的保护成员 y和公有成员 setx和 getx,经过私有继承以后,称为派生类 Inherit的私有 成员,所以可以在派生类 Inherit的函数成员中对它们进行访问。类 Inherit中的函数成员 setvalue和 display都是公有成员,所以可以通过 Inherit的对象对它们进行访问。本程序的功能是对类中各数据成员进行赋值,然后查看赋值是否正确。 29 【正确答案】 C 【试题解析】 本题程序中类 Derived是从基类 Base公有继承的。主函数中定义了一个基类对象 a和一个指向

35、基类对象的指针 pb,又定义了一个派生类 Derived对象 b。当 pb指向对象 b时, pb- fun()调用基类 Base的成员 函数 fun()。这是由于 Derived是 Base的子类型,因此可以将派生类 Derived的对象 b的地址赋值给指向基类 Base的指针 pb,但这时指针 pb只能使用从基类 Base继承的成员。 30 【正确答案】 D 【试题解析】 C+流中重载了和,其中用于有格式输入,用于有格式输出。且都重载为非成员函数。 31 【正确答案】 0 【试题解析】 根据冒泡排序算法思想可知,若待排序的初始序列为 “正序 ”序列,则只需进行一趟排序,在排序过程中进行 n-

36、1次关键字间的比较,且不移动和交 换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为 0。 32 【正确答案】 O(nlog2n) 【试题解析】 在最坏情况下,冒泡排序所需要的比较次数为 n(n-1)/2;简单插入排序所需要的比较次数为 n(n -1)/2;希尔排序所需要的比较次数为 O(n1.5);堆排序所需要的比较次数为 O(nlog2n)。 33 【正确答案】 46 【试题解析】 串 s中共有 9个字符,由于串中字符各不相同,则其子串中有 0个字符的 1个 (空串 ), 1个字符的 9个, 2个字符的 8个, 3个字符的 7个, 4个字符的 6个, 5个字

37、符的 5个, 6个字符的 4个, 7个字符的 3个, 8个字符的 2个, 9个字符的 1个,共有 1+2+3+4+5+6+7 +8+9+1=46。 34 【正确答案】 软件工具 35 【正确答案】 谓词演算 【试题解析】 关系数据库中的关系演算包括元组关系演算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。 36 【正确答案】 编译 【试题解析】 C+语言程序开发的基本步骤是编辑、编译、链接、运行和调试。 37 【正确答案】 1 【试题解析】 计算表达式 !a b,先计算 !a,因 a的值为 10, !a的值为 0。关系表达式 0 20为真,所以表

38、达式 !a b,的值为 1。 38 【正确答案】 友元函数 【试题解析】 C+语言中友元类中的函数都是另一个类的友元函数。 39 【正确答案】 +x 【试题解析】 C +语言中用成员函数重载 +x为 x operator+()用友元函数重载 +x为: operator+(x) 40 【正确答案】 16 【试题解析】 解答本题的关键是要分析清楚表达式 a+= (a=8)中, a的值已经被赋为 8,而不是 0。 41 【正确答案】 if stream且 fin(“C: test dat”, ios_binary);或 if stream fin,;fin open(c: test dat“, ios_binary); 【试题解析】 C+中打开文件有两种方式 if stream fin (“test dat”); if stream fin; fin open(“test dat”);, ios_binary的意义是以二进制文件打开。

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

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

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