1、国家二级( C+)笔试模拟试卷 219及答案与解析 1 将 7个数据进行插入排序,在最坏情况下需要比较的次数是 ( A) 42 ( B) 6 ( C) 7 ( D) 21 2 最简单的交换排序方法是 ( )。 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 3 下列叙述中正确的是 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库技术的根本目的是解决数据的共享问题 ( C)数据库管理系统就是数据库系统 ( D)以上 3种说法都不对 4 5 字符串 “a+b=12nt”的长度为 ( )。 A) 12 B) 10 C) 8 D) 6 6 下面描述中,不属
2、于软件危机表现的是 ( A)软件过程不规范 ( B)软件开发生产率低 ( C)软件质量难以控制 ( D)软件成本不断提高 7 以下不属于数据库系统模型的是 ( )。 ( A)选择型数据库系统 ( B)关系型数据库系统 ( C)层次型数据库系统 ( D)网状型数据库系统 8 在长度为 n的顺序表的第 i(1in+1)个位置上插入一个元素,元素的移动次数为 _。 ( A) n-i+1 ( B) n-i ( C) i ( D) i-1 9 关系数据库管理系统能实现的专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 10
3、 在数据库系统中,用户所见的数据模式为 ( A)概念模式 ( B)外模式 ( C)内模式 ( D)物理模式 11 考虑以下的函数原型: void A(int a, int b 5, char Z *);下面的函数调用中,不正确的是 ( )。 ( A) A(7) ( B) A(3, 4) ( C) 16, # ( D) A(O, 2, * 12 下列说法正确的是 ( )。 ( A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 ( B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 ( C)类的内联函数必须在类体内定义 ( D)类的内联函数必须在类体外通过加关键字 i
4、nline定义 13 下面程序的运行结果为 ( )。 #include iostream.h class A int num public: A(int i)num=i; A(A public: A(int) num i; A(A void print( ) cout num; ; void main( ) A a(1) ,b(a) ; a. print( ) ; b. print( ) ; ( A) 11 ( B) 12 ( C) 21 ( D) 22 16 按照标识符的要求,下列选项中, ( )符号不能组成标识符。 ( A)连接符 ( B)下划线 ( C)大小写字母 ( D)数字字符 17
5、 下列选项中,不是 C+关键字的是 ( )。 A) class B) function C) friend D) virtual 18 对中断语句的说法,不正确的是 ( )。 ( A)用户可以指定中断的位置 ( B)用户可以指定转移的位置 ( C) break 语句可以跳出本循环 ( D) continue 语句可以结束本次循环 19 有如下程序 #include iostream using namespace std;class Apublic:virtual void func1 () cout “A1“; void func2() cout “A2“; ;class B: public
6、 Apublic:void func l() cout “B1“; void func2() cout “B2“; ;int main() A *p=new B;p-func1();p- func2();return 0;运行此程序,屏幕上将显示输出 ( )。 ( A) B1B2 ( B) A1A2 ( C) B1A2 ( D) A1B2 20 下列关于 C+函数的描述中正确的是 ( )。 ( A)主函数是程序的入口,它由用户定义的函数调用 ( B)函数在调用之前必须先被声明 ( C)每个用户定义的函数只能被其他函数调用一次 ( D)函数是 C+中面向 对象程序设计框架的基本组成单元 21 下
7、面是类 MyChss 的定义,对定义中语句描述正确的是 ( )。 class MyClasspublic: void MyClass(int a)X=a; ) / int f(int a, int b) / X=a; Y=b; int f(int a, int b, int c=0) / X=a; Y=b; Z=c; stahc void g ()X=10; ) / private: int X, Y, Z; ; ( A)语句 是类 MyClass的构造函数定义 ( B)语句 和语句 实现类成员函数的重载 ( C)语句 实现对类成员变量 X的更新操作 ( D)语句 和 都不正确 22 重载输入
8、流运算符必须使用的原型为 ( )。 ( A) ostream class point private: double x; double y; public: point(double a,double b) x=a; y=b; friend double distance(point a,point b) ; ; double distance(point a,point b) return sqrt (a.x-b.x)* (a.x-b.x)+(a.y-b.y)*(a.y-b.y); int main ( ) point pl(1,2); point p2 (5, 2); cout dist
9、ance (pl,p2) end1; return 0; 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 5 ( C) 4 ( D) 6 30 有以下程序段,其输出的结果是 ( )。 int x, y, z; x = y = z = O; +x | | +y cout x “,“ y “,“ z end1; ( A) 1,1,1 ( B) 1,1,0 ( C) 1,0,0 ( D) 0,0,0 31 一个 ( )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 ( A)函数模板 ( B)模板函数 ( C)类模板 ( D)模板类 32 下列函数中,
10、( )是对文件进行写操作的。 ( A) get ( B) read ( C) seekg ( D) put 33 如果表达式 +x/y中, +是作为友元函数重载的 ,/是作为成员函数重载的,则该表达式还可为 ( A) (operator+(x).operator/(y) ( B) (operator+(0).operator/(y) ( C) operator/(operator+(x,0),y) ( D) operator/(operator+(0),y) 34 下面程序的运行结果为 #include iostream h class A public: A( )cout “1“; A( )
11、cout “2“; ; class B: public A public: B( )cout “3“; B( )cout “4“; ; void main( ) B ( A) 1234 ( B) 1324 ( C) 1342 ( D) 3142 35 下列是模板声明的开始部分,其中正确的是 ( A) template T ( B) template class T1,T2 ( C) template class T1,class T2 ( D) template class T1; class T2 36 软件工程研究的内容主要包括: _技术和软件工程管理。 37 若 D1=a1,a2,a3,
12、 D2=b1,b2,b3,则 D1D2集合中共有 _个元组。 38 .、 .*、 -、 :、 ?:这五个运算符 _重载。 39 程序的测试方法分为静态分析和动态分析。使用测试用例在计算机上运行程序,使程序在运行过程中暴露错误,这种方法称为【 】。 40 在面向对象方法中,类的实例称为【 】。 41 假定用户没有给一个名为 MyClass的类定义析构函数,则系统为其定义的默认析构函数首部形式为 _。 42 我们通常用到的 cin,是属于 _输入。 43 通过使用 new和 delete两个运算符进行的分配为 _存储分配。 44 执行以下程序后,输出 “*”号的个数是 _。 #include ma
13、in() intij; for(i=1; i5; i+) for(j=2;j=i;j+) cout*; 45 在一个函数的定义或声明前加上关键字【 】时,该函数就声明为内联函数。 46 若有 char x=32, y=3 则表达试 x f.close(); 48 假定输入 28,那么程序运行的结果是【 】。 #include iostream.h void main() int n, i, k=0; cout “请输入整数 ”; cin n; for(i=1; i n; i+) if(n%i= =0) k=k+i; if(n= =k)cout n “是完数 n”; else cout n “不
14、是完数 n”; 49 有如下程序: #include iostream using namespace std; class ONE public: virtual void f()cout “1“; ; class TWO:public ONE public: TWO()cout “2“; ; class THREE: public TWO public: vurtual void f() TOW:f();cout “3“; ; int main() ONE aa,*p; TWO bb; THREE cc; p= void main() int a=10, b=20; cout a “, “
15、 b end1; int a=0, b=0; for (int i=1; i 8; i+) a+=i; b+=a; cout a “, “ b “, “ : a end1; cout a “, “ b end1; 国家二级( C+)笔试模拟试卷 219答案与解析 1 【正确答案】 D 【试题解析】 对长度为 n 的线性表进行插入排序,在最坏情况下需要 n(n-1)/2次比较,现线性表的 长度为 7,在最坏情况下需要比较的次数为 7(7-1)/2=21。 2 【正确答案】 D 3 【正确答案】 B 【试题解析】 数据库技术的根本目的是要解决数据的共享问题;数据库需要操作系统的支持;数据库管理系统
16、 (Database Management System, DBMS),对数据库进行统一地管理和控制,以保证数据库的安全性和完整性。它是数据库系统的核心软件。 4 【正确答案】 D 5 【正确答案】 C 6 【正确答案】 A 【试题解析】 本题主要考查了软件危机的表现。在软 件的开发和维护过程中,软件危机主要表现在: 软件质量难以保证。 软件的成本不断提高。 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。总之,软件危机可以归纳为成本、质量、生产率等问题。 7 【正确答案】 A 8 【正确答案】 A 9 【正确答案】 B 【试题解析】 关系数据库管理系统的专门关系运算包括选择
17、运算、投影运算和连接运算。 10 【正确答案】 B 【试题解析】 数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式也称子模式或用户模式,是指数据库 用户所看到的数据结构,是用户看到的数据视图。模式也称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。内模式也称存储模式或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方法的描述。根据上述介绍可知,数据库系统中用户所见到的数据模式为外模式。因此,本题的正确答案是 B。 11 【正确答案】 C 【试题解析】 A、 B项中,实参不全,缺省的参数默认为函数原型中的初始值,但
18、在 C项中,第二个实参 (char型 )与函数厚型中的第二个形参类型不一 致,故 C项错误。 12 【正确答案】 B 【试题解析】 本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加 inline关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。 13 【正确答案】 C 【试题解析】 本题考查考生对拷贝构造函数的掌握。因为 +运算是右结合的,所以在使用 a对 b赋值时, b的 num变为 1而 a的 hum变为 2(先赋值再自加 )。 14 【正
19、确答案】 D 【试题解析】 所谓的访问控制只包含公有类型、私有类型和保护类型 3种,友元可以是一个函数,也可以是一个类。 15 【正确答案】 C 【试题解析】 本题考查考生对拷贝构造函数的掌握。因为运算是右结合的,所以在使用 a对 b赋值时, b的 hum变为 1,而 a的 num变为 2(先赋值再自加 ) 。 16 【正确答案】 A 【试题解析】 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由 于编译系统的限制一般不超过 31个字符;标识符中的大小写字母是不同的:定义标识符时不能采用系统的保留字。 17 【正
20、确答案】 B 18 【正确答案】 B 【试题解析】 不论 break 语句还是 continue 语句转移的位置根据程序是默认的了,不用人为设置。 19 【正确答案】 C 20 【正确答案】 B 21 【正确答案】 D 22 【正确答案】 A 23 【正确答案】 C 24 【正确答案】 A 25 【正确答案】 C 26 【正确答案】 C 【试题 解析】 要熟练掌握 c+语言中的关键字。注意: include不是 C+语言的关键字。注意: define也不是关键字。 27 【正确答案】 C 【试题解析】 在进入最后一次循环时 a= 10,在循环体内执行 “a+; ”后 a=11,执行完该次循环体
21、计算 for循环的增量部分后 a=12小于 10,循环结束。 28 【正确答案】 A 29 【正确答案】 C 【试题解析】 本题考核友元函数的应用。分析程序: 类 point中定义了两个私有成员 x和 y,以及一个友元函数 distance()。从而,函数 distance可以访问类 point中的任何成员。 在函数 distance()中,返回值为 sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)。由此可知,函数 distance()的功能是计算 a、 b 两点之间的距离。 在主函数中,先定义两点: p1(1, 2)和 p2(5, 2)。然后调用函数 d
22、istance()计算两点之间的距离为 4,所以程序最后输出为 4。 30 【正确答案】 C 【试题解析】 本题考查自增运算符和逻辑运算符两个知识点。错误解答: x, y,z都参 与逻辑运算 +x|+yi5; i+)”是由 1到 4,一共是 4次循环。内层循环 “for(j=2;j=i;j+)”是 j初始等于 2,当 j小于等于 i那么 j就加 1。所以只有当 i等于 2时才进入内层循环,当 i等于 2时,内层循环进行一次,输出一个“*”,同理 i=3时两个 “*”, i=4时 3个 “*”,所以一共是 6个。 45 【正确答案】 inline 46 【正确答案】 3 47 【正确答案】 of
23、stream f( “abc“ , los: :app) 48 【正确答案】 请输入整数 : 28 28是完数 49 【正确答案】 2213 【试题解析】 此题考查的是派生类的构造和析构函数。建立 TWO的对象 bb时,调用 TWO 的构造函数,输出 “2”: THREE 类又派生于 TWO类,所以建立THREE 类的对象 cc时,又会输出 “2”; ONE类的对象指针 p 又指向了 THREE类的 ONE类的虚函数 f(),输出 “1”;最后调用 THREE类的 f(),输出 “3”。故最终的输出结果是 2213。 50 【 正确答案】 a重定义 【试题解析】 在本题中 for循环外围的大括号对没有实质含义,仅用于函数的作用城范围。如果去掉该括号,编译错误就会发生,因为变量 a出现了重定义错误。