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

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

1、国家二级( C+)笔试模拟试卷 180及答案与解析 1 在关系代数运算中,有 5种基本运算,它们是 ( )。 ( A)并 ( )、差 (-)、交 ()、除 ()和笛卡儿积错误 ( B)并 ( )、差 (-)、交 ()、投影 ()和选择 () ( C)并 ( )、交 ()、投影 ()、选择 ()和笛卡儿积错误 ( D)并 ( )、差 (-)、投影 ()、选择 ()和笛卡儿积错误 2 在数据库系统的组织结构中,下列 ( )映射把用户数据库与概念数据库联系了起来。 ( A)外模式 /模式 ( B)内模式 /外模式 ( C)模式 /内模式 ( D)内模式 /模式 3 下列关于线性链表的描述中,正确的是

2、 ( )。 、只含有一个指针域来存放下一个元素地址 、指针域中的指针用于指向该结点的前一个或后一个结点 (即前件或后件 ) 、结点由两部分组成:数据域和指针域。 ( A)仅 、 ( B) 、 ( C) 仅 、 ( D)全部 4 下面关于数据库三级模式结构的叙述中,正确的是 ( )。 ( A)内模式可以有多个,外模式和模式只有一个 ( B)外模式可以有多个,内模式和模式只有一 个 ( C)内模式只有一个,模式和外模式可以有多个 ( D)模式只有一个,外模式和内模式可以有多个 5 设有关键码序列 (66, 13, 51, 76, 8l, 26, 57, 69, 23),要按关键码值递增的次序排序,

3、若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为 ( )。 ( A) 23, 13, 51, 57, 66, 26, 81, 69, 76 ( B) 13, 23, 26, 51, 57, 66, 81, 76, 69 ( C) 23, 13, 51, 57, 26, 66, 81, 69, 76 ( D) 23, 13, 51, 57, 81, 26, 66, 69, 76 6 下列哪一条不属于数据库设计的任务 ?( ) ( A)设计数据库应用结构 ( B)设计数据库概论结构 ( C)设计数据库逻辑结构 ( D)设计数据库物理结构 7 数据库技术的根本目标是 ( )。

4、( A)数据存储 ( B)数据共享 ( C)数据查询 ( D)数据管理 8 需求分析阶段的任务是 ( )。 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 9 关系数据库管 理系统能实现的专门关系运算包括 ( ) ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 10 数据管理技术发展的三个阶段中, ( )没有专门的软件对数据进行管理。 人工管理阶段 文件系统阶段 数据库阶段 ( A)仅 ( B)仅 ( C) 和 ( D) 和 11 阅读以下程序: #include iostream.h voi6 m

5、ain() static int a2=5,3,1,2; int i,j,s1=0; for(i=0;i 2;i+) for(j=0;j 2;j+) if(i=j) s1=s1+aij; cout s1 end1; 则该程序的输出结果为 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 12 若有如下程序段: #include iostream using namespace std; int main () char*p=“abcdefgh“,*r; r=p; cout *r end1; return 0; 该程序的输出结果是 ( )。 ( A) a ( B) b ( C)

6、c ( D) d 13 有如下程序: #include iostream using namespace std; void fun(intx=y;y=t; int main() int a2=1,2; fun(a1,a0); std:couta0 “,“ a1 std:end1; return 0; 执行后的输出结果是 ( )。 ( A) 2,2 ( B) 1,1 ( C) 1,2 ( D) 2,1 14 在 C+语言中函数返回值的类型是由 ( )决定的 ( A)调用该函数时系统临时 ( B) return语句中的表达式类型 ( C)定义该函数时所指定的函数类型 ( D)调用该函数时的主 调

7、函数类型 15 下面程序的运行结果是 ( )。 #include iostream.h int x=5; int fan(int a) int c; c=x*a; return c; void main() int x=3,a=4; x=x+fun(a); eout “x=“ x end1; ( A) x=15 ( B) x=17 ( C) x=23 ( D) x=25 16 分析下面 程序,该程序的运行结果是 ( )。 #include iostream.h class TestClass public; static int m; TestClass () m+; TestClass(in

8、t n) m=n; static void test() m+; ; int TestClass:m=0; void main() TestClass A; TestClass B(3); A.test(); TestClass:test(); tout “m=“B.m end1; ( A) m=3 ( B) m=4 ( C) m=5 ( D) m=6 17 下列说法中错误的是 ( )。 ( A)公有继承时基类中的 public成员在派生类中仍是 public的 ( B)公有继承时基类中的 private成员在派生类中仍是 private的 ( C)私有继承时基类中 的 public成员在派生

9、类中是 private的 ( D)保护继承时基类中的 public成员在派生类中是 protected的 18 下面关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 19 有如下程序: #include iostream using namespace std; class TestClass public; TestClass ()cout “BASE:; ; class TestClass1:publi

10、c TestClass public: TestClass 1 ()cout “DERIVED“; ; int main()TestClass1 x;return 0; 执行后的输出结果是 ( )。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 20 设有以下定义和程序: #include iostream.h class TestClass1 public: void show1() cout “TestClass1“ end1; ; class TestClass2:TestClass 1 public: void sho

11、w2() tout “TestClass2“ end1; ; class TestClass3:protected TestClass2 public: void show3() tout“TestClass3“ end1; ; void main() TestClass1 obj1; TestClass2 obj2; TestClass3 obj3; 则以下不合语法的调用语句是 ( )。 ( A) obj1.show1(); ( B) obj2.show1(); ( C) obj3.show1(); ( D) obj2.show2(); 21 在下面的 4个关键字中用来说明虚函数的是 ( )

12、。 ( A) virtual ( B) public ( C) protected ( D) private 22 如果有以下定义及初始化: int a=3,*p= 则由此可以推断, *p的值是( )。 ( A)变量 a的值,即 3 ( B)变量 a的地址值 ( C)变量 p的地 址值 ( D)无意义 23 下列字符串中,正确的 C+标识符是 ( )。 ( A) foo-1 ( B) 2b ( C) new ( D) 256 24 内部格式控制操作函数是在头文件 ( )中定义的。 ( A) iostream.h ( B) iomanip.h ( C) istream.h ( D) ostrea

13、m.h 25 执行语句: cout setfill(*) setw(10) seffill(#) left 123“0K“ end1;return 0;后将输出 ( )。 ( A) 123*0K ( B) 123#0K ( C) 123*0K* ( D) 123#0K# 26 下列对模板的声明中,正确的是 ( )。 ( A) template T ( B) template class T1.T2 ( C) template class T1.class T2 ( D) template class T1;class T2 27 有如下程序: #include iostream using n

14、amespace std; class AA int n; public: AA(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() 从 a(5); const AA b(6); cout a.get() b.get(); return 0; 执行后的输出结果是 ( )。 ( A) 55 ( B) 57 ( C) 75 ( D) 77 28 关于函数重载,下列叙述中错误的是 ( ) ( A)重载函数的函数名必须相同 ( B)重载函数必须在参数个数或类型上有所不同 ( C)重载函数的返回值类型必须相同 ( D

15、)重载函数的函数体可以有所不同 29 以下程序的执行结果为 ( )。 #include iostream.h class Sample int n; public: Sample(int i)n=i; operator+()n+; /前缀重载运算符 operator+(int)n+=2; /后缀重载运算符 void disp() cout “n=“ nend1; ; void main() Sample A(2),B(2); A+; +B; A.disp(); B.disp(); ( A) n=4 n=3 ( B) n=1 n=2 ( C) n=3 n=4 ( D) n=5 n=6 30 重载

16、输入流运算符 “ ”必须使用的原型为 ( )。 ( A) istream ( B) istream ( C) istream operator (istream,类名 ( D)类名 operator (istream 31 运算符函数调用格式的表达式 “y/x+”与表 达式 “y.operator/(operator+(x,0)”的含义相同,由此可看出 ( )。 ( A) “/”和 “+”都是作为成员函数重载的 ( B) “/”和 “+”都是作为非成员函数重载的 ( C) “/”是作为成员函数重载的, “+”是作为非成员函数重载的 ( D) “/”是作为非成员函数重载的, “+”都是作为成员函

17、数重载的 32 派生类的构造函数的成员初始化列表中,不能包含 ( )。 ( A)基类的构造函数 ( B)派生类中子对象的初始化 ( C)基类中子对象的初始化 ( D)派生类中一般数据成员的初始化 33 在下面的类定义中,横线处应填入的内容是 ( )。 class Fred public: void print()cout data end1; void setData(double ddata=d; static int count; private: double data; ; _count=0; /静态数据成员的定义 ( A) int ( B) static int ( C) int F

18、red: ( D) static int Fred: 34 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 this指针 ( D)类的非静态成员函数才有 this指针 35 下列情况中,不会调用拷贝构造函数的是 ( )。 ( A)用一个对象去初始化同一类的另一个新对象时 ( B)将类的一个对象赋值给该类的 另一个对象时 ( C)函数的形参是类的对象,调用函数进行形参和实参结合时 ( D)函数的返回值是类的对象,函数执行返回调用时 36 假设用一个长度为 50的数组 (数组元素的下

19、标从 0 49)作为栈的存储空间,栈底指针 bottom指向栈底元素,栈顶指针 top指向栈顶元素,如果 bottom=49,top=30(数组下标 ),则栈中具有 _个元素。 37 软件测试可分为白盒测试和黑盒测试。基本路径测试属于 _测试。 38 符合结构化原则的三种基本控制结构是:选择结构、循环结 构和 _。 39 数据库系统的核心是 _。 40 在 E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是_框。 41 有如下程序段: intx=1, y=2, z=3; x=xz: y=yz; z=xy: cout x y z; 这个程序段的输出结果是 _。 42 有如下程序段:

20、 for(inti=i; i =50; i+) if(i%3 1=0)continue; else if(i%5 1=0)continue; cout i “, “; 这个程序的输出结果是 _。 43 有如下程序段: char C20=“examination“; C4=0; cout c endl; 这个程序的输出结果是 _。 44 下面的函数利用递归实现了求 1+2+3+n 的功能: int sum(int n) if(n=0)return 0; else return n+saln(n-1); 在执行 SUm(10)的过程中,递归调用 sum函数的次数是 _。 45 非成员函数应该声明为

21、类 _函数才能访问该类的私有成员。 46 有如下程序: #include iostream using namespace std; class Monitor public: Monitor(char t): type(t) void Print( )const cout “The type of monitor is“ type private: char type; ; class Computer public: Computer(int i, char C) : _ void Print( )const eout “The computer is“ id endl; mort Pri

22、nt( ); private: int id; Monitor mon; ; int main( ) const Computer myComputer(101, B); myComputer Print( ); return 0; 请将程序补充完整,使程序在运行时输出: The computer is 101 The type of monitor is B 47 有如下程序: #include iostream using namespaee std; c lass Animal public: virtual char*getType( )constreturn“Animal“; vir

23、tual char*getVoice( )constreturn“Voice“; ; class Dog: public Animal public: char*getType( )constreturn“Dog“; char*getVoice( )eonstreturn“Woof“; ; void type(AnimalA) cout a getType( ); void speak(Animal A) eout a getVoice( ); int main( ) Dog d; type(D) ; cout “speak“; speak(D) ; cout return 0; 程序的输出结

24、果是 _。 48 补充完整下面的类定义: const double PI=3.14; class Circle /圆形物体的抽象基类 protected: double r; /半径 public: Circle(double radius=0): r(radius) _; /计算圆形物体表面积的纯虚函数声明 ; class Cylinder: public Circle/圆柱体类 double h; /高度 public: Cylinder(double radius=0, double height=0); Circle(radius), h(height) Virtual double

25、Area( )return 2*PI*r*(r+h); /计算圆柱体的表面积 ; 49 补充完整下面的类定义: class XCH char*a; public: XCH(char*a A) /构造函数 a=new charstrlen(aA) +1; strcpy(a, aA) ; XCHoperator=(const XCHx)/重载赋值函数 delete a; a=new charstrlen(x A) +1; strcpy(a, x A) ; _; XCH( )delete a; ; 50 补充完整下面的模板定义: template class Type /Type为类型参数 clas

26、s Xtwo /由两个 Type类型的数据成员构成的 模板类 Type a; Type b; public: Xtwo(Type aa=0, Type bb=0): a(aA) , b(bB) int Compare( ) /比较 a和 b的大小 if(a B) return 1; else if(a=B) return 0; else return-1; Type Sum( )return a+b; /返回 a和 b之和 Type Mult( ); /函数声明,返回 a和 b之乘积 ; template class Type _ :Mult( )return a*b; /Mult函数的类外定

27、义 国家二级( C+)笔试模拟试卷 180答案与解析 1 【正确答案】 D 2 【正确答案】 A 3 【正确答案】 D 【试题解析】 在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。 在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元 素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点 (即前件或后件 )。 4 【正确答案】 B 5 【正确答案】 A 6 【正确答案】 A 【试题解析】 数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数

28、据库设计分为以下 6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。 7 【正确答案】 B 8 【正确答案】 D 9 【正确答案】 B 10 【正确答案】 A 【试题解析】 数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。 11 【正确答案】 B 【试题解析】 程序中 “static int a2=5, 3, 1, 2; ”定义了一个 2*2的整型矩阵。两个

29、 for循环读取数组元素。 “if(i=j)”语句中的条件是取矩阵的正对角 线上的元素。对角线上的元素为 5, 2,所以 “s1=s1+aij”的计算结果为 7。 12 【正确答案】 A 13 【正确答案】 B 【试题解析】 程序中的 fun函数的功能是实现函数中两个参数的交换。主函数中fun的调用中第一个参数为数组第二个值即 2,第二个参数为第一个值即 1。在 fun的定义中第一个形参引用类型,其改变会改变主函数中实参的值;而第二个形参不是引用类型,其改变不会改变第二个实参,所以 2, 1的交换结果为 1, 1,即B。 14 【正确答案】 C 15 【正确答案】 C 【试题解析】 由主函数

30、main入手,首先 x被赋值为 3, a被赋值为 4。然后调用fun函数,参数为 4,所以在 fun函数中的 a=4。而主程序中的 x作用域是由它定义开始到 cout输出,在 fun函数中无效。而在 fun函数定义前的变量 x作用域是整个程序,所以 fun函数中的 x值为 5,这样 c的值就为 20。在主函数中的x+fun(a)中的 x为靠近这条语句的 x定义,即 3,所以最后 x的值为 20+3=23。 16 【正确答案】 C 【试题解析】 由主函数 main入手,首先定义 TestClass对象 A, B;对象 B构造函数 值为 3,构造函数中 m+,所以这时 m=4。主函数中调用 A.t

31、est(),因为“static int m; ”, m被定义为类 TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行 “A.test(); ”中的 m为前面进行加 1操作后的 4,即 m现在的值为 5。 17 【正确答案】 B 【试题解析】 公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私 有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。 18 【正确答案】 D 【试题解析】 构造

32、函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。 19 【正确答案】 D 【试题解析】 程序中的 TestClassl为 TestClass的派生类,从程序中的 main函数入手,定义了 TestClass1对象 x。调用析构函数的顺序,先执行派生类自己的析构函数,对派生类新 增加的成员进行清理,然后调用子对象的析构函数,对予对象进行清理,最后调用基类的析构函数,对基类进行清理。这里派生类中析构函数输出 DERIVED,基类析构函数输出 BASE。 20 【正确答案】 C 21 【正确答案】 A 22 【

33、正确答案】 A 23 【正确答案】 D 【试题解析】 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格:标识符的长度是任意的,但由于编译系统的限制一般不超过 31个字符;标识符中的大小写字母是不同的;定义标识符 时不能采用系统的保留字。 24 【正确答案】 B 25 【正确答案】 B 【试题解析】 cout.fill()用于设置或返回输出的填充字符,默认是空格, fill()函数的设置一直有效,直到下一个 fill()函数改变该值为止。 setw(int n)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出

34、后,宽度设簧自动恢复为 0。注意:默认为输出数据在指定宽度内右对齐。 26 【正确答案】 C 27 【正确答案】 B 28 【正确答案】 C 29 【正确答 案】 A 【试题解析】 此题考查的是 “+”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数: int。本题中, A(2)首先给 n赋值2,语句 A+,调用的是后缀运算符重载语句,使得 n加 2变为 4。 B(2)首先给 n赋值 2,然后语句 +B,调用前缀运算符重载函数,使得 n加 1。因此最终的输出结果是 n=4 n=3。 30 【正确答案】 A 31 【正确答案】 C 【试题解析】 远算符函数有两种调

35、用形式,第一种是像一般函数那样用雨数名调用,即 y.operator*(z)或者 operator*(y,z);另一种是通过运算符构成表达式,即y*z。因为 “+”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀 “+”时必须多一个虚拟参数: int。 32 【正确答案】 C 33 【正确答案】 C 34 【正确答案】 D 35 【正确答案】 B 36 【正确答案】 20 37 【正确答案】 白盒 【试题解析】 黑盒测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑盒测试技术分为等价 类划分、边界分析、错误猜测及因果图等

36、。白盒测试的基本原则是保证所测模块中每一个独立路径至少被执行一次;保证所测模块所有判断的每一分支至少被执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各被执行一次;验证所有内部数据结构的有效性。白盒测试的主要方法有逻辑覆盖和基本路径测试等。 38 【正确答案】 符合结构化原则的三种基本控制结构是:选择结构、循环结构和_。 【试题解析】 结构化程序设计的 3种基本逻辑结构为顺序结构、选择结构和循环结构。顺序结构是最基本、最常用的程序设计结构;选择 结构包括简单分支选择结构和多分支选择结构;循环结构也称重复结构,它根据给定的条件,判断是否需要重复执行某一相同的程序段。 39 【正确答案】

37、 数据库管理系统 40 【正确答案】 菱形 41 【正确答案】 213 42 【正确答案】 15, 30, 45 43 【正确答案】 exam 【试题解析】 对于 c4=0,在 c4里面保存的是对于 ASCII码为 O的字符,即空格,使用 cout遇到空格自动结束,所以打印 exam。 44 【正确答案】 11 【试题解析】 递归调用1+ +10=10+sum(9)=10+9+sum(8)=10+9+8+sum(7)=10+1+sum(0) ,调用参数从 10到 0,故而调用次数应该为 11次。 45 【正确答案】 友元 【试题解析】 友元函数是对应于当前类的外部函数,但它可以访问该类的所有成

38、员。友元函数不是当前类的成员函数,可以是另外一个类的成员函数。在类中声明友元函数时,需要在函数名前加关键字 friend。 46 【正确答案】 id(I), mon(C) 【试题解析】 带参构造函数的定义格式 (在类外部声明 )为: 类名:构造函数名 (参数表 ):数据成员名 1(初始值 1),数据成员名 2(初始值2) 在类中声明为: 构造函数名 (参数表 ):数据成员名 1(初始值 1),数据成员名 2(初始值 2) 在 compute中有两个数据成员,所以在构造函数中应该对这两个数据成员 id和mon初始化,初始化 mon创建一个对象,参数为构造函数的形参 c。 47 【正确答案】 Do

39、g SpeakVoice 【试题解析】 派生类继承基类,并重新定义了基类的虚函数。 void type(Animal A) 是对象引用作 为函数参数,传递的是地址,是 “地址调用 ”,故 a getType( )调用的是派生类重新定义后的 getType( )成员函数。 void speak(Animal A) 是对象作为函数参数,是 “传值调用 ”,在进行函数调用时,将派生类对象赋值给基类对象。但是,对象 a只能调用派生类继承自基类的成员。故在 a getVoice( )中调用的是基类的虚函数 getVoice( ),打印 “Voive”。 48 【正确答案】 virtual double Area( )=0 【试题解析】 声明纯虚函数的一般形式为 : Virtual函数类型 函数名 (参数表 )=0 49 【正确答案】 return*this 50 【正确答案】 Xtwo

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

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

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