1、国家二级( C+)笔试模拟试卷 167及答案与解析 1 在计算机中,算法是指 ( )。 ( A)查询方法 ( B)加工方法 ( C)解题方案的准确而完整的描述 ( D)排序方法 2 下列叙述中,不属于测试的特征的是 ( )。 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 3 数据处理的最小单位是 ( )。 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 4 下列叙述中,不属于软件需求规格说明书的作用的是 ( )。 ( A)便于用户、开发人员进行理解和交流 ( B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作
2、为确认测试和验收的依据 ( D)便于开发人员进行需求分析 5 对下列二叉树 进行中序遍历的结果是 ( )。 ( A) ACBDFEG ( B) ACBDFGE ( C) ABDCGEF ( D) FCADBEG 6 SQL语言又称为 ( )。 ( A)结构化定义 语言 ( B)结构化控制语言 ( C)结构化查询语言 ( D)结构化操纵语言 7 下列选项中不属于结构化程序设计方法的是 ( )。 ( A)自顶向下 ( B)逐步求精 ( C)模块化 ( D)可复用 8 下列不是软件工程基本目标的是 ( )。 ( A)付出较低的维护费用 ( B)达到要求的功能 ( C)不管时间限制,只要最终把用户要求
3、的产品交出来 ( D)产品的性能比较好 9 以三级模式为框架形成的 3种数据库中,真实存在于计算机外存 的数据库是( )。 ( A)概念数据库 ( B)用户数据库 ( C)物理数据库 ( D)逻辑数据库 10 数据库设计包括两个方面的设计内容,它们是 ( )。 ( A)概念设计和逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 11 下列关于运行符重载的描述中,正确的是 ( )。 ( A)运算符重载可以改变操作数的个数 ( B)运算符重载可以改变操作数 的优先级 ( C)运算符重载可以改变运算符的结合性 ( D)运算符重载可以使运算符实现
4、特殊功能 12 当需要将一个函数 bool isnumber(char c)声明为内联函数时,则此内联函数的函数原型为 ( )。 ( A) enum bool isnumber(char c); ( B) define bool isnumber(char c); ( C) inline bool isnumber(char c); ( D) extem bool isnumber(char c); 13 有如下数组声明: int numC10,下标值引用错误的是 ( )。 ( A) num10 ( B) num5 ( C) nam3) ( D) num0 14 对于拷贝构造函数和赋值操作的关
5、系,正确的是 ( )。 ( A)拷贝构造函数和赋值操作是完全一样的操作 ( B)进行赋值操作时,会调用类的构造函数 ( C)当调用拷贝构造函数时,类的对象正在被建立并被初始化 ( D)拷贝构造函数和赋值操作不能在同一个类中被同时定义 15 有如下函数模板声明 : template typename T T Max(T a, T b)return(a=b)?a: b; 下列对函数模板 Max()的调用中错误的是 ( )。 ( A) Max(3.5, 4.5) ( B) Max(3.5, 4) ( C) Max(double)(3.5, 4.5) ( D) Max double (3.5, 4)
6、16 已知在一个类体中包含如下函数原型: VOLUME OPERATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是 ( )。 ( A)这是运算符 -的重载运算符函数 ( B)这个函数所重载的运算符是一个一元运算符 ( C)这是一个成员函数 ( D)这个函数不改变类的任何数据成员的值 17 下面说法正确的是 ( )。 ( A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 ( B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 ( C)类的内联函数必须在类体内定义 ( D)类的内联函数必须在类体外通过加关键字 inline定义 18 下列关于虚
7、函数与函数重载区别的叙述中不正确的是 ( )。 ( A)函数说明形式上不同 ( B)函数重载允许是非成员函数,虚函数只能是成员函数 ( C)函数重载的调用依据参数和类型的差别,虚函数则依据对象 ( D)函数重载的本体可以在类外定义,虚函数不可以 19 控制格式输入 /输出的操作中,设置域宽的函数是 ( )。 ( A) WS ( B) oct ( C) setfilt(int) ( D) setw(int) 20 继承机制的作用是 ( )。 ( A)信息隐藏 ( B)数据封装 ( C)定义新类 ( D)数据抽象 21 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数
8、都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 this指针 ( D)类的非静态成员函数才有 this指针 22 下面关于 C+流的叙述中,正确的是 ( )。 ( A) cin是一个输入流对象 ( B)可以用 if stream定义一个输出流对象 ( C)执行语句序列 char*y=“PQMN”; cout y; 将输出字符串 ”PQMN”的地址 ( D)执行语句序列 char x80; cin.getline(x, 80);时。若键入 “Happy new year”,则,中的字符串是 “Happy” 23 类 MyClass的定义如下: class M
9、yClass public: MyClass()value 0; SetVariable(int i)value=i; private: int value; ; 则对下列语句序列正确的描述是 ( )。 ( A)语句 p break; default: cout “1”; ( A) 3 ( B) 321 ( C) 31 ( D) 32 27 有如下程序: #include iostream using namespace std; Class Test public: Test() n+ 2; Test() n- 3; static int getNum() return n; private
10、: static int n; ; int Test: n 1; int main() Test*pnew Test; ( A) n 0 ( B) n 1 ( C) n=2 ( D) n=3 28 有如下类声明: class XA int X; public: XA(int n)x=n; ; class XB: public XA int y; public: XB(int a, int b); ; 在构造函数 XB的下列定义中,正确的是 ( )。 ( A) XB: XB(inta, int b): x(a), y(b) ( B) XB: XB(int a, int b): XA(a), y(
11、b) ( C) XB: XB(int a, int b): x(a), XB(b) ( D) XB: XB(int a, int b): XA(a), XB(b) 29 下列程序的输出结果是 ( )。 #include iostream using namespace std; int main() 于 chara ”Hello, Test”; Char*p a; while(*p) if(*p) a y j; void print() cout “print1” endl; void print()const cout ”prin ( A) printl ( B) print2 ( C) p
12、rintl print2 ( D)程序编译时出错。 31 下面程序的运行结果是 ( )。 #include iostream.h class base protected: int a; public: base()cout “0”; ; Class base1: virtua1 base public: base1()cout “1”; ; class base2: virtual base public: base2()cout “2”; ( A) 0123 ( B) 3120 ( C) 0312 ( D) 3012 32 下列程序的运行结果为 ( )。 #include iostream
13、.h template class TT class FF TT a1, a2, a3; public: FF(TT b1, TT b2, TT b3)a1 b1;a2b2; a3 b3; TT Sum()return a1+a2+a3; ; void main() FF intx(int(1.1), 2, 3), y(int(4.2), 5, 6); cout x.Sum( ( A) 6.1 15.2 ( B) 6 15 ( C) 6 15.2 ( D) 6.1 15 33 下面程序的运行结果为 ( )。 #include iostream.h void swap(int ;) if(i%1
14、0)=0)break; else i-; i+=11; a+=i; cout a endl; ( A) 21 ( B) 32 ( C) 33 ( D) 11 35 有如下类声明: class XA int X; public: XA(int n)x=n; ; class XB: publicXA int y; public: XB(int a, int b); ); 在构造函数 XB的下列定义中,正确的是 ( )。 ( A) XB: XB(int a, int b): x(a), y(b) ( B) XB: XB(int a, int b): XA(a), y(b) ( C) XB: XB(i
15、nt a, int b): x(a), XB(b) ( D) XB: XB(int a, int b): XA(a), XB(b) 36 软件工程研究的内容主要包括: _技术和软件工程管理。 37 在算法的 4个特性中,算法必须能在执行有限个步骤之后终止 指的算法的特性。 38 注释一般分为序言性注释和 _注释。 39 在链表的运算过程中,能够使空表与非空表的运算统一的结构是 _。 40 数据库系统的主要特点为数据集成性、数据的高 _和低冗余性、数据独立性和数据统一管理和控制。 41 将一个函数声明为一个类的友元函数必须使用关键字 _。 42 若有函数 fun(x, y),并且已经使函数指针变
16、量 p指向函数 fun,则使用 p调用函数 fun的方法是 _。 43 C+语句 constchar *constp ”hello”;,所定义的指针 p和它所指的内容都不能被 _。 44 类中包含了一个静态成员函数,则 main函数中和 P.f1(P);语句具有同样功能的语句为 _。 #include iostream.h class M public: M(int A)A a; B+ a; static void f1(M m); private: int A; static int B; ; void M: f1(M m) cout “A=“ m.A(end1; cout “B ” m.B
17、 en 45 下面是一个栈类的模板,其中 push函数将元素 i压入栈顶, pop函数弹出栈顶元素栈初始为空, top值为 0,栈项元素在 stacktop-中,在下面横线处填上适当语句,完成栈类模板的定义。 template class T class Tstack enumsize 1000; Tstacksize; int top; public: Tstack(): top(0) void push(const T ; class Derived: public Base int a; public: Derived(int x): Base(x), b(x+1); void show
18、() 48 在 MyClass类的定义中,对赋值运算符进行重载。请将横线处缺失的部分补充完整。 _MyClass: operator (const MyClass。 【试题解析】 本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号 “- ”。 47 【正确答案】 eout Base: a。 【试题解析】 本题考查的是基类和派生类的构造函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造 函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。本题要求结果是输出 12,分析题目,首先调用基类的构造函数
19、,然后是调用子对象的构造函数,横线处要求输出基类成员 a的值,填入 toutBase: a即可。 48 【正确答案】 MyClass返回;如果参数被声明为指向同类对象的引用妨指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是则不做 任何处理;如果被赋值对象占用了动态空间,应选释放这些资源,以便接收新的资源,如果参数被声明为指针成引用,通常应加上 const修饰;一个类如果需要重载运算符 =,通常也就需要定义自身特有的复制构造函数,反之亦然。 49 【正确答案】 042。 【试题解析】 C+中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的
20、拷贝,如果在类中将数据成员用 static说明为静态的, N0这个类成员只有一个拷贝并被这个类的所有对象所共享。类 Test的静态成员 cnt,初始值 为 0,所以执行语句 ”cout Test: Count() “; ”后输出 0。然后程序创建了两个对象 t1和 t2;以及两个对象指针并调用new来初始化指针,所以 cnt的值变成了 4。然后程序将对象指针 pT4、 pT3 delete了,此时将分别调用析构函数将 cnt的减 50 【正确答案】 20。 【试题解析】 本题中,虽然 Derived1和 Derived2由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x只存在一份拷贝,不论在类 Derived1中修改,还是在类 Derived2中修改,都是 直接对这惟一拷贝进行操作。本题程序执行语句 “Derived obi; ”时,就会先调用虚基类 Base的构造函数,使得 x=0,然后执行类 Derived1的构造函数使得 x=10,再执行类 Derived2的构造函数,使得 x 20。最后输出 x的值为 20。