1、国家二级( C+)笔试模拟试卷 140及答案与解析 1 下列选项中不属于软件生命周期开发阶段任务的是 ( )。 ( A)软件测试 ( B)概要设计 ( C)软件维护 ( D)详细设计 2 下列叙述中正确的是 ( )。 ( A)一个逻辑数据结构只能有一种存储结构 ( B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 3 软件设计包 括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。 ( A)模块间的关系 ( B)系统结构
2、部件转换成软件的过程描述 ( C)软件层次结构 ( D)软件开发过程 4 下列关于顺序存储结构叙述中错误的是 ( )。 ( A)存储密度大 ( B)逻辑上相邻的结点物理上不必邻 ( C)可以通过计算直接确定第 i个结点的存储地址 ( D)插入、删除运算操作不方便 5 ( )复审应该把重点放在系统的总体结构、模块划分、内外接口等方面。 ( A)详细设计 ( B)系统设计 ( C)正式 ( D)非正式 6 下列叙述中正确的是 ( )。 ( A)黑箱 (盒 )测试方法完全不考虑程序的内部结构和内部特征 ( B)黑箱 (盒 )测试方法主要考虑程序的内部结构和内部特征 ( C)白箱 (盒 )测试不考虑程
3、序内部的逻辑结构 ( D)上述三种说法都不对 7 关于数据库系统三级模式的说法,下列 ( )是正确的。 ( A)外模式、概念模式、内模式都只有一个 ( B)外模式有多个,概念模式和内模式只有一个 ( C)外模式只有一个,概念模式和内模式有多个 ( D) 3个模式中,只有概念模式才是真正存在的 8 以下不使用线性结构表示实体之间联系的模型的是 ( )。 ( A)线性表 ( B)栈和队列 ( C)二叉树 ( D)以上三个都不是 9 具有 3个结点的二叉树有 ( )。 ( A) 2种形态 ( B) 4种形态 ( C) 7种形态 ( D) 5种形态 10 算法具有五个特性,以下选项中不属于算法特性的是
4、 ( )。 ( A)有穷性 ( B)简洁性 ( C)确定性 ( D)输入输出性 11 面向对象程序设计将数据和 ( )放在一起,作为一个相互依存、不可分割的整体来处理。 ( A)对数据的操作 ( B)信息 ( C)数据隐藏 ( D)数据抽象 12 设 a和 b均为 double型变量,且 a=5.5、 b=2.5,则表达式 (int)a+b/b的值是 ( A) 6.500000 ( B) 6 ( C) 5.500000 ( D) 6.000000 13 for(int x=0, y=0; !xint a;int fun ();int main () extern int a; int b; a
5、 = 100; b = fun(); cout b end1; return 0;int fun) extern int a; return (10*a ; 其程序运行后的输出结果是 ( A) 100 ( B) 10 ( C) 1000 ( D) 10000 20 以下函数实现的功能是 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)将字符串
6、中的小写字母变成大写字母 21 有如 下类的定义。空格处的语句是 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) const ( C) private ( D)不需要填入内容 22 设有以下定义和程序: #include iostream.h class A1public: void show1() cout “class A1“ endl; ;class A2 : public A1public:
7、 void show2() cout “class A2“ end1 ;class A3 : protected A2public: void show3() cout “class A1“ endl; ;void main() A1 obj1; A2 obj2; A3 obj3; 则以下不合语法的调用语句是 ( A) obj1. showl(); ( B) obj2. showl(); ( C) obj3. showl(); ( D) obj2. show2(); 23 如果算符函数调用格式的表达式: x.operator-(operator+(y, 0)中的 “”是作为成员函数重载的, “
8、+”是作为友元函数重载的,那么该表达式还可以表示为: () ( A) x-y+ ( B) x-(+y) ( C) (x+)-y ( D) +x-y 24 有以下程序: #include iostream #include math using namespace std;class pointprivate: 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 retur
9、n sqrt(a. x-b. x )*(a. x -b. x )+ (a. x -b. x)*(a. x-b. x);int main () point p1 (1,2); point p2(5,2); cout distance (p1, p2) end1; return 0; 程序运行后的输出结果是 ( A) 1 ( B) 5 ( C) 4 ( D) 6 25 在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是 ( A) fail ( B) eof ( C) bad ( D) good 26 下列有关拷贝构造函数的描述中错
10、误的是 ( A)拷贝构造函数是一种构造函数 ( B)拷贝构造函数与一般的构造函数一样,可以设置多个形参 ( C)每一个类中都必须有一个拷贝构造函数 ( D)拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象。 27 带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化 ( A)与虚基类下面的派生类个数有关 ( B)多次 ( C)二次 ( D)一次 28 下列关于 this指针的叙述中,正确的是 ( A) this指针是一个隐含指针,它隐含于类的成员函数中 ( B)只有在使用 this时,系统才会将对象的地址赋值给 this ( C)类
11、的友元函数也有 this指针 ( D) this指针表示了成员函数当前操作的数据所属的对象 29 有以下程序 #include iostream using namespace std:class Baseprivate: char c;public: Base(char n) :c(n) Base ( ) cout c; ; class Derived : public Baseprivate: char c;public: Derived(char n):Base (n+1),c(n) Derived() cout c; ;int main() Derived obj(x); return
12、 0; 执行后的输出结果是 ( A) xy ( B) yx ( C) x ( D) y 30 以下程序的输出结果是 #include iostream using namespace std;int main() cout.fill(*); cout.width(5); cous hex 100 end1; return 0; ( A) *100 ( B) *64 ( C) 100* ( D) 64* 31 若有以下程序 : # include iostream using namespace std;class Basepublic: Base ( ) x=0; int x;class De
13、rived1 : virtual public Basepublic: Derived1 ( ) x=10; ; class Derived2 : virtual public Basepublic: Derived2 () x=20; ;class Derived : public Derived1,protected Derived2 ;int main() Derived obj; cout obj.x end1; return 0; 该程序运行后的输出结果是 ( A) 10 ( B) 20 ( C) 30 ( D) 0 32 有如下程序: #include iostream using
14、 namespace std;class Baseprivate: char c;public: Base(char n) :c(n) Base() cout c; ;class Derived: public Baseprivate: char c; public: Derived(char n):Base(n+1),c(n) Derived() cout c; ;int main () Derived obj (x); return 0;执行上面的程序净输出 ( A) xy ( B) yx ( C) x ( D) y 33 关于在调用模板函数时实参的使用,下列表述中正确的是 ( A)对于虚
15、拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略 ( B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略 ( C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略 ( D)对于常规参数所对应的模板实参,任何情况下都不能省略 34 有如下程序: #include iostream using namespace std;class point int x, y;public: point( int vx, int vy ) x = vx; y = vy; point ( ) x = 0; y= 0; point oper
16、ator+( point p1 ) point p; int px = x+ p1.x; int py = y + p1.y; return point( px, py ); point operator-( point p1 ) point p; int px = x -p1.x; int py = y - p1.y; return point ( px, py ); void print() cout x “ , “ y end1; ;int main () point p1(10, 10 ), p2( 20, 20 ); p1 = p1 - p2; p1.print (); return
17、 0; 执行后的输出结果是 ( A) 10, 10 ( B) 20, 20 ( C) 10, 20 ( D) 30, 30 35 有如下程序 #include iostream using namespace std;class basepublic: virtual void f1() cout “F1Base “; virtual void f2() cout “F2Base “; ;class derive: public base void f1() cout “F1Derive “; void f2( int x ) cout “F2Derive “; ;int main() bas
18、e obj1, * p; derive obj2; p = p - f1(); p - f2(); return 0; 执行后的输出结果是 ( A) F1Derive F2Base ( B) F1Derive F2Derive ( C) F1Base F2Base ( D) F1Base F2Derive 36 数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 _。 37 在面向对象方法中,允许作用于某个对象上的操作称为 _。 38 若按 功能划分,软件测试的方法通常分为白盒测试方法和 _测试方法。 39 在数据库的概念结构设计中,常用的描述工具是 _
19、。 40 数据结构分为逻辑结构和存储结构,循环队列属于 _结构。 41 设有定义语句: int a=12;,则表达式 a*=2+3的运算结果是 _。 42 设在主函数中有以下定义和函数调用语句,且 fun()函数为 void类型,请写出fun()函数的首部 _。 int main() double s1022; int n: . fun (s): . return 0; 43 下列程序的输出结果是 _。 #include iostream.h #include cstring.h using namespace std; void fun(const char*s,char int main
20、) char str =“ABCDE“; char ch=str1; fun(str,sh); cout Ch; return 0; 44 请按下面注释的提示,将类 B的构造函数定义补充完整。 classA int a; public: Aint aa=0) (a=aa; class B:public A int b; A c; public: /用 aa初始化基类 A,用 aa+1初始化类对象成员 c B(int aa): b=aa+2 ; 45 以下程序运行后的输出结果是 _。 #include iostream #include string using namespace std; c
21、lass Y; class X int x; char *strx; public: X(int a, char *str) x=a; strx=new charstrlen(str)+1 strcpy (strx,str); void show(Y ; class Y prlvate: int y; char *stry; public: Y(int b,char *str) y=b; stry=new charstrlen(str)+1; strcpy(stry,str); friend void X:show(Y ; void X:showY int main X a (10, “str
22、ingX“); Y b (20, “stringY“); a. show (b); renurn 0; 46 在下面横线上填上适当的语句,完成程序。 #include iostream using namespace std; class Base int x: public: Base (int i)x=i; Base() ; class Derived : public Base public: _ /完成类 Derive构造函数的定义 ; int main ( Derived Obi; return 0; 在横线外应填入的语句是 _。 47 下面是用来计算 n的阶乘的递归函数,请将该函数
23、的定义补充完整。 (注:阶乘的定义是 ) n!=n*(n-1)*.*2*1) unsigned fact(unsigned n) if (n =1) return 1; return_; 48 下列程序的输出结果是 _。 #include iostream using namespace std; template typename T T fun(T a,T b) return (a =b)?a:b;) int main() cout fun(3, 6) , fun(3.14F,6.28F) end1; return 0; 49 下面是 “二维向量 ”vector2D的定义,其中作为成员函数
24、重载的运算符 “+”的功能是将两向量的分量 x和 y对应相 加,然后返回作为相加结果的新对象;请填空补充完整。 class vector2D double x; /x分量 double y; /y 分量 public: vector2D(double x0=0, double y0=0):x(x0),y(y0) void show(cout ( , y ) ; vector2D operator + (vector2D); ; 【 】 operator + (vector2D a) return vector2D(【 】 ); 国家二级( C+)笔试模拟试卷 140答案与解析 1 【正确答案】
25、 C 2 【正确答案】 D 3 【正确答案】 B 4 【正确答案】 B 5 【正确答案】 B 6 【正确答案】 A 7 【正确答案】 B 8 【正确答案】 C 9 【正确答案】 D 10 【正确答案】 B 11 【正确答案】 A 【试题解析】 面向对 象语言包含 3个要素,即对象、类和继承。这 3个要素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。 12 【正确答案】 D 【试题解析】 本题考核运算符的优先级和数据类型转换,此方面的知识点应该着重掌握。在表达式中,优先级最高的是 (int)a,结果是 5。其次是 b/b,结果是1.0,最后相加结果为
26、6.000000 (表达式的最终结果为 double型 )。 13 【正确答案】 C 【试题解析】 本题考核 for循环语句。题中 x=0,则 !x永远为真,对于条件 表达式 “!x&y =5”只考虑 “y =5”,由于每次循环 y都增加 1,而且 y从。开始到5。所以可知总共循环了 6次。 14 【正确答案】 A 【试题解析】 本题考核类的定义。类的成员函数描述类所表达的问题的行为。类中所有的成员函数都必须在类体中进行说明。但成员函数的定义既可以在类体内给出,也可以在类体外给出在类定义体中实现的函数都是内联函数。在定义体外实现的函数可以通过在函数说明和定义上分别加上 inline来表示该函数
27、是内联的,否则不是内联函数。 15 【正确答案】 C 【试题解析】 本 题考核函数调用。函数 strcpy的函数原型为: char* strcpy(char* strDest, const char* strSr)C;,其功能是复制 strSrc所有字符到 strDest,并返回 strDest。根据函数 strcpy的原型可知选项 A, B和 D的调用都是正确的。在 C选项中,由于指针 *str3没有初始化其字符长度,容易引起访问越界,故是不正确的。 16 【正确答案】 B 【试题解析】 本题考核函数重载。所谓函数重载,是指同一个函数名可以对应多个函数的实现。进行函数重载时,要求同名函 数在
28、参数个数上不同,或者参数类型上不同。即重载函数不许具有相同的形参列表。函数的返回类型不能作为函数重载的判断依据。 corist是函数的一部分参与函数的重载 17 【正确答案】 A 【试题解析】 本题考核对数组的引用。在 C+语言中,数组的下标是从 0开始的,最大的下标值比所定义的数组长度的值小 1。同时需要注意的是, C+语言中,编译和执行时并不检查数组下标是否越界。因此 value30在编译阶段是正确的,但是在运行时会出现错误。 18 【正确答案】 D 【试题解析】 本题考核数组与指针 。 A选项中, p为指针,数组名 a代表数组的首地址,所以 p-a就是指针到数组首地址的偏移量。 B选项中
29、, &ai是取数组 a中第 i个元素的地址,而对于 *(&ai), 由指针运算符 *的运算规则可知,语句 *(&ai)就是返回地址 &ai空间中存放的值,也即 ai。 C) 选项,由于指针 p已指向数组 a,所以 pi就等于 ai小这是常用的一种数组元素引用方式。 D) 选项是以指针方式对数组元素进行引用,由于 a只是代表数组的首地址,并不是指针,所以表达式 *(*(a+ i)是错误的,正确的引用应该为 : *(*(p+ i)。 19 【正确答案】 C 【试题解析】 本题考核变量的作用域、生存周期和存储类别 (自动、静态、存储器,外部 )。先来了解外部变量:外部变量用关键字 extern表示。
30、由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言, “定义变量 ”和 “说明变量 ”是两个不同的概念。定义 a为外部变量是告诉编译程序, a是一个外部变量,并要求系统为 a分配一个固定的永久存储空间。 a的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释 放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量 a,主函数 main给外部变量赋的初始值为 100,当调用函数 fun()时,外部变量 a的值传到函数fun()中,因此函数所返回的值为 100*10=1
31、000。 20 【正确答案】 A 【试题解析】 本题考核 while循环语句和指针的使用。在该函数中,循环开始时,指针 p指向字符串的第 1个字符,指针 q指向字符串的最后一个字符,首先交换这两个字符;然后,指针 p前进一个字符位置 (指向下一个字符 ),指针 q后退一个字符位置 (指向前一个字符 );经过若干次循环,条件 p q将为假 (即指针 p和指针 q相遇 ),循环结束。从而实现了将一个字符串首尾颠倒的功能。 21 【正确答案】 A 【试题解析】 本题考核静态数据成员和静态成员函数。类的静态成员函数只可以直接访问类中的静态成员,不能直接访问类中的非静态成员。对于上述类的定义,由于在静态
32、成员函数 change()访问了类 MyClass的数据成员 x和 y,只能把 x和 y定义为静态数据成员。 22 【正确答案】 C 【试题解析】 本题考核派生类的使用以及访问权 限问题。 C+中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。 A2是 A1的公有派生类, A3是 A2的保护派生类,所以类 A1的成员函数 show1()在类 A3中呈现保护属性,不能通过 A3类的对象访问。 23 【正确答案】 A 【试题解析】 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符 +,且 c1、 c2都是该类的对象,则 c1. operator+(c2)与 c
33、1+c2含义相同。如果 +作为该类的非成员函数重载,则 operator+(c1,c2)与 c1+c2含义相同。同 时一元运算符 “+”重载函数调用中采用了虚拟参数,说明 +为后缀的,所以其等价的表达式为 “x-y+”。 24 【正确答案】 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)。由此可知,函数
34、 distance的功能是计算 a、 b两点之间的距离。在主函数 main中,先定义两点: p1(1,2)和 p2(5, 2)。然后调用函数 distance计算两点之间的距离为 4,所以程序最后输出为 4。 25 【正确答案】 A 【试题解析】 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is_ open()判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false;函数 good()刚进行的操作成功时返回 true,否则返回 false;函数fail()与 good()相反,刚进行的操作失败时返回 true,否 则返回 false;函数 bad(
35、)如果进行了非法操作返回 true,否则返回 false;函数 eof()进行输入操作时,若到达文件尾返回 true,否则返回 false。其中, eof函数只能用于输入流操作。 26 【正确答案】 B 【试题解析】 本题考核拷贝构造函数的概念。拷贝初始化构造函数实际上也是构造函数,它是在初始化时被调用,将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。拷贝构造函数具有的特点是:拷贝构造函数也是一种构造函数,因此函数名与类相同,并且不能指定函数返回类型:只有一个参数, 是对同类的某个对象的引用:每一个类中都必须有一个拷贝构造函数。如果类中没有声明拷贝构造函数,编译器会自动生成一个具
36、有上述形式的公有的拷贝构造函数 27 【正确答案】 D 【试题解析】 本题考核虚基类以及构造函数。使用虚基类解决二义性问题的关键是在派生类中只产生一个虚基类对象。虚基类子对象由最派生类的构造函数通过调用虚基类的构造函数进行初始化 (最派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,否则,表示使用该虚基类的缺省构造函数 )。由于最派生类总是相对,因此,从虚基类直接或间接派 生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但只有用于建立对象的最派生类的构造函数才调用虚基类的构造函数,此时最派生类的所有基类中列出的对虚基类的构造函数的调用在执行过程中都被忽略
37、,从而保证对虚基类子对象只初始化一次。 28 【正确答案】 D 【试题解析】 本题考核 this。类的每一个成员函数都有一个隐合定义的常量指针,称为 this指针。它是成员函数所属对象的指针,它指向类对象的地址。成员函数可以通过这个指针知道自己属于哪一个对象。当对一个对象调用成员函数时,编译程序先 将对象的地址赋值给 this指针,然后调用成员函数,每次成员函数存取数据时,则隐含使用 this指针。但是在使用 this指针时需要注意的是: this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。 this指针一般用于返回当前对象自身;静态成员函数没有 this指针。因为类只有一个静
38、态成员函数实例,所以使用 this指针没有什么意义。在静态成员函数中使用 this指针会引起编译错误。 29 【正确答案】 A 【试题解析】 本题考核继承与派生中继承基类的数据成员与成员函数。在 C+中,由于析构函数不 能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反在此题的程序中,在主函数 main结束时,派生类 Derived对象 obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出 y。 30 【正确答案】 B 【试题解析】 本
39、题考核格式控制数据的输入输出。语句 “cout. fill(*); ”是将填充字符设置成 *,在输出数据时,如果数据宽度小于设置 的宽度,则空闲位置要用 *填满,语句 “cout. width(5); ”是将数据的输出宽度设置成 5,关键字 hex的作用是将整数按十六进制输出,即输出 64,又由于初始状态为右对齐,所以程序最终输出 *64。 31 【正确答案】 B 【试题解析】 本题考核虚基类。本题中,虽然 Derived1和 Derived2都是由共同的基类 x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x只存在一份拷贝,不论在类 Derived1修改,还是
40、在类Derived2中修改,都是直接对这惟一拷 贝进行操作。本题程序执行语句 “Derived obj”时,就会先调用虚基类 Base的构造函数,使得 x=0,然后执行类 Derived1的构造函数使得 x=10,再执行类 Derived2的构造函数,使得 x=20。最后输出 x的值为 20。 32 【正确答案】 A 【试题解析】 在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数 main结束时,派生类 Derived对象 obj将被删
41、除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出y。 33 【正确答案】 D 【试题解析】 模板函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表 (用和括起来的参数表 )或从模板函数实参表 (用 ()括起来的参数表 ),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定 其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干个参数,则模板实参表中的那几个参数可以
42、省略。如果模板实参表中的实参都被省略了,则连空表也可以不要。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略由此可知只有 D) 选项的说法是正确的。 34 【正确答案】 D 【试题解析】 本题主要考查 C+中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和 友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。程序在类 point中声明了私有数据成员int x和 int y,并定义了两种形式的构造函数以完成对对象的初始化;之后,程序对运
43、算符 “+”进行了重载,另其输入参数为类 point的对象,输出为操作符 “+”右侧该对象的私有数据成员 x和 y与操作符 “+”左侧同类型对象的私有数据成员 x和 y的加和: print()函数则输出对象中数据成员的值。程序 main()函数中,实例化了类 point的两个对,象 p1和 p2,并完成对对象的初始化在语 句 “p1= p1+p2; ”中,由于操作符 “+”左右两端的操作数为 point类的对象,复合类 point定义中的操作符 “+”的重载函数,因此程序将调用重载后的操作符函数,并返回两 point对象数据成员的加和值,覆盖对象 p1的数据成员因此 print()函数输出对象
44、 p1的数据成员值己应该为: x=10+20=30, y=10+20=30 35 【正确答案】 A 【试题解析】 本题主要考查 C+中虚函数机制及其继承过程中的要点。虚函数在基类中加关键字 virtual声明,在派生类中重新定义;如果派生类没有覆盖虚 函数,则程序执行中将会执行基类的虚函数版本。题目程序中,建立了基类 base,其内函数 void f1()和 void f2()均被声明为虚函数,并在调用时会显式的发出声明。派生类 derive利用 public方式继承基类 base,并覆盖其基类 base中的虚函数f1();对于 base中的虚函数 f2(),由于派生类 derive中的同名函
45、数 f2()中带有参数int x,因此被编译器认为是函数重载,而不作虚函数覆盖处理,因此实际上派生类 derive中包含两个 f2()函数,一个不带参数,调用时执行基类 base中的 f2()函数版本,一个带参数 int x,调用时执行重载后的版本。题目 main()函数中,定义了基类对象。 obj 1和基类指针 *p,同时定义了派生类对象 obj2。 p指向。 obj2时: p- f1()函数调用执行派生类覆盖后的版本,输出 D1; p- f2()由于不带参数,因此执行未经派生类覆盖的函数版本,即基类 base中的 f1()函数版本。 36 【正确答案】 数据库系统 或 数据库系统阶段 或
46、数据库 或 数据库阶段 或 数据库管理技术阶段 【试题解析】 在数据库系统管理阶段,数据是结构化的,是面向系统的 ,数据的冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性,同时提高了数据的可扩充性和数据应用的灵活性;数据具有独立性,通过系统提供的映像功能,使数据具有两方面的独立性:一是物理独立性,二是逻辑独立性:保证了数据的完整性、安全性和并发性。综上所述,数据独立性最高的阶段是数据库系统管理阶段。 37 【正确答案】 方法 【试题解析】 在面向对象方法中,方法是指允许作用于某个对象上的各种操作。允许作用于某个对象上的操作称为方法。 38 【正
47、确答案】 黑 盒或黑箱 【试题解析】 软件测试的方法分为白箱测试方法和黑箱测试方法。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,白箱测试用例的设计准则有:语句覆盖、分支覆盖、条件覆盖和组合条件覆盖;黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。 39 【正确答案】 E-R图 【试题解析】 E-R图是设计概念模型的有力工具。 40 【正确答案】 存储或物理或存储结构或物理结构 【试题解析】 数 据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构 (也称数据的物理结构 )。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。可知,循环队列应当是物理结构。 41 【正确答案】 60 【试