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

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

1、国家二级( C+)笔试模拟试卷 245及答案与解析 1 下列叙述中正确的是 ( A)软件就是程序清单 ( B)软件就是存放在计算机中的文件 ( C)软件应包括程序清单以及运行结果 ( D)软件包括程序、数据和文档 2 数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是 ( )。 ( A) DB包括 DBS和 DBMS ( B) DBMS包括 DB和 DBS ( C) DBS包括 DB和 DBMS ( D)没有任何关系 3 树是结点的集合,它的根结点的数目是 ( )。 ( A)有且只有 1个 ( B) 1或多于 1 ( C) 0或 1 ( D)至少有 2个 4 有如下程序:

2、#include iostream using namespace std; class Base int x; public: Base(int n=0):x(n)cout n; int getX( )constreturn x; ; class Derived: public Base int y; public: Derived(int m, int n): y(m),Base(n)tout m; Derived(int m):y(m)cout m; ; int main( ) Derived dl(3), d2(5, 7); return 0; 程序的输出结果是 ( A) 375 (

3、B) 357 ( C) 0375 ( D) 0357 5 下面关于友元的说法中错误的是 ( ) ( A)若类 A是类 B的友元 ,那么类 B也是类 A的友元 ( B)友元关系 不能被继承 ( C)若函数 fun被说明为类 A的友元 ,那么在 fun中可以访问类 A的私有成员 ( D)若类 A是类 B的友元 ,那么类 A的所有成员函数都是类 B的友元 6 下列对于线性链表的描述中,正确的是 ( )。 ( A)存储空间必须连续,且各元素的存储顺序是任意的 ( B)存储空间不一定是连续,且各元素的存储顺序是任意的 ( C)存储空间必须连续,且前件元素一定存储在后件元素的前面 ( D)存储空间不一定是

4、连续,且前件元素一定存储在后件元素的前面 7 软件调试的目的是 ( )。 ( A)暴露错误 ( B)开发软件的潜能 ( C)提高软件的性能 ( D)改正错误 8 需求分析是 ( )。 ( A)软件开发工作的基础 ( B)软件生存周期的开始 ( C)由系统分析员单独完成 ( D)由用户自己单独完成 9 堆栈 s进行下列操作: push(1); push(2); pop(); pop();后,此时的栈顶元素为( )。 ( A) 1 ( B) 2 ( C) 0 ( D)不确定 10 线性表的顺序存储结构和线性表的链式存储结构分别是 ( A)顺序存取的存储结构、顺序存取的存储 结构 ( B)随机存取的

5、存储结构、顺序存取的存储结构 ( C)随机存取的存储结构、随机存取的存储结构 ( D)任意存取的存储结构、任意存取的存储结构 11 面向对象程序设计将数据和 ( )放在一起,作为一个相互依存、不可分割的整体来处理。 ( A)对数据的操作 ( B)信息 ( C)数据隐藏 ( D)数据抽象 12 以下运算符中不能重载的运算符是 ( A) new ( B) sizeof ( C) .* ( D) + 13 下列类的定义中,有 ( )处语法错误。 class Base public: Base() Base(int i) data=i; private: int data; ; class Deriv

6、e : public Base public: Derive() : Base(0) Derive (int x) d=x; void setvalue(int i) data=i; private: d; ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 14 下列有关内联函数的叙述中,正确的是 ( )。 ( A)内联函数在调用时发生控制转移 ( B)内联函数必须通过关键字 inline来定义 ( C)内联函数是通过编译器来实现的 ( D)内联函数函数体的最后一条语句必须是 return语句 15 关于虚函数,以下说法正确的是 ( )。 ( A)若在重定义虚函数时使用了 virtu

7、al,则该重定义函数还是虚函数 ( B)虚函数不能声明为友元 ( C)子类必须重定义父类的虚函数 ( D)虚函数不能是 static的 16 下面关于虚函数的描述中正确的是 ( )。 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C)虚函数既可以在函数说明时定义,也可以在函数实现时定义 ( D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 17 下面字符串中,不可以用作 C+标识符的是 ( )。 ( A) case ( B) _test_c ( C) Return ( D) x_2008 18 若有如下程序段: #include using namespa

8、ce std; intmain() char*p=“abcdefgh”, *r; r=p; cout*rendl; return 0: 该程序的输出结果是 ( )。 ( A) a ( B) b ( C) c ( D) d 19 在进行完任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是 ( )。 ( A) fail ( B) eof ( C) bad ( D) good 20 在表达式 x+ y*z中, +是作为成员函数重载的运算符, *是作为非成员函数重载的运算符。下列叙述中正确的是 ( )。 ( A) operator+有两个参数,

9、 operator*有两个参数 ( B) operator+有两个参数, operator*有一个参数 ( C) operator+有一个参数, operator*有两个参数 ( D) operator+有一个参数, operator*有一个参数 21 下面的函数原型非法的是 _。 ( A) void f(int a=1, int b=1) ( B) int f(double f, char s, int i=1, int j) ( C) void f(int a, int b) ( D) int f(double f, char s, int i=1, int j=0) 22 下面程序的执行

10、结果是 _。 int k; for (k=10 ; k 3 ; k-) if (k%3) k-; -k; k; cout k “, “; ( A) 6, 3 ( B) 7, 4 ( C) 6, 2 ( D) 7, 4, 1 23 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的选项是 #include iosweam h void main() int a, b, t; cin a b; while(_) if(a b) t=a; a=b;b=t; cout a “ “ b endl; cin a b; ( A) ! a=b ( B) a!=

11、b ( C) a=b ( D) a=b 24 对类的构造函数和析构函数描述正确的是 ( )。 ( A)构造函数可以重载,析构函数不能重载 ( B)构造函数不能 重载,析构函数可以重载 ( C)构造函数可以重载,析构函数也可以重载 ( D)构造函数不能重载,析构函数也不能重载 25 设有以下说明语句: typedef struct int n; char ch8; PER; 则下面叙述中,正确的是 ( )。 ( A) PER是结构体变量名 ( B) PER是结构体类型名 ( C) typedef struct是结构体类型 ( D) struct是结构类型名 26 有如下程序: #include

12、iostream using namespace std; class XX protected; int k; public: XX(int n=5): k(n) XX()cout“XX“; Virtual void f()cons=0; ; inline void XX: f()constcoutk+3; class YY:public XX public: ( A) 28XX ( B) 28YYXX ( C) -33XX ( D) -33XXYY 27 C+语言中关于构造函数的说法正确的是 ( A)构造函数的函数名不必和类名相同 ( B)构造函数只能每一个 ( C)每个类必定有构造函数

13、( D)构造函数必有返回值 28 执行下列程序段,结果是 #include iostream.h void main( ) int x=40; char y=C; int n; n=(x void show()cout a; ; class TestClass1:public TestClass int b; public: TestClass1(int i):TestClass(i+1),b(i) void show()coutb; ; int main() TestClass b(5),*p; TestClass1 d(1); p= protected: int b; public: in

14、t c; ; 派生类采用何种继承 方式可以使成员变量 b成为自己的私有成员 ( A)私有继承 ( B)保护继承 ( C)公有继承 ( D)私有、保护、公有均可 33 有如下程序: #include iostream using namespace std; class Base public: void fun() cout “Base:fun“ endl; ; class Derived: public Base public: void tim() _ cout “Derived: fun“endl; ; int main() Derived d; d.fun(); return O; 已

15、知其执行后的输出结果为: Base:fun Derived:fun 则程序中下划线处应填入的语句是 ( A) Base.fun(); ( B) Base:fun(); ( C) Base- fun(); ( D) fun(); 34 有如下类定义: class Foo public: Foo(int v): value(v) / Foo() / private: Foo() / int value=0; / ; 其中存在语法错误的行 是 ( A) ( B) ( C) ( D) 35 有如下的运算符重载函数定义: double operator +(int i, int k)return dou

16、ble(i+k); 但定义有错误,对这个错误最准确的描述是 ( A) +只能作为成员函数重载 ,而这里的 +是作为非成员函数重载的 ( B)两个 int型参数的和也应该是 int型,而这里将 +的返回类型声明为 double ( C)没有将运算符重载函数声明为某个类的友元 ( D) C+已经提供了求两个 int型数据之和的运算符 +,不能再 定义同样的运算符 36 在面向对象方法中, _描述的是具有相似属性与操作的一组对象。 37 若串 s “MathTypes“,则其子串的数目是 _。 38 39 对具有 n个结点的线性表进行顺序查找,最坏情况下需要的比较次数为【 】。 40 某二叉树有 5

17、个度为 2的结点以及 3个度为 1的结点,则该二叉树中共有【 】个结点。 41 阅读下面程序: #include iostream.h void fun1(char a,char b) char c; c=a;a=b;b=c; void fun2(char c=a;a=b;b=c; void main() char a,b; a=x;b=y; fun1(a,b);cout a b; a=x;b=y; fun2(a,b);cout a b; 则该程序的输出为 _。 42 下列程序不能通过编译,应该在划线部分填写的语 句是 _。 #include iostream.h #include stdli

18、b.h double Func(int a,int b,char ch) double x; switch(ch) case+: x=double(a)+b; break; case -: x=double(a)-b; break; case *: x=double(a)*b; break; case/: if(B)x=double(a)/b; else exit(1); break; default: exit(1); _ void main( ) cout Func(32,6,-) “,“; cout Func(32,6, *) “,“; cout Func(32,6,/) endl; 4

19、3 下列程序的执行结果为 _。 #include iostream.h class Point public: Point(double i,double j)x=i;y=j; double Area( )constreturn 0.0; private: double x,y; ; class Rectangle:public Point public: Rectangle(double i,double J,double k,double 1); double Area( )const(return w*h; private: double w,h; ; Rectangle:Rectang

20、le(double i,double j,double k,double 1):Point(i,j) w=k;h=l; void fun(Point void main( ) Rectangle rec(3.0,5.2,15.0,25.0); fun(rec); 44 一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须 定义自己的版本,此虚函数又称 _。 45 若 Xcs是一个类,该类中具有一个函数体为空的不带参数的构造函数,此构造函数的类外定义为 _。 46 下列程序的输出结果是【 】。 #include iostream.h void main() inta(5), b

21、(6), i(0)1j(0); switch(a) case 5:switch(b) case 5:i+; break; case 6:j+; break; defaun:i+;j+; case 6:i+; j+; break; default:i+;j+; cout i “, “ j endl; 47 函数中的形参和调用时的实参都是变量时,参数传递方式为【 】。 48 _是 C+语言程序的人口。 49 继承的方式有公有继承、私有继承和【 】 3种。 50 派生类构造函数的执行顺序是先执行【 】的构造函数,然后执行成员对象的构造函数,最后执行【 】的构造函数。 国家二级( C+)笔试模拟试卷

22、245答案与解析 1 【正确答案】 D 【试题解析】 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为:软件 =程序 +文档 +数据选项 A、 B、 C错误,正确答案是 D。 2 【正确答案】 C 【试题解析】 数据库系统 (DBS)由数据库 (DBS)、数据库管理系统 (DBMS)、数据库管理员,硬件平台和软件平台 5个部分组成,可见 DB 和 DBMS 都是 DBS 的组成部分。 3 【正确答案】 C 【试题解析】 树具有明显的层次关系,印树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空

23、时,树中根结点的数目为 0。 4 【正确答案】 C 【试题解析】 有如下程序: #include iostream using namespace std; class Base int x; public: Base(int n=0):x(n)cout n; int getX( )constreturn x; ; class Derived: public Base int y; public: Derived(int m, int n): y(m), Base(n)tout m; Derived(int m):y(m)cout m; ; int main( ) Derived dl(3),

24、 d2(5, 7); return 0; 程序的输出结果是 5 【正确答案】 A 【试题解析】 C+中有些对象或函数需 要访问其他对象的内部成员,这样可以用friend 关键字将对应的类指定友元函数或友元类,但是这种关系不是相互的。如果声明一个类 A为类 B的友元类,则类 A中的所有成元函数都可以访问类 B中的私有成员。另外,友元关系不会被继承。 6 【正确答案】 B 【试题解析】 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 7 【正确答案】 D 【试题解析】 调试的目的是定位错误、找

25、出错误的原因并修改程序 以修正错误。 8 【正确答案】 A 9 【正确答案】 D 【试题解析】 对栈 s进行两次 push操作后,又进行了两次 pop 操作,即刚才压入的数已经弹出,此时的栈顶元素为不确定。 10 【正确答案】 B 【试题解析】 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC(ai): LOC(all)+(i-l)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。注意:顺序存储结构 和链式存储结构的定义和性质,两种存储结构的操作方法。 11 【正确答案】

26、A 【试题解析】 面向对象语言包含 3个要素,即对象、类和继承。这 3个要素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。 12 【正确答案】 C 【试题解析】 本题考核运算符的重载。 C+不能重载的运算符包括: “.”、 “.*”、“:”、 “?:”。 13 【正确答案】 B 【试题解析】 本题考核派生类的定义和成员的访问权限。第一处错误:在派生类的构造函数 Derive(int x)中没有调用基类的构造函数对基类对象初始化;第二处错误:数据 data是基类 Base的私有成员,派生类 Derive不能访问,所以在函数setvalue中对 data

27、 的赋值是错误的。 14 【正确答案】 C 【试题解析】 此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项 A错误;即使没有使用 inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项 B 错误;内联函数只是比普通 函数有更高的执行效率。 15 【正确答案】 D 【试题解析】 在 C+中,虚函数可以是友元函数,但不能是静态成员。虚函数的重定义函数,无论是否使用 virtual 关键字,仍然是虚函数。所以答案选择 D) 16 【正确答案】 D 【试题解析】 在基类中用 vi

28、rtual 声明成员函数为虚函数,所以 AB 错误。在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同。 17 【正确答案】 A 【试题解析】 C+标识符是一个以字母或下划线开头的,由字母、数字、 下划线组成的字符串。标识符不能与任何一个关键字同名,因此 case不能作为标识符。 18 【正确答案】 A 【试题解析】 字符指针 p 指向 “abcdefgh”字符串,语句 “r=p; ”是 r指向 p 指向的字符串,而 *r则是指向字符串中的第一个字符。即 a。 19 【正确答案】 B 【试题解析】 在本题的 4个选项中,只有 eof 函数能用于检测输入操作

29、。 20 【正确答案】 C 21 【正确答案】 B 22 【正确答案】 B 23 【正确答案】 B 【试题解析】 根据本题提出的条件可 知,控制循环的表达式应该是所输入的两数互不相等,也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为 a!=b 24 【正确答案】 A 25 【正确答案】 B 【试题解析】 本题考核用 typedef定义自己的变量类型。 C+语言允许定义用关键字 typedef所命名的新的数据类型。实际上,没有建立一个新的数据类型,而仅是对存在的类型定义了一个新的名字。所定义的新名是现有的类型名的补充,而不是取代。 26 【正确答案】 A 27

30、【正确答案】 C 【试题 解析】 构造函数的函数名必须和类名相同;构造函数可以有一个,也可以有多个;构造函数没有返回值。注意:构造函数可以被重载。 28 【正确答案】 B 【试题解析】 按位与运算符 “a=b;b=c;”交换结果并不能改变主函数中 a,b 实参的值, “a=x;b=y;”输出为 xy。函数 void fun2(char 【试题解析】 本题函数声明时指定了函数的返回值为 double,因此在函数体中必须存在一个 return 语句。 43 【正确答案】 0 【试题解析】 注意本题不同于基类的指针指向派生类对象。 Fun 函数的形参是Point基类的引用。本题调用的是 Point类

31、对象的面积函数,其值永远为 0。 44 【正确答案】 纯虚函数 【试题解析】 纯虚函数是在声明虚函数时被 “初始化 ”为 0的函数。纯虚函数没有函数体,只是函数的名而不具备函数的功能,只是在基类中预留了一个函 数名,具体功能留给派生类根据需要去定义。 45 【正确答案】 Xcs:Xcs() 46 【正确答案】 1,2 47 【正确答案】 值传递方式 48 【正确答案】 main()函数 49 【正确答案】 保护继承 【试题解析】 继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择 3种不同的继承方式。 50 【正确答案】 基类 派生类 【试题解析】 本题主要考查的是派生类构造函数的执行顺序,在 C+语言中构造函数的执行顷序是先基类后派生类,而析构函数的执行顷 序正好相反,是先调用派生类后调用基类。

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

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

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