1、二级 C+笔试-60 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.设有如下关系表:(分数:2.00)A.B.C.D.2.如果表达式 y*x+中,“*”是作为成员函数重载的运算符,“+”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为(分数:2.00)A.operator+(0).operator*(y);B.operator*(x.operator+(0),y);C.operator*(operator+(x,0)D.operator*(operator+(x,0),y)3.在一个类体的下列声明中,下确的纯虚函数声明
2、星(分数:2.00)A.virtual voidvf0:0;B.void vf(int)=0;C.virtual int vf(int);D.virtual void vf(int)4.下列叙述中错误的是(分数:2.00)A.在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统B.在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关C.在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关D.在数据库设计的过程中,物理结构设计依赖于具体的计算机系统5.下列语句段将输出字符*的个数为int i=100;while(1)i-;if(i=0)break;cout*;(分数:2.0
3、0)A.98 个B.99 个C.100 个D.101 个6.下列叙述中正确的是(分数:2.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令7.有如下程序:#include iostreamusing namespace std:class Testpublic:Test() n+=2;Test() n-=3; ;static int getNum() return n;privaue:static int n:;int Test:n=1;int main()Test* p=new Test;de
4、lete p;cout“n=“Test:getNum()end1;return 0;执行后的输出结果是(分数:2.00)A.n=0B.n=1C.n=2D.n=38.下面关于虚函数的描述中正确的是(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型9.有如下程序:#include iostream.husing namespace std;class Stackpublic:Stack (unsigned n=10):size (n) rep_=new int
5、 size; top=0;Stack (stackfor (int i=0;isize;i+rip_i-s.rep_i;top=s.top;Stack() deleterep_;void poush(int(分数:2.00)A.rep_topj=a; top+;void setData (double D) data=d;static int count;private:double data;_count=0; /静态数据成员的定义(分数:2.00)A.intB.static intC.int Fred:D.static int Fred:12.设有以下程序段:int a5=0,*p,*q;
6、p=a;q=a;则下列选项中,合法的运算是(分数:2.00)A.p*qB.p-qC.p*qD.p%q13.下面关于 C+流的叙述中,正确的是(分数:2.00)A.cin 是一个输入流对象B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char *y=“PQMN“; couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cin.getline(x,80);时,若键入Happy new year则 x 中的字符串是“Happy“14.下列叙述中正确的是(分数:2.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程
7、序执行的效率只取决于所处理的数据量D.以上三种说法都不对15.在表达式 x-y 中,“-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可表示为(分数:2.00)A.operator-(y)B.operator-(y,x)C.operator-(x)D.operator-(x,y)16.有如下程序:#include iostreamusing namespace std;int main()cout.fill(*);cout.width(6);cout.fill(#);cout123end1;return 0;执行后的输出结果是(分数:2.00)A.#
8、123B.123#C.*123D.123*17.面向对象程序设计将数据和什么放在一起,作为一个相互依存、不可分割的整体来处理?(分数:2.00)A.对数据的操作B.信息C.数据隐藏D.数据抽象18.下列虚基类的声明中正确的是(分数:2.00)A.class virtual B: public AB.virtual class B: public AC.class B: public A virtualD.class B: virtual public A19.下列关于运行符重载的描述中,正确的是(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变操作数的优先级C.运算符重
9、载可以改变运算符的结合性D.运算符重载可以使运算符实现特殊功能20.有如下类声明:class XAint x;public:XA(int n)x=n; class XB:public XAint y;public:XB(int a, int b) ;在构造函数 XB 的下列定义中,正确的是(分数:2.00)_21.有以下程序:#include iostreamusing namespace std;class Apublic:A(int i,int j)a=1;b=j;void move (int x,int y)a+=x;b+=y;void show()couta“,“bend1privat
10、e:int a,b;class B : private Apublic:B(int i,int 3):A (i,j) void fun()move (3,5);void f1()A:show();int main()B d(3,4);d.fun();d.f1();return 0;程序执行后的输出结果是(分数:2.00)A.3,4B.6,8C.6,9D.4,322.在关系数据库中,用来表示实体之间联系的是(分数:2.00)A.树结构B.网结构C.线性表D.二维表23.在公有派生的情况下,派生类中定义的成员函数只能访问原基类的(分数:2.00)A.公有成员和私有成员B.私有成员和保护成员C.公有
11、成员和保护成员D.私有成员、保护成员和公有成员24.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(分数:2.00)A.概要设计B.详细设计C.可行性分析D.需求分析25.下列叙述中正确的是(分数:2.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构26.下列对字符数组进行初始化的语句正确的是(分数:2.00)A.char a =“Hello“;B.char a=H,e,1,1,o);C.char a5=“Hello“;D.char a25=“Hello“, “World“;p27.在 C+中,实现封装性需借助于(分数:
12、2.00)A.枚举B.类C.数组D.函数28.若语句:coutsetfill()setw(5)3141512setw(5)“OK!“;是程序中第 1 个输出语句,则输出结果是(分数:2.00)A.3141512OK!B.31415120K!C.314150K!D.31415OK!29.有如下类声明: class Foo int bar; ;则 Foo 类的成员 bar 是(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数30.在表达式 x+y*z 中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是 ,(分数:2.00)A.ope
13、rator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数D.operator+有一个参数,operator*有一个参数31.下列叙述中错误的是(分数:2.00)A.一种数据的逻辑结构可以有多种存储结构B.数据的存储结构与数据处理的效率无关C.数据的存储结构与数据处理的效率密切相关D.数据的存储结构在计算机中所占的中间不一定是连续的32.有如下语句序列:int k=0;dok+=5; cout$; while(k19);while(k-00)cout*;执行上面的语句序列输出字
14、符$和*的个数分别是(分数:2.00)A.4 和 20B.55 和 20C.4 和 21D.5 和 2133.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是(分数:2.00)A.这是运算符-的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值34.有如下函数模板声明:templatetypename TT Max(T a, T B) return (a=B) ?a:b;下列对函数模板 Max()的调用中错误的是(分数:2.00)A.Max(3.5,
15、4.5)B.Max(3.5,4)C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)35.下列叙述中正确的是(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率二、填空题(总题数:14,分数:28.00)36.某二叉树中度为 2 的结点有 18 个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_37.在面向对象方法中,类的实例称为 1 。(分数:2.0
16、0)填空项 1:_38.软件生命周期包括 8 个阶段。为了使各时期的任务更明确,又可分为 3 个时期:软件定义期、软件开发期、软件维护期。编码和测试属于 1 期。(分数:2.00)填空项 1:_39.一棵二叉树第六层(根结点为第一层)的结点数最多为 1 个。(分数:2.00)填空项 1:_40.数据库系统中实现各种数据管理功能的核心软件称为 1。(分数:2.00)填空项 1:_41.设有定义语句:int a=12;,则表达式 a*=2+3 的运算结果是 1。(分数:2.00)填空项 1:_42.设在主函数中有以下定义和函数调用语句,且 fun()函数为 void 类型,请写出 fun()函数的
17、首部_。int main()double s1022;int n:.fun (s):.return 0;(分数:2.00)填空项 1:_43.下列程序的输出结果是_。#include iostream.h#include cstring.husing namespace std;void fun(const char*s,char int main )char str =“ABCDE“;char ch=str1;fun(str,sh);coutCh;return 0;(分数:2.00)填空项 1:_44.请按下面注释的提示,将类 B 的构造函数定义补充完整。classAint a;public
18、:Aint aa=0) (a=aa;class B:public Aint b;A c;public:/用 aa 初始化基类 A,用 aa+1 初始化类对象成员 cB(int aa): b=aa+2;(分数:2.00)填空项 1:_45.以下程序运行后的输出结果是_。#include iostream#include stringusing namespace std;class Y;class Xint x;char *strx;public:X(int a, char *str)x=a;strx=new charstrlen(str)+1strcpy (strx,str);void sho
19、w(Y ;class Yprlvate: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 mainX a (10, “stringX“);Y b (20, “stringY“);a. show (b);renurn 0;(分数:2.00)填空项 1:_46.在下面横线上填上适当的语句,完成程序。#include iostreamusing namespace std;class Basei
20、nt x:public:Base (int i)x=i;Base();class Derived : public Basepublic:_ /完成类 Derive 构造函数的定义;int main (Derived Obi;return 0;在横线外应填入的语句是_。(分数:2.00)_47.下面是用来计算 n 的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是) n!=n*(n-1)*.*2*1)unsigned fact(unsigned n)if (n =1)return 1;return_;(分数:2.00)填空项 1:_48.下列程序的输出结果是_。#include i
21、ostreamusing namespace std;templatetypename TT fun(T a,T b) return (a=b)?a:b;)int main()coutfun(3, 6),fun(3.14F,6.28F) end1;return 0;(分数:2.00)填空项 1:_49.下面程序的输出是:*5.235.23*请将下划线上遗漏的部分补充完整。#include iostream#include iomanipusing namespace std:void main()double i=5.23;cout_setw(14)icouuend1_setw(14)i;(分
22、数:2.00)填空项 1:_二级 C+笔试-60 答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.设有如下关系表:(分数:2.00)A.B. C.D.解析:解析 显然,关系表 T 是关系表 R 与 S 的并,即 T=RS。2.如果表达式 y*x+中,“*”是作为成员函数重载的运算符,“+”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为(分数:2.00)A.operator+(0).operator*(y);B.operator*(x.operator+(0),y);C.operator*(operator+(x,0) D
23、.operator*(operator+(x,0),y)解析:解析 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且 c1,c2都是该类的对象,则 c1.operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与 c1+c2 含义相同。同理,运算符*作为成员函数重载,则 y*(x+)与 y.operator*(x+)含义相同,后缀+作为友元函数重载,那么 x+与 operator+(x,0)含义相同,所以选项 C 是正确的。3.在一个类体的下列声明中,下确的纯虚函数声明星(分数:2.00)A.virtual
24、voidvf0:0; B.void vf(int)=0;C.virtual int vf(int);D.virtual void vf(int)解析:解析 本题考核纯虚函数的声明。声明纯虚函数的一般格式为:virtual类型函数名(参数表)=0;4.下列叙述中错误的是(分数:2.00)A.在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统B.在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关 C.在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关D.在数据库设计的过程中,物理结构设计依赖于具体的计算机系统解析:解析 数据库设计主要分四个步骤;需求分析,概念结构设计,
25、逻辑结构设计,物理结构设计。选项 B 错误,应为所选,因为概念结构设计在需求分析的基础上对客观世界做抽象,独立于数据库的逻辑结构;也独立于具体的数据库管理系统,与具体的数据库管理系统无关。5.下列语句段将输出字符*的个数为int i=100;while(1)i-;if(i=0)break;cout*;(分数:2.00)A.98 个B.99 个 C.100 个D.101 个解析:解析 本题考核 while 循环的运用。在 while 循环体中,先将变量 i 减 1,然后通过判断 i 是否为 0 来结束循环,最后才执行输出。所以,cout*;语句在 i 的值为 1002 时会被执行,而 i为 1
26、时循环结束即 cout*;语句被执行的次数是 99 次。故应该选择 B。6.下列叙述中正确的是(分数:2.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 本题考核软件维护的概念。维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段,在软件交付使用后,还需要进行维护。软件维护通常有以下四类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维
27、护,还包括文档的维护。综上所述,本题的正确答案是 A,其余选项的说法错误。7.有如下程序:#include iostreamusing namespace std:class Testpublic:Test() n+=2;Test() n-=3; ;static int getNum() return n;privaue:static int n:;int Test:n=1;int main()Test* p=new Test;delete p;cout“n=“Test:getNum()end1;return 0;执行后的输出结果是(分数:2.00)A.n=0 B.n=1C.n=2D.n=3解
28、析:解析 本题考核静态数据成员与静态成员函数的定义与使用方式。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员题中变量 n 是静态数据成员,对象对其操作的结果具有叠加作用,main 函数中先定义了 Test 的对象*p,然后又 delete p,所以对静态数据 n 进行了两次操作,分别是“n+=2”和“n-=3”,n 的初始值是 1,那么 n 最后的值变为 0。main 函数最后通过调用静态函数 getNum得到 n 的值,并输出。8.下面关于虚函数的描述中正确的是(分数:2.00)A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实
29、现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 解析:解析 本题考核虚函数。虚函数是非静态的成员函数。它不能是友元函数,但可以在另一个类中被声明为友元函数,所以 A 选项不正确;虚函数必须是类的成员函数,所以 B 选项是错误的;虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的地方,所以 C 选项是不正确的;一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。故 D 选项的说法是正确的。9.有如下程序:#include ios
30、tream.husing namespace std;class Stackpublic:Stack (unsigned n=10):size (n) rep_=new int size; top=0;Stack (stackfor (int i=0;isize;i+rip_i-s.rep_i;top=s.top;Stack() deleterep_;void poush(int(分数:2.00)A.rep_topj=a; top+;void setData (double D) data=d;static int count;private:double data;_count=0; /静态
31、数据成员的定义(分数:2.00)A.intB.static intC.int Fred: D.static int Fred:解析:解析 本题考核静态数据成员的定义。题中数据成员 count 被定义成了静态的,其初始化的格式为:类型类名:静态数据成员 =常量值;,所以横线处应填入的为“int Fred”。12.设有以下程序段:int a5=0,*p,*q;p=a;q=a;则下列选项中,合法的运算是(分数:2.00)A.p*qB.p-q C.p*qD.p%q解析:解析 本题考核指针的运算。 C+语言中,指向同一字符串的指针之间可以,也只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏
32、移量。13.下面关于 C+流的叙述中,正确的是(分数:2.00)A.cin 是一个输入流对象 B.可以用 ifstream 定义一个输出流对象C.执行语句序列 char *y=“PQMN“; couty;将输出字符串“PQMN“的地址D.执行语句序列 char x80;cin.getline(x,80);时,若键入Happy new year则 x 中的字符串是“Happy“解析:解析 本题考核 C+流的概念和 I/O 的格式化。cin 是 istream 类的对象,即输入流对象。ifstream 是输入文件流类不能定义个输出流对象。C 选项中执行语句序列 char *y=“PQMN“; co
33、uty;后将输出字符串“PQMN“。getline 函数功能是允许从输入流中读取多个字符,并且允许指定输入终止字符(默认是换行字符),在读取完成后,从读取的内容中删除该终止字符,所以 D 选项中的语句序列后 x 中字符串应该是“Happy new year“。14.下列叙述中正确的是(分数:2.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 程序执行的实际计算工作量不仅与程序的控制结构有一定的关系,与处理的数据量有关,而且还与数据的存储结构密切相关。所以,选项 A 正确,选项 B
34、 和 C 错误所以,本题的正确答案为 A。15.在表达式 x-y 中,“-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可表示为(分数:2.00)A.operator-(y)B.operator-(y,x)C.operator-(x)D.operator-(x,y) 解析:解析 本题考核运算符的重载。运算符函数有两种调用形式。第一种是像一般函数那样用函数名进行调用,如 c1. operator+(c2)或 operator+(c1,c2)第二种是通过运算符构成表达式的形式进行调用,如 c1+c2。所以选项 D 的标书是正确的。16.有如下程序:#in
35、clude iostreamusing namespace std;int main()cout.fill(*);cout.width(6);cout.fill(#);cout123end1;return 0;执行后的输出结果是(分数:2.00)A.#123 B.123#C.*123D.123*解析:解析 本题考核 I/O 的格式化输出。语句“cout.fill(*);”表示填充字符为*,并且一直有效,直到再次设置填充字符为止。语句“cout.width(6);”用来设置输入输出宽度,当实际数据宽度小于指定的宽度时,多余的位置用填充字符填满;当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出
36、。语句“cout.fill(#);”表示将填充字符改为#(即把之前设置的#改为#),由于数据“123”的实际宽度小于 6,由于输出的初始状态为在输出宽度内右对齐,所以前面将会有 3 个填充字符#。17.面向对象程序设计将数据和什么放在一起,作为一个相互依存、不可分割的整体来处理?(分数:2.00)A.对数据的操作 B.信息C.数据隐藏D.数据抽象解析:解析 面向对象语言包含 3 个要素,印对象,类和继承。这 3 个要素反映 7 面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。18.下列虚基类的声明中正确的是(分数:2.00)A.class virtual B
37、: public AB.virtual class B: public AC.class B: public A virtualD.class B: virtual public A 解析:解析 本题考核虚基类的声明方式。虚基类说明格式如下:Virtual 继承方式基类名其中,virtual 是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即: class派生类名:Virtual继承方式基类名。19.下列关于运行符重载的描述中,正确的是(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变操作数的优先级C.运算符重载可以改变运算符的结合性D.运算符重载
38、可以使运算符实现特殊功能 解析:解析 本题考核运算符重载的概念。C+把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字 operator。运算符重载就是赋予已有的运算符多重含义。C+中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能。但是用户重新定义运算符,不改变原运算符的操作符个数、优先级和结合性同时运算符重载后,也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符。所以 A,B,C 选项的描述都是错误的。20.有如下类声明:class XAint x;public:XA(int n)x=n; class XB:pub
39、lic XAint y;public:XB(int a, int b) ;在构造函数 XB 的下列定义中,正确的是(分数:2.00)_解析:解析 本题考核派生类中构造函数的定义。C+中派生类构造函数的一般语法规则为:派生类名:派生类名(参数表):基类名 1(参数表 1),.基类名 n(参数表 n),子对象 1(子对象参数表 1),.子对象 m(子对象参数表 m)派生类新增成的初始化语句;21.有以下程序:#include iostreamusing namespace std;class Apublic:A(int i,int j)a=1;b=j;void move (int x,int y)
40、a+=x;b+=y;void show()couta“,“bend1private:int a,b;class B : private Apublic:B(int i,int 3):A (i,j) void fun()move (3,5);void f1()A:show();int main()B d(3,4);d.fun();d.f1();return 0;程序执行后的输出结果是(分数:2.00)A.3,4B.6,8C.6,9 D.4,3解析:解析 本题考核派生类的应用。本题中,类 B 是类 A 的私有派生类,在类 B 的成员函数 fun 中调用基类 A 的成员函数 move,并传入实参 3
41、 和 5。在类 B 的成员函数 f1 中调用基类 A 的成员函数 show,来显示基类数据成员 a 和 b 的值。主函数 main 中,定义了派生类 B 的对象 d,并赋初值 3 和 4然后调用对象 d 的成员函数 fun 和 f1,通过上述对函数 fun 和 f1 的功能的描述可知,程序最后输出 6 和 9。22.在关系数据库中,用来表示实体之间联系的是(分数:2.00)A.树结构B.网结构C.线性表D.二维表 解析:解析 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。即关系模型是用表格数据来表示实体本身及其相互之间的联系本题的正确答案是 D。23.在公有派生的情况下,派生类
42、中定义的成员函数只能访问原基类的(分数:2.00)A.公有成员和私有成员B.私有成员和保护成员C.公有成员和保护成员 D.私有成员、保护成员和公有成员解析:解析 本题考核派生类的定义和访问权限。当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类私有成员不可访问。即基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。24.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(分数:2.00)A.概要设计B.详细设计C.可行性分析D.需求分析 解析:解析 在需求分析阶段中,根据可行性研究阶段所提交的文
43、档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题本题的正确答案为 D。25.下列叙述中正确的是(分数:2.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:解析 非空的数据结构如果满足下列两个条件则称为线性结构:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件。线性表是线性结构。选项 A 的说法正确;栈与队列是特殊的线性表,因此,它们也是线性结构,选项 B 的说法错误:线性链表是线性表的链式存储结构,因此,其对应的逻辑结构也是线性结构,而不是非线性结构,选项 C 的说法错误;二叉树是非
44、线性结构,而不是线性结构,选项 D 的说法错误。26.下列对字符数组进行初始化的语句正确的是(分数:2.00)A.char a =“Hello“; B.char a=H,e,1,1,o);C.char a5=“Hello“;D.char a25=“Hello“, “World“;p解析:解析 本题考查对字符数组的初始化。A 选项中,数组 a 在定义后紧跟初始化的情况下可省略数组长度,其最终数组长度由所赋字符串常量的长度给定。A 选项正确。B 选项中,a 是一个二维数组,二维数组也能在定义时被初始化如果对全部元素都赋初值,则定义数组时第一维的大小可以忽略,但第二维的大小不能省略。故 B 选项错误
45、。C 选项和 D 选项都忽略了字符串的大小要比字符串中的字符数多 1 这一点,造成了数组的越界。27.在 C+中,实现封装性需借助于(分数:2.00)A.枚举B.类 C.数组D.函数解析:解析 本题考核 C+对面向对象程序设计的支持。封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。C+语言通过建立用户定义类型 -“类”,来支持封装性和信息隐藏。28.若语句:coutsetfill()setw(5)3141512setw(5)“OK!“;是程序中第 1 个输出语句,则输出结果是(分数:2.00)A.3141512OK! B.31415120K!C.31415
46、0K!D.31415OK!解析:解析 本题考核能够使用格式控制数据的输入输出函数 setw(int n)用来设置输入输出宽度,当实际数据宽度小于指定的宽度时,多余的位置用填充字符填满;当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出。函数 setfill(char C) 用来设置填充字符数据“3141512”的实际宽度大于 5,所以不会有填充,数据“OK!”的宽度小于 5,所以之前有两个字符,的填充。29.有如下类声明: class Foo int bar; ;则 Foo 类的成员 bar 是(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员 D.私有成员函数解析:解析 本题考核类的定义。在定义类的成员变量时,一般都会加上关键字来修饰其访问权限,其缺省值为私有。30.在表达式 x+y*z 中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是 ,(分数:2.00)A.oper