1、二级 C+笔试-237 及答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列模式中,能够给出数据库物理存储结构与物理存取方法的是(分数:2.00)A.内模式B.外模式C.概念模式D.逻辑模式2.有以下程序:#include iostreamusing namespace std;class sampleprivate:int n:public:sample () sample(int m)n=m;sample add(sample s1, sample s2)this-n=s1.n+s2.n;return (*this);void disp
2、()cout “n=“nend1;int main()sample s1(1)0,s2(5),s3;s3.add(s1,s2);s3.disp();return 0;程序运行后,输出的结果是(分数:2.00)A.n=10B.n=5C.n=20D.n=153.下列叙述中正确的是(分数:2.00)A.数据库系统是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致4.设有 a、b、c、d、m、n 均为血型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=aB
3、) int main ()char a = “Hello,World“:char*ptr = a;while (*ptr)if(*ptr= a else cout*ptr;ptr+;return 0;(分数:2.00)A.HELLO. WORLDB.Hello, WorldC.hELLO, wORLDD.hello, world6.有以下程序#include iostreamint i = 0;void fun( )static int i = 1;std:couti+,;std:couti,;int main()fun(); fun();return 0;程序执行后的输出结果是(分数:2.0
4、0)A.1,2,1,2,B.1,2,2,3,C.2,0,3,0,D.1,0,2,0,7.下列关于栈的叙述正确的是(分数:2.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表8.有以下类定义class Pointpublic:Pointint x = 0, int y=0) _x = x; _y = y;void Move int xoff, int yoff)_x +=xoff;_y+=yoff;void Print() constcout(_x,_y) end1;private:int_x,_y;下列语句中会发生编译错误的是(分数:2.00)
5、A.Point pt;pt.Print();B.const Point pt;pt.Print();C.Point pt;pt.Move(1, 2);D.const Point pt;pt.Move(1, 2)9.定义如下枚举类型:enumMonday, Tuesday, Wednesday, Thrusday, Friday=2;则下列语句正确的是(分数:2.00)A.表达式 Wednesday=Friday的值是 trueB.Day day; day=3;C.Day day; day=Monday+3;D.Day day; day=Tuesday+10;10.派生类的构造函数的成员初始化列
6、表中,不能包含(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类的子对象初始化D.派生类中一般数据成员的初始化11.在进行任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(分数:2.00)A.failB.eofC.badD.good12.要定义一个具有 5个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是(分数:2.00)A.int vect=30,50,-88;B.int vect=30,50,-88,0,0;C.int veer5=30,50,-88;
7、D.int vect5=30,50,-88,0,0;13.下面概念中,不属于面向对象方法的是(分数:2.00)A.对象B.继承C.类D.过程调用14.有如下函数模板定义:template class TT func(T x, T y)return x*x*y*y;)在下列对 func的调用中,错误的是(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5);D.funcint(3,5.5);15.在深度为 5的满二叉树中,叶子结点的个数为(分数:2.00)A.31B.32C.16D.1516.下列对派生类的描述中,错误的是(分数:2.00)A.一个派
8、生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变17.C+流中重载的运算符是一个(分数:2.00)A.用于输出操作的非成员函数B.用于输入操作的非成员函数C.用于输出操作的成员函数D.用于输入操作的成员函数18.下列对于软件测试的描述中正确的是(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则19.有如下函数模板定义:templatetypename
9、T1,typename T2 typename T3T2 plus(T1 t1, T3 t3)return t1+t3;则以下调用中正确是(分数:2.00)A.plus(3,5L);B.plus(3,5L);C.plusint(3,5L);D.plusint, double(3,5L);20.函数定义为 Fun(int C.Fun(n);D.Fun(21.下面描述中,符合结构化程序设计风格的是(分数:2.00)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.模块只有一个入口,可以有多个出口C.注重提高程序的执行效率D.不使用 goto语句22.执行语句序列int n:ci
10、nn:switch (n)case 1:case 2:cout1;case 3:case 4: cout2: break;default: cout3:时,若键盘输入 1,则屏幕显示(分数:2.00)A.1B.2C.3D.1223.算法的空间复杂度是指(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间24.若执行语句:coutsetfill(*)setw(10)123“OK“end1 后将输出(分数:2.00)A.*123OKB.123*OKC.*123*OKD.123*OK*25.有以下程序#include iostrea
11、musing namespace std;class Complexpublic:Complex (double r=0, double i =0 :re(r) ,im (i) double real() const return re;double imag() const return im;Complex operator + (Complex c constreturn Complex(re+c.re, im+c.im);privane:double re,im;int mainComplex a =Complex(1,1)+Complex(5);couta.real()+a.imag
12、() i endlreturn 0;程序执行后的输出结果是(分数:2.00)A.6+6iB.6+1iC.1+6iD.1+1i26.下面不属于软件设计原则的是(分数:2.00)A.抽象B.模块化C.自底向上D.信息隐蔽27.关于面向对象的程序设计方法,下列说法正确的是(分数:2.00)A.“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B.“多态性”指的是对象的状态会根据运行时要求自动变化C.基类的私有成员在派生类的对象中不可访问,也不占内存空间D.在面向对象的程序设计中,结构化程序设计方法仍有着重要作用28.下列关于类和对象的叙述中,错误的是(分数:2.00)A.一个类只能
13、有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系29.在 C+中用来实现运行时多态性的是(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数30.有如下程序:#include iostream.husing namespace std;class Baseprotected:int i:public:int j;class Derived: public Baseint m:public:int n;int main()Derived d:d.i=0; /1d.J=0; /2d.m=0; /3d.n=0: /4return 0;
14、其中主函数中有两个赋值语句有错,这两个错误的赋值语句是(分数:2.00)A.1和2B.1和3C.2和3D.2和431.下列关于 new运算符的描述中错误的是(分数:2.00)A.使用运算符 new创建对象数组时必须定义初始值B.使用运算符 new创建对象时,会调用类的构造函数C.运算符 new可以用来动态创建对象和对象数组D.使用 new运算符创建的对象可以使用运算符 delete删除32.C+语言中 while循环和 do-while循环的主要区别是(分数:2.00)A.do-while的循环体至少无条件执行一次B.while的循环控制条件比 do-while的循环控制条件严格C.do-wh
15、ile允许从外部转到循环体内D.do-while的循环体不能是复合语句33.已知类 Myst有一个只需要一个 double型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列Myst x3.2), y(5.5), z(0.0);z=8.9-y;y=x-6.3;能够正常运行,运算符函数 operator-应该在类中声明为,(分数:2.00)A.friend Myst operator-(MystB.friend Myst operator-(Myst,Myst);C.friend Myst operator-(Myst,MystD.friend Myst operator-(Myst3
16、4.数据库设计的根本目标是要解决(分数:2.00)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护35.有以下程序#include iostreamusing namespace std;static int days =31,28.31,30,31,30,31,31,30,31,30,31;class dateprivate:int month, day, year:public:date (int m, int d, int ymonth = m;day = d;year = y;datevoid disp )cout year“ - “month “- “dayend
17、1;date operator+(int day)date dt = *this:day += dt.day;while day days dt.month - 1 )day -= tays dt.month - 1 ;if ( +dt.month = 13dt.month = 1;dt.yeare+;dr. day = day;return dt;int main()date d1( 6, 20, 2004 ), d2;d2.= d1 + 20;d2.disp ();return 0;执行后的输出结果是(分数:2.00)A.2004-7-10B.2004-6-20C.2004-7-20D.程
18、序编译时出错二、填空题(总题数:12,分数:24.00)36.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 1。(分数:2.00)填空项 1:_37.在面向对象方法中,允许作用于某个对象上的操作称为 1。(分数:2.00)填空项 1:_38.若按功能划分,软件测试的方法通常分为白盒测试方法和 1 测试方法。(分数:2.00)填空项 1:_39.在数据库的概念结构设计中,常用的描述工具是 1。(分数:2.00)填空项 1:_40.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_41.下列函数的功能是判断字符串
19、str是否对称,对称则返回 true,否则返回 false。请在横线处填上适当内容,实现该函数。bool fun(char *str)int i=0,j=0;while(strj)_;for(j-;ij i+,j-);return i_j;(分数:2.00)填空项 1:_42.若有如下程序段:#include iostreamusing namespace std;int main()char *p=“abcdefgh“,*r;long *q;q=(long *)p;q+;r=(char *)q;coutrend1;return 0;该程序的输出结果是_。(分数:2.00)填空项 1:_43.
20、在下面程序的横线处填上适当的内容,使程序执行后的输出结果为 1/2005。#include iostream.husing namespace std:class Datepublic:Date (int m=1,int y=0):month(m .year(yvoid Print() coutmonth“/“yearend1;_operator+(const Dateprivate:int month year;_operaror+(const Dateyear=d1.year+d2.year;month=d1.month+d2.month;year+=(month-1)/12;month=
21、(month-1)%12+l;return Datemonth, year:void main()Date d1(3,2004),d2,d3(10);d2=d3+d1;d2.Print();(分数:2.00)填空项 1:_44.在下面程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD。#include iostream.husing namespace std;class Apublic: A() coutA;class B:_public: B() coutB;class C:_public: C( coutC;class D:public B, public Cpublic:
22、D()coutD;void main()D obj;(分数:2.00)填空项 1:_45.请将下列类定义补充完整class Basepublic: void fun()cout“Base:fun“end1;class Derived:public Basepublic:void fun()_/显式调用基类的 fun函数cout“Derived:fun“end1;(分数:2.00)填空项 1:_46.与成员访问表达式 p-name 等价的表达式是_。(分数:2.00)填空项 1:_47.有如下程序:#include iostreamusing namespace std;class AApubl
23、ic:virtual void f()cout“AA“;class BB : public AApublic:BB()cout“BB“:;class CC : public BBpublic:virtual void f()BB:f():cout“CC“;int main ( )AA aa,*p; BB bb; CC cc;p=p-f();return 0;运行后的输出结果_。(分数:2.00)填空项 1:_二级 C+笔试-237 答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列模式中,能够给出数据库物理存储结构与物理存取方法的是(分数:2
24、.00)A.内模式 B.外模式C.概念模式D.逻辑模式解析:解析 能够给出数据库物理存储结构与物理存取方法的是内模式。外模式是用户的数据视图,也就是用户所见到的数据模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。没有逻辑模式这一说法。正确答案为 A。2.有以下程序:#include iostreamusing namespace std;class sampleprivate:int n:public:sample () sample(int m)n=m;sample add(sample s1, sample s2)this-n=s1.n+s2.n;return
25、(*this);void disp ()cout “n=“nend1;int main()sample s1(1)0,s2(5),s3;s3.add(s1,s2);s3.disp();return 0;程序运行后,输出的结果是(分数:2.00)A.n=10B.n=5C.n=20D.n=15 解析:解析 本题考核 this指针的使用。类成员函数 add中通过 this指针实现私有数据成员 n的赋值。3.下列叙述中正确的是(分数:2.00)A.数据库系统是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的
26、物理结构必须与逻辑结构一致解析:解析 A 选项,数据库系统需要操作系统的支持,必不可少,故其叙述不正确。B 选项错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。D 选项也不对,数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。正确答案为 C。4.设有 a、b、c、d、m、n 均为血型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=aB) int main ()char a = “Hello,World“:char*ptr = a;while (*ptr)if(*ptr= a else cout*ptr;ptr+;return 0;(分数:2
27、.00)A.HELLO. WORLD B.Hello, WorldC.hELLO, wORLDD.hello, world解析:解析 本题考核 while语句和 if语句,while 语句中 if语句的作用是将小写字母变成大写字母输出、所以 main函数的字符串通过 while 语句全部输出为大写字母。6.有以下程序#include iostreamint i = 0;void fun( )static int i = 1;std:couti+,;std:couti,;int main()fun(); fun();return 0;程序执行后的输出结果是(分数:2.00)A.1,2,1,2,B
28、.1,2,2,3,C.2,0,3,0,D.1,0,2,0, 解析:解析 本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器、外部)。题中即定义全局变量 i,又在函数 fun内部定义了局部静态变量 i, 当进入函数 fun里面的大括号时,局部静态变量i有效,所以输出 1,然后局部静态变量 i加 1,出了里面的大括号后,全局变量 i有效,所以输出 0。同理,第二次调用 fun后,输出 2和 0。7.下列关于栈的叙述正确的是(分数:2.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表 解析:解析 栈是一种特殊的线性表,其插入与删除运算都只在
29、线性表的一端进行。在这种线性表的结构中,一端封闭;不允许插入与删除元素;另一端开口,允许插入与删除元素。在栈中不仅能插入数据,也能删除数据,选项 A与 B都错。栈是后进先出的线性表,而不是先进先出的线性表,选项 C的说法错误,选项 D正确。8.有以下类定义class Pointpublic:Pointint x = 0, int y=0) _x = x; _y = y;void Move int xoff, int yoff)_x +=xoff;_y+=yoff;void Print() constcout(_x,_y) end1;private:int_x,_y;下列语句中会发生编译错误的是
30、(分数:2.00)A.Point pt;pt.Print();B.const Point pt;pt.Print();C.Point pt;pt.Move(1, 2);D.const Point pt;pt.Move(1, 2) 解析:解析 本题考核常对象、常数据成员与常成员函数。如果将二个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数,D 选项中对象 pt为常对象,而成员函数 Move()不是常成员函数,所以这样调用会发生编译错误。9.定义如下枚举类型:enumMonday, Tuesday, Wednesday, Thrusday, Friday=2;则下列
31、语句正确的是(分数:2.00)A.表达式 Wednesday=Friday的值是 true B.Day day; day=3;C.Day day; day=Monday+3;D.Day day; day=Tuesday+10;解析:解析 本题考查枚举类型的定义和使用。枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点:枚举类型的第一个常量默认值是 0;枚举类型常量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较。根据以上知识我们可以得出 B、C、D 选项都不正确。10.派生类的构造函数的成员初
32、始化列表中,不能包含(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类的子对象初始化 D.派生类中一般数据成员的初始化解析:解析 本题考核构造函数。在 C+中,构造函数不能被继承,因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数但是它不负责基类中子对象的初始化。11.在进行任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(
33、分数:2.00)A.failB.eof C.badD.good解析:解析 本题考核 C+流的文件操作。C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is_open():判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false;函数 good():刚进行的操作成功时返回 true,否则返回 false。函数 fail():与 good()相反,刚进行的操作失败时返回 true,否则返回 false函数 bad():如果进行 7非法操作返回 true,否则返回false函数 eof():进行输入操作时,若到达文件尾返回 true,否则返回 false。其
34、中,eof 函数只能用于输入流操作。12.要定义一个具有 5个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是(分数:2.00)A.int vect=30,50,-88; B.int vect=30,50,-88,0,0;C.int veer5=30,50,-88;D.int vect5=30,50,-88,0,0;解析:解析 本题考核一维数组在定义时的初始化。当数组声明时没有给出数组的大小,但是有初始化列表时,数组的大小就由列表中元素的个数来确定, 由此可知 A) 选项中数组 vect只有 3个元素,与题目要求不符。13.下面概念中
35、,不属于面向对象方法的是(分数:2.00)A.对象B.继承C.类D.过程调用 解析:解析 A,B,C 属于面向对象方法,D 属于面向过程方法,故答案为 D。14.有如下函数模板定义:template class TT func(T x, T y)return x*x*y*y;)在下列对 func的调用中,错误的是(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5); D.funcint(3,5.5);解析:解析 本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的,但是要注意的是说
36、明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。例如,本题中的 C) 选项,编译系统从第一个参数“3”获得的信息是“T 对应于 int”,而从第二个参数“5.5”处获得的信息是“T 对应于 double”,二者相互矛盾,在编译时会产生错误。对于 D) 选项中紧跟在函数名后的int就是模板实参表,通过它通知编译系统在调用过程中,double 型的参数“5.5”将被自动换成 int型。15.在深度为 5的满二叉树中,叶子结点的个数为(分数:2.00)A.31B.32C.16 D.15解析:解析 二叉树的一个性质是,在二叉树的第 k层上,
37、最多有 2k-1(k1)个结点对于满二叉树,每一层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点。所以,在深度为 5的满二叉树中,所有叶子结点在第 5层上,即其结点数为 2k-1=25-1=16。16.下列对派生类的描述中,错误的是(分数:2.00)A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变 解析:解析 本题考核继承与派生。基类与派生类的关系为:基类是对派生类的抽象,派生类是对基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加信息
38、将抽象的基类变为某种有用的类型,派生类是基类定义的延续。派生类是基类的组合。公有派生类的对象可以作为基类的对象处理。由此可知A、B 和 C选项都是正确的。而在继承中,采用不同的继承方式,将限制派生类对基类成员的访问。所以D选项是错误的。17.C+流中重载的运算符是一个(分数:2.00)A.用于输出操作的非成员函数B.用于输入操作的非成员函数 C.用于输出操作的成员函数D.用于输入操作的成员函数解析:解析 本题考核运算符重载。 C+中重载输入流运算符和输出流运算符只能作为非类成员函数重载,且必须使用如下原形:istreamostream18.下列对于软件测试的描述中正确的是(分数:2.00)A.
39、软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。可见选项 c的说法正确。19.有如下函数模板定义:templatetypename T1,typename T2 typename T3T2 plus(T1 t1, T3 t3)return t1+t3;则以下调用中正确是(分数:2.00)A
40、.plus(3,5L);B.plus(3,5L);C.plusint(3,5L);D.plusint, double(3,5L); 解析:解析 本题考核函数模板的使用。C+中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中虚拟类型参数T2没有出现在模板函数的形参列表中,所以在调用时不能省略,D 选项的调用省略了 T3,这是允许的。20
41、.函数定义为 Fun(int C.Fun(n); D.Fun(解析:解析 本题考核函数的调用。当函数的参数是引用类型时,参数不能是常量、表达式和变量地址,只能是变量本身。21.下面描述中,符合结构化程序设计风格的是(分数:2.00)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B.模块只有一个入口,可以有多个出口C.注重提高程序的执行效率D.不使用 goto语句解析:解析 应该选择只有一个入口和一个出口的模块,故 B选项错误;首先要保证程序正确,然后才要求提高效率,故 c选项错误;严格控制使用 goto语句,必要时可以使用,故 D选项错误。22.执行语句序列int n:c
42、inn:switch (n)case 1:case 2:cout1;case 3:case 4: cout2: break;default: cout3:时,若键盘输入 1,则屏幕显示(分数:2.00)A.1B.2C.3D.12 解析:解析 本题考核 C+语句中的 switch语句switch 语句也称为开关语句,用于有多重选择的场合,测试某一个变量具有多个值时所执行的动作。switch 语句中每个 case语句只是一个入口标号,并不能确定执行的终点,因此,每个 case 分支的最后应该加 break语句,用来结束这个 switch 结构,否则,会从入口点开始,一直执行到 switch 结构的
43、结束点。若键盘输入 1,n 的值被赋为 1,进入第一个分支,没有 break跳出,然后进入第二个分支,执行“coot1;”输出 1,然后进入第 3、 4 个分支,执行“cout2;”,然后执行 break,跳出 switch 语句所以最后输出为 12。23.算法的空间复杂度是指(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间 解析:解析 算法的空间复杂度指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。正确答案为D。24.若执行语
44、句:coutsetfill(*)setw(10)123“OK“end1 后将输出(分数:2.00)A.*123OK B.123*OKC.*123*OKD.123*OK*解析:解析 本题考核格式控制数据的输入输出。函数 setfill(char c) 用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满。函数 setw(int n)用于设置输入输出宽度,宽度设置的效果只对一次输入或输出有效,在完成一次数据的输出或输入后,宽度设置自动恢复为 0,例如题中语句以宽度 10输出数据“123”后,字符串“OK”的输出宽度就自动恢复为 0了。而且输出的初始状态为右对齐,所
45、以最终的输出为*123OK。25.有以下程序#include iostreamusing namespace std;class Complexpublic:Complex (double r=0, double i =0 :re(r) ,im (i) double real() const return re;double imag() const return im;Complex operator + (Complex c constreturn Complex(re+c.re, im+c.im);privane:double re,im;int mainComplex a =Compl
46、ex(1,1)+Complex(5);couta.real()+a.imag() i endlreturn 0;程序执行后的输出结果是(分数:2.00)A.6+6iB.6+1i C.1+6iD.1+1i解析:解析 本题考核类与对象、运算符重载。运算符“+”在类 Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以 main函数中语句“Complex a =Complex(1, 1) + Complex(5);”的作用相当于“Complex a(1+5, 1);”即对象 a的数据成员 re的值为 6,imag 的值为 1,所以输出为 6+1i。26.下面不属于软件设计原则的是(分
47、数:2.00)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:解析 软件设计遵循软件王程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。它们是:抽象、模块化、信息隐蔽、模块独立性。没有自底向上,所以,本题的正确答案是 C。27.关于面向对象的程序设计方法,下列说法正确的是(分数:2.00)A.“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B.“多态性”指的是对象的状态会根据运行时要求自动变化C.基类的私有成员在派生类的对象中不可访问,也不占内存空间D.在面向对象的程序设计中,结构化程序设计方法仍有着重要作用 解析:解析 本题考核 C+程序的基本框架。“封装性”指将数据和算法捆绑成一个整体,而不是将不同类型的相关数据组合在一起 C+中的多态性是指一个面向对象的系统常常要求