1、二级 C+笔试 57 及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.若有以下程序: #include iostream using namespace std; int f() static int i = 0; int s = 1; s+=i; i+; return s; int main ( ) int i,a = 0; for(i = 0;i5;i+) a+=f ( ); coutaend1; return 0; 程序运行后,输出的结果是( )。(分数:2.00)A.20B.24C.25D.152.有如下类的定义。应在空格处填入
2、的语句是 ( )。 class MyClass _ int x, y; public: MyClass(int a=0,int b=0) x=a; y=b; static void change) x-=10; y-=10; ;(分数:2.00)A.staticB.constC.mutableD.不需要填入内容3.在数据库管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是( )。(分数:2.00)A.数据库系统B.文件系统C.人工管理D.数据项管理4.所谓关系是指( )。(分数:2.00)A.各条记录中的数据彼此有一定的关系B.一个数据库文件与另
3、一个数据库文件之间有一定的关系C.数据模型符合一定条件的二维表格式D.数据库中各个字段之间彼此有一定关系5.有如下程序: #include iostream using namespace std; class x protected: int a; public: x() a=1; ; class x1 : virtual public x public: x1() a+=1; couta; ; class x2 : virtual public x public: x2 () a+=2; couta; ; class y : public xl,public x2 public: y()
4、coutaend1; ; int main () y obj; return O; 该程序运行后的输出结果是( )。(分数:2.00)A.1B.123C.242D.2446.以下选项中,( )是合法的字符常量。(分数:2.00)A.“N“B./010C.68D.D7.以下各运算中,不属于算术运算的是( )。(分数:2.00)A.大于B.加C.乘D.除8.关于在调用模板函数时实参的使用,下列表述中正确的是( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则
5、都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略9.有以下程序段,其输出的结果是( )。 int x, y, z; x = y = z = O; +x | | +y coutx“,“y“,“zend1;(分数:2.00)A.1,1,1B.1,1,0C.1,0,0D.0,0,010.有下列程序段: #include iostream using namespace std; int main() char b = “Hello,you“; b5 = 0; coutbend1; return 0; 执行此程序后,得到的输出结
6、果是( )。(分数:2.00)A.Hello,youB.Hello0youC.HelloD.011.下面关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型12.结构化方法的核心和基础是( )。(分数:2.00)A.结构化分析方法B.结构化设计方法C.结构化编程方法D.结构化程序设计理论13.为了避免在嵌套的条件语句 if-else 中产生二义性,C+语言中规定的 if-else 匹配原则是( )。(分数:2.00)A.e
7、lse 字句与所排位置相同的 if 配对B.else 子句与其之前最近的 if 配对C.else 子句与其之后最近的 if 配对D.else 子句与同一行上的 if 配对14.下面不属于软件工程的 3 个要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境15.以下程序的执行结果是 ( )。 #include iostream using namespace std; class sample private: int x; public: sample (int A) x=a; friend double square(sample s); ; double square(sa
8、mple s) return s.x*s.x; int main ( ) sample s1(20) ,s2(30); coutsquare (s2) end1; return 0; (分数:2.00)A.20B.30C.900D.40016.若有以下程序: #include iost ream using namespace std; class A private: int a; public: A(int i) a=i; void disp () couta“, “; ; class B private: int b; public: B(int j) b=j; void disp ()
9、 coutb “,“; ; class C : public B,public A private: int c; public: C(int k) :A(k-2),B(k+2) c=k; void disp() A: :disp (); B:disp(); coutcend1; ; int main () C obj (10); obj.disp(); return 0; 程序执行后的输出结果是(分数:2.00)A.10,10,10B.10,12,14C.8,10,12D.8,12,1017.下列叙述中,错误的是( )。(分数:2.00)A.一个函数中可以有多条 return 语句B.调用函
10、数必须在一条独立的语句中完成C.函数可通过 return 语句返回其函数值D.主函数名 main()也可以带形参18.有如下数组声明: int value30; 下标值引用错误的是( )。(分数:2.00)A.value30B.value0C.value10D.value2019.编制一个好的程序,首先要确保它的正确性和可靠性,还应强调良好的编程风格。在选择标识符的名字时应考虑( )。(分数:2.00)A.名字长度越短越好,以减少源程序的输入量B.多个变量共用一个名字,以减少变量名的数目C.选择含义明确的名字,以正确提示所代表的实体D.尽量用关键词作名字,以使名字标准化20.阅读下面程序: #
11、include iomanip. h int main () coutsetfill( * )setw( 8 ); coutsetprecision( 5 )3.1415926end1; return 0; 则该程序的输出结果是 ( )。(分数:2.00)A.3.1415*B.*3.1416C.3.141593D.*3.1415921.二叉树是节点的有限集合,它有( )根节点。(分数:2.00)A.有 0 个或 1 个B.有 0 个或多个C.有且只有 1 个D.有 1 个或 1 个以上22.下列关于成员访问权限的描述中,不正确的是( )。(分数:2.00)A.公有数据成员和公有成员函数都可以被
12、类对象直接处理B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问C.只有类或派生类的成员函数和友元函数可以访问保护成员D.保护成员在派生类中可以被访问,而私有成员不可以23.ER 模型可以转换成关系模型。当两个实体间联系是 M:N 联系时,它通常可转换成关系模式的个数是( )。(分数:2.00)A.2B.3C.M+ND.M*N24.面向对象程序设计将数据和( )放在一起,作为一个相互依存、不可分割的整体来处理。(分数:2.00)A.对数据的操作B.信息C.数据隐藏D.数据抽象25.继承具有( ),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
13、(分数:2.00)A.规律性B.传递性C.重复性D.多样性26.下列有关类的说法中,不正确的是( )。(分数:2.00)A.类是一种用户自定义的数据类型B.只有类中的成员函数才能存取类中的私有数据C.在类中,如果不作特别声明,所有数据成员均为私有类型D.在类中,如果不作特别声明,所有成员函数均为私有类型27.若有以下程序: #include iostream using namespace std; class point private: int x, y; public: point ( ) x=0; y=0; void setpoint(int x1,int y1) x=x1; y=y1
14、; void dispoint () cout “x= “x“, “ y= “ yend1; ; int main ( ) point *p=new point; p-setpoint (5, 12); p-dispoint (); return 0; 程序运行后的输出结果是( )。(分数:2.00)A.12,12B.5,5C.12,5D.5,1228.下列叙述中,正确的是( )。(分数:2.00)A.一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系可能不同B.一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系一定不同C.一个数据结构中的元素在计算机存储空间中的位置关系与逻辑
15、关系一定相同D.数据的存储结构与数据的逻辑结构是相同的29.若有以下程序: #include iostream using namespace std; class Base private: int x; protected: int y; public: int z; void setx(int i) x=i; int getx () return x; ; class Inherit : private Base private: int m; public: int p; void setvalue(int a, int b, intc, int d) setx (A) ; y=b;
16、z=c; m=d; void display() coutgetx () “,“y“,“z“,“mend1; ; int main ( ) Inherit A; A.setvalue(1,2,3,4); A.display (); return 0; (分数:2.00)A.1,2,3,4B.产生语法错误C.4,3,2,1D.2,3,4,530.一个栈的进栈顺序是 1,2,3,4,则出栈顺序为( )。(分数:2.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,4二、B填空题/B(总题数:13,分数:26.00)31.在长度为 n 的有序线性表中进行二分查找,需要的比较
17、次数为U 【1】 /U。(分数:2.00)填空项 1:_32.需求分析阶段的工作,可以分成以下 4 个方面:U 【2】 /U、分析与综合、编写需求规格说明书和评审。(分数:2.00)填空项 1:_33.选择运算的结果关系同原关系具有U 【3】 /U的结构框架,投影运算的结果关系同原关系通常具有U 【4】 /U的结构框架。(分数:2.00)填空项 1:_34.联接运算是将两个或两个以上的关系根据联接条件生成一个U 【5】 /U。(分数:2.00)填空项 1:_35.若 a 是 float 型变量,且 a=6,则表达式“a/2+(int)(a+1)%2”的值为U 【6】 /U。(分数:2.00)填
18、空项 1:_36.若有如下图所示 5 个连续的 int 类型的存储单元并赋值,a0的地址小于 a4的地址。 p 和 s 为 int型的指针变量。请对以下问题填空。 (分数:2.00)填空项 1:_37.有以下程序: #include iostream using namespace std; void t(int x,int y, int cp,int dp) cp=x*x+y+y; dp=x*x-y*y; int main() int a=4,b=3,c=5,d=6; t(a,b,c,D) ; coutc“,“dend1; return 0; 运行后的输出结果为U 【9】 /U。(分数:2.
19、00)填空项 1:_38.在用 class 定义一个类时,数据成员和成员函数默认的访问权限是U 【10】 /U:(分数:2.00)填空项 1:_39.多态性分为两类:编译时的多态性和U 【11】 /U。(分数:2.00)填空项 1:_40.U【12】 /U允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。(分数:2.00)填空项 1:_41.有以下程序: #include iostream using namespace std; class Sample private: int n; public: Sample(int i)n=i; void print
20、() cout“1:n=“n“,“; void print() const cout“2:n=“nend1; ; int main() Sample a(10); const Sample b(20);aprint(); bprint(); 上述程序运行后的输出结果是U 【13】 /U。(分数:2.00)填空项 1:_42.在下面横线上填上适当的语句,完成程序。 #include iostream using namespace std; class Base int x; public: Base(int i) x=i; Base() ; class Derived : public Bas
21、e public: _ /完成类 Derive 构造函数的定义 ; int main() Derived obj; return 0; 在横线处应填入的语句是U 【14】 /U。(分数:2.00)填空项 1:_43.以下程序的执行结果是U 【15】 /U。 #include iostream.h #include fstream.h #include stdlib.h int main() fstream outfile, infile; outfile.open(“D:/text.dat“,ios:out); if(!outfile) cout“text.dat cant open“end1
22、; abort(); outfile“1234567890“end1; outfile“abcdefghij“end1; outfile.close(); infile.open(“D:/text.dat“,ios:in); if(!infile) cout“text.dat cant open“end1; abort ( ); char textline40; int i=0; while(!infile.eof() i+; infile.getline(textline,sizeof(textline); couti“:“textlineend1; infile.close(); retu
23、rn 0; (分数:2.00)填空项 1:_二级 C+笔试 57 答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.若有以下程序: #include iostream using namespace std; int f() static int i = 0; int s = 1; s+=i; i+; return s; int main ( ) int i,a = 0; for(i = 0;i5;i+) a+=f ( ); coutaend1; return 0; 程序运行后,输出的结果是( )。(分数:2.00)A.20B.24C.25
24、D.15 解析:解析 本题考核静态局部变量在函数中的使用。静态局部变量就是将局部变量说明为静态的。静态局部变量既有在局部域作用的特性(即变量只能在变量的作用范围内被访问),又可以永久存在(变量的值得以保留,并可继续使用)。静态局部变量只在第 1 次执行时初始化一次。在函数 f()中定义了一个静态局部变量 i,它的初始值为 0,还定义了一个局部变量 s(它的初始值为 1),用来返回计算所得值。函数f()中所进行的数据加工是 s+=i 和 i+。即每调用一次函数 f(),返回(i+1)的值后,i 的值增 1。再看主函数,在主函数中,通过一个 for 语句连续调用 f 函数 5 次,并把每次调用 f
25、 函数的返回值相加并存入a,最后输出 a 的值。在了解各函数功能以及调用关系后就可计算出 a 的值为 15。2.有如下类的定义。应在空格处填入的语句是 ( )。 class MyClass _ int x, y; public: MyClass(int a=0,int b=0) x=a; y=b; static void change) x-=10; y-=10; ;(分数:2.00)A.static B.constC.mutableD.不需要填入内容解析:解析 本题考核静态成员函数的使用。由题可知,函数 change()为类 MyClass 的静态成员函数。先来了解静态成员函数:静态成员函数
26、与静态数据成员相似,也从属于类,只要类存在,静态成员函数就可以使用,静态成员函数的定义是在一般函数的定义前加上关键词 static。调用静态成员函数的格式如下:类名:静态成员函数名(参数表); 静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员(因为非静态数据成员只有对象存在时才有意义)。但静态数据成员和静态成员函数可由任意访问权限许可的函数访问。和一般成员函数类似,静态成员函数也有访问限制,私有静态成员函数不能由外界访问。 由静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员可知,变量 x 和 y 只
27、能是类 MyClass 的静态数据成员,所以 x 和 y 的定义为“static int x,y;”。3.在数据库管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是( )。(分数:2.00)A.数据库系统 B.文件系统C.人工管理D.数据项管理解析:解析 文件系统是数据库系统的初级阶段,提供了简单的数据共享与数据管理能力,其功能简单,附属于操作系统而不成为独立的软件,只能看作是数据库系统的雏形。人工管理主要用于科学计算,硬件无磁盘,直接存取,软件没有操作系统。数据库管理系统是从这两个阶段发展而来的,其数据独立性必然更高。因此答案为 A。4.所谓关
28、系是指( )。(分数:2.00)A.各条记录中的数据彼此有一定的关系B.一个数据库文件与另一个数据库文件之间有一定的关系C.数据模型符合一定条件的二维表格式 D.数据库中各个字段之间彼此有一定关系解析:解析 每个关系都类似一张表,或者在某种程度上类似一个“平面”记录文件。5.有如下程序: #include iostream using namespace std; class x protected: int a; public: x() a=1; ; class x1 : virtual public x public: x1() a+=1; couta; ; class x2 : virt
29、ual public x public: x2 () a+=2; couta; ; class y : public xl,public x2 public: y() coutaend1; ; int main () y obj; return O; 该程序运行后的输出结果是( )。(分数:2.00)A.1B.123C.242D.244 解析:解析 本题程序中引入了虚基类。在主函数中,执行语句“y obj;”时,先执行虚基类 x 的构造函数,使 a=1,然后执行类 x1 的构造函数,使 a=2,并输出值 2。再执行类 x2 的构造函数,使 a=4,并输出值 4。最后执行类 y 的构造函数,输出
30、值 4。6.以下选项中,( )是合法的字符常量。(分数:2.00)A.“N“B./010 C.68D.D解析:解析 本题考核字符型常量的表示。选项 A 中是字符串的表示方法。选项 B 所表示的是一个转义字符,是特殊的字符常量。选项 C 中所表示的是整型常量。选项 D 中不是常量的表示。7.以下各运算中,不属于算术运算的是( )。(分数:2.00)A.大于 B.加C.乘D.除解析:解析 在一般的计算机系统中,基本的运算和操作有以下 4 类:算术运算、逻辑运算、关系运算、数据传输。“大于”属于逻辑运算中的一种。选项中的加、乘、除都属于算术运算。8.关于在调用模板函数时实参的使用,下列表述中正确的是
31、( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析 模板函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用和括起来的参数表)或从模板函数实参表(用()括起来的参数表),模
32、板实参的信息优先于函数实参的信息。 如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干个参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表也可以不要。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。 由此可知,只有选项 D 的说法是正确的。9.有以下程序段,其输出的结果是( )。 int x, y, z; x = y = z = O; +x | | +y coutx“,“y“,“zend
33、1;(分数:2.00)A.1,1,1B.1,1,0C.1,0,0 D.0,0,0解析:解析 本题考查自增运算符和逻辑运算符两个知识点。错误解答:x,y,z 都参 与逻辑运算+x|+y int main() char b = “Hello,you“; b5 = 0; coutbend1; return 0; 执行此程序后,得到的输出结果是( )。(分数:2.00)A.Hello,youB.Hello0youC.Hello D.0解析:解析 本题考核字符数组的特性。本题表面上看起来很简单,其实不然,出题者在题中隐藏了一个陷阱。常见的错误答案是:字符数组 b 初始化后,得 b5=,执行“b5=0;”
34、后,把 0 代替 b5中的,即可。最后输出整个字符串“Hello0you”。下面是正确解答:在 C+语言中规定:以字符0作为字符串结束标志。语句“b5=0;”就相当于语句 b5=/0,即在数组 b 的 b5加上了字符串结束标志,故执行该语句后,数组中存放的内容变为 Hello。11.下面关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 解析:解析 本题考核虚函数的定义。虚函数是非静态的成员函数。它不能是友元函数,但可以
35、在另一个类中被声明为友元函数。虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的地方。派生类的虚函数与基类中对应的虚函数必须满足下列条件,否则派生类中的虚函数将丢失其虚函数特性,在调用时进行静态联编: 派生类中的虚函数与基类中的虚函数具有相同的名称。 派生类中的虚函数与基类中的虚函数具有相同的参数个数和相同的对应参数类型。 派生类中的虚函数与基类中的虚函数的返回值,或者相同,或者都返回指针或引用。并且派生类中虚函数所返回的指针或引用的基类型,是基类型中的虚函数所返回的指针或引用的基类型的子类型。12.结构化方法的核心和基础是( )。(分数:2.00)A.结构化分析方法B
36、.结构化设计方法C.结构化编程方法D.结构化程序设计理论 解析:解析 结构化方法是软件开发方法之一。它包括结构化分析方法、结构化设计方法、结构化编程方法,而它的核心和基础是结构化程序设计理论。13.为了避免在嵌套的条件语句 if-else 中产生二义性,C+语言中规定的 if-else 匹配原则是( )。(分数:2.00)A.else 字句与所排位置相同的 if 配对B.else 子句与其之前最近的 if 配对 C.else 子句与其之后最近的 if 配对D.else 子句与同一行上的 if 配对解析:解析 本题考核 if-else 语句中 if 与 91se 的匹配原则。当多个 ifelse
37、 语句嵌套时, else 与哪个 if 匹配呢?为解决语义上的这种歧义性,C+语言规定,else 连接到在同一层中最接近它而又没有其他 else 语句与之相匹配的 if 语句。14.下面不属于软件工程的 3 个要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3 个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段:工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。15.以下程序的执行结果是 ( )。 #include iostream using namespace std; class sample privat
38、e: int x; public: sample (int A) x=a; friend double square(sample s); ; double square(sample s) return s.x*s.x; int main ( ) sample s1(20) ,s2(30); coutsquare (s2) end1; return 0; (分数:2.00)A.20B.30C.900 D.400解析:解析 本题考核友元函数的应用。程序中函数 square()是类 sample 的一个友元函数,它可以直接访问类 sample 的所有成员。它的功能是返回类 sample 的私有数
39、据成员 x 的平方。所以程序的执行结果是:900。 注意:友元函数不是类的成员函数,在类外定义时不要加上类名及其作用域运算符 (:)。友元函数的调用与一般函数的调用的方式和原理一致,可以在程序的任何地方调用它。16.若有以下程序: #include iost ream using namespace std; class A private: int a; public: A(int i) a=i; void disp () couta“, “; ; class B private: int b; public: B(int j) b=j; void disp () coutb “,“; ;
40、class C : public B,public A private: int c; public: C(int k) :A(k-2),B(k+2) c=k; void disp() A: :disp (); B:disp(); coutcend1; ; int main () C obj (10); obj.disp(); return 0; 程序执行后的输出结果是(分数:2.00)A.10,10,10B.10,12,14C.8,10,12D.8,12,10 解析:解析 本题考核派生类构造函数的使用。本题中,派生 C 具有多重继承关系,所以在派生类 C 的构造函数中应该包含基类 A 和 B
41、 的成员初始化列表。而且派生类 C 中的成员函数 disp 分别调用了基类A、B 的公有成员函数 disp()用于输出基类中私有数据变量初始化后的值。所以由类 C 构造函数的初始化形式可知,程序最后输出为 8,12,10,即 D 选项。17.下列叙述中,错误的是( )。(分数:2.00)A.一个函数中可以有多条 return 语句B.调用函数必须在一条独立的语句中完成 C.函数可通过 return 语句返回其函数值D.主函数名 main()也可以带形参解析:解析 本题考核函数的基本知识点。当函数有返回值时,调用函数可以作为一个表达式的子表达式,而不是作为一条独立的语句存在。故选项 B 的说法是
42、错误的。18.有如下数组声明: int value30; 下标值引用错误的是( )。(分数:2.00)A.value30 B.value0C.value10D.value20解析:解析 本题考核对数组的引用。在 C+语言中,数组的下标是从 0 开始的,最大的下标值比所定义的数组长度的值小 1。同时需要注意的是,C+语言中,编译和执行时并不检查数组下标是否越界。因此 value30在编译阶段是正确的,但是在运行时会出现错误。19.编制一个好的程序,首先要确保它的正确性和可靠性,还应强调良好的编程风格。在选择标识符的名字时应考虑( )。(分数:2.00)A.名字长度越短越好,以减少源程序的输入量B
43、.多个变量共用一个名字,以减少变量名的数目C.选择含义明确的名字,以正确提示所代表的实体 D.尽量用关键词作名字,以使名字标准化解析:解析 本题涉及程序的编程风格,考生应该掌握一些基本的良好编程风格。标识符的名字应能反映它所代表的实际东西,应有一定实际意义。名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。20.阅读下面程序: #include iomanip. h int main () coutsetfill( * )setw( 8 ); coutsetprecision
44、( 5 )3.1415926end1; return 0; 则该程序的输出结果是 ( )。(分数:2.00)A.3.1415*B.*3.1416 C.3.141593D.*3.14159解析:解析 本题主要考察 C+中输入输出流的格式控制操作。C+允许使用 setprecision 操纵符来控制输出对象的输出精度,若程序中没有指定输出精度,则其默认值为 6。C+同时允许使用 setfill()操纵符设置填充符,默认填充字符为空格符“”。本题程序中,首先通过 setfill()操纵符设置填充字符为星号“*”,并设置输出宽度为 8 位;输出对象前,设置对象的输出精度为 5,因此对象 3.14159
45、26 的实际输出数值为 3.1416(自动进行四舍五入);再把宽度设置考虑进去,由于默认对齐方式为右对齐,因此数值左边需要加填充符,即应该填充三个“*”符号以满足输出宽度为 8 位的要求。故程序的最终输出应该是“*3.1416”。21.二叉树是节点的有限集合,它有( )根节点。(分数:2.00)A.有 0 个或 1 个 B.有 0 个或多个C.有且只有 1 个D.有 1 个或 1 个以上解析:解析 二叉树是一种特殊的树,它要求非空二叉树只有一个根节点,所以它可以是空树。答案为A。22.下列关于成员访问权限的描述中,不正确的是( )。(分数:2.00)A.公有数据成员和公有成员函数都可以被类对象
46、直接处理B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问 C.只有类或派生类的成员函数和友元函数可以访问保护成员D.保护成员在派生类中可以被访问,而私有成员不可以解析:解析 类的私有数据成员也可以被类成员函数访问,不管是公有、私有或是保护成员,所以选项B 是错误的,其他选项是正确的。23.ER 模型可以转换成关系模型。当两个实体间联系是 M:N 联系时,它通常可转换成关系模式的个数是( )。(分数:2.00)A.2B.3 C.M+ND.M*N解析:解析 将 ER 图转换为关系模型的转换方法有:一个实体型转换为一个关系模式:一个 m:n 联系转换为一个关系模式;三个或三个以上实体间的一个多元联系转换为一个关系模式。因此,本题答案为B。24.面向对象程序设计将数据和( )放在一起,作为一个相互依存、不可分割的整体来处理。(分数:2.00)A.对
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1