1、国家二级(C+)机试-试卷 32 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合2.通过运算符重载,可以改变运算符原有的( )。(分数:2.00)A.操作数类型B.操作数个数C.优先级D.结合性3.有如下程序: #include using namespace std; class Point public: static int number; public: Point() number+; Point() numb
2、er-; ; int Point:number=0; int main() Point *ptr; Point A, B; Point* ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberA.3B.4C.6D.74.软件生命周期是指( )。(分数:2.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程5.在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是(分数:2.00)A.+B.()C.D.+6.有如下类定义:
3、class Point public: Point(int xx=0,int yy=0):x(xx),y(yy) private: int x,y; ; class Circle:public Point public: Circle(int r):radius(r) private: int radius; ;派生类 Circle 中数据成员的个数为(分数:2.00)A.1B.2C.3D.57.数据字典(DD)所定义的对象都包含于(分数:2.00)A.数据流图(DFD 图)B.程序流程图C.软件结构图D.方框图8.将运算符*重载为类成员函数时,其参数表中有且仅有一个参数,说明该运算符是(分数
4、:2.00)A.无操作数的运算符B.无操作数的运算符C.二元运算符D.三元运算符9.有如下程序: #include using namespace std; class Appliance public: Appliance() Appliance() coutA; ; class TV:public Appliance public: TV(int s=41):size(s) TV() coutTA.T41B.T41AC.T41T41D.T41AT41A10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表
5、SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11.下列关于内联函数的叙述中,错误的是(分数:2.00)A.内联函数的定义必须出现在内联函数第一次被调用之前B.内联函数主要解决程序的运行效率问题C.类体中定义的函数都是内联函数D.内联函数不能有参数12.有如下的类声明: #include using namespace std; class AA public: virtual void disp() coutA; ; class BB: public AA public: void disp() coutB; ; class
6、 CC: public BB public: virtual void disp() coutC; ; void plot(AA a) a.disp(); int main() BB bb; CC cc; BB plot(bb); cc.disp(); rb.disp(); return 0; 运行这个程序的输出是(分数:2.00)A.ACCB.ACBC.BCCD.BCB13.有如下程序段: int i=100; while ( int i=10 ) cout*; i-; 运行时输出“*“的个数是(分数:2.00)A.0B.100C.10D.无穷14.有如下类声明: class What in
7、t n; public: double d; private: char c; ;类 What 的公有数据成员和私有数据成员的数量分别是(分数:2.00)A.1 和 1B.1 和 2C.2 和 1D.2 和 215.有如下类定义: class Base public: int a; protected: int b; private: int c; ; class Derived: public Base protected: int d; ;若 obj 是类 Derived 的对象,以下语句编译正确的是(分数:2.00)A.obj.a;B.obj.b;C.obj.c;D.obj.d;16.已
8、知有数组定义 char a34;下列表达式中正确的是(分数:2.00)A.a0=“AAA“B.strcpy(a1,“BBBBB“)C.a21=“CC“D.a11=a1117.下列关于派生类构造函数和析构函数的表述中,错误的是(分数:2.00)A.下列关于派生类构造函数和析构函数的表述中,错误的是B.派生类的构造函数会隐含调用基类的构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数18.下面对软件特点描述错误的是(分数:2.00)A.软件没有明显的制作过程B.软件是一种逻辑实体,不是物理实体,具有抽象性
9、C.软件的开发、运行对计算机系统具有依赖性D.软件在使用中存在磨损、老化问题19.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ;class YY: protected XX private: double y1; protected: double y2; public: double y3; ;在派生类 YY 中的保护成员的个数是(分数:2.00)A.1B.2C.3D.420.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元
10、素出栈的顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA21.在下列原型所示的 C+函数中,按“传值“方式传递参数的是( )。(分数:2.00)A.voidf1(intx);B.voidf2(int*x);C.voidf3(constint*x);D.voidf4(int22.下列代码段中声明了 3 个类:class Person ;class Student : public Person ;class Undergraduate : Student ;下列关于这些类之间关系的描述中,错误的是( )。(分数:2.
11、00)A.类 Person 是类 Undergraduate 的基类B.类 Undergraduate 从类 Student 公有继承C.类 Student 是类 Person 的派生类D.类 Undergraduate 是类 Person 的派生类23.下列字符串中不能作为 C+标识符使用的是(分数:2.00)A.INTB.testC._1481D.1temp24.在公有继承的情况下,允许派生类中新定义的成员函数直接访问的基类成员只包括(分数:2.00)A.公有成员和保护成员B.公有成员C.公有成员、保护成员和私有成员D.保护成员25.设循环队列的存储空间为 Q(1:35),初始状态为 fr
12、ont=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为(分数:2.00)A.15B.16C.20D.0 或 3526.下列关于函数的描述中,错误的是(分数:2.00)A.函数可以没有返回值B.函数可以没有参数C.函数可以是一个类的成员D.函数不能在类体中定义27.有如下类定义: #include using namespace std; class Point public: int GetXY() return x+y; protected: void SetXY(int a,int b) x=a;y=b; private: int
13、x,y; ; class Circle:public Point public: int GetR() return radius; int GetAll() return GetXY()+radius; protected: void SetR(int r) radius=r; private: int radius; ; int main() Circle c; c.GetXY(); / c.SetXY(3,4); / c.GetR(); / c.GetAll(); / return 0; 在标注号码的语句行中存在语法错误的是(分数:2.00)A.B.C.D.28.下列符号中能够作为 C+
14、标识符的是(分数:2.00)A.ClassB.gpa4.0C.1481quanzhanD.-score29.由于常对象不能被更新,因此(分数:2.00)A.通过常对象只能调用它的常成员函数B.通过常对象只能调用静态成员函数C.常对象只包含其所属类型的常成员D.通过常对象可以调用任何不改变对象值的成员函数30.下列叙述中正确的是(分数:2.00)A.所谓有序表是指在顺序存储空间内连续存放的元素序列B.有序表只能顺序存储在连续的存储空间内C.有序表可以用链接存储方式存储在不连续的存储空间内D.任何存储方式的有序表均能采用二分法进行查找31.下列有关类成员的叙述中,错误的是(分数:2.00)A.友元
15、函数不是类的成员函数B.类成员的默认访问权限是私有的C.类成员函数必须声明为公有的D.类的静态数据成员可以是常成员32.下列关于模板的表述中,正确的是(分数:2.00)A.如果一个类中存在纯虚函数,这个类就是类模板B.函数模板不能带有形式参数表C.类模板带有模板形参表D.类模板中不能包含构造函数33.运算符重载是对已有的运算符赋予多重含义,因此( )。(分数:2.00)A.可以对基本类型(如 int 类型)的数据,重新定义“+“运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符D.C+中已经有的所有运算符都可以重载34.有如下程序:
16、#include using namespace std; class Instrument public: virtual void Display()=0; ; class Piano : public Instrument public: void Display() /*函数体略*/ ; int main() Instrument s; Instrument *p=0; / ; return 0; 下列叙述中正确的是( )。(分数:2.00)A.语句“Insturment*p=0;“编译时出错B.语句“Instruments;“编译时出错C.类 Piano 中的 Display 函数不
17、是虚函数D.类 Instrument 是一个虚基类35.必须用一对大括号括起来的程序段是( )。(分数:2.00)A.switch 语句中的 case 标号语句B.if 语句的分支C.循环语句的循环体D.函数的函数体36.有如下两个类定义:class XX private:double x1;protected:double x2;public:double x3;class YY: protected XX private:double y1;protected:double y2;public:double y3;在类 YY 中保护成员变量的个数是( )。(分数:2.00)A.1B.2C.
18、3D.437.下面描述中,不属于软件危机表现的是( )。(分数:2.00)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高38.Sample 是一个类,且有如下语句: Sample a2, *p = new Sample;执行这个语句时调用 Sample 类的构造函数的次数是(分数:2.00)A.0B.1C.2D.339.一个栈的初始状态为空。现将元素 1,2,3,A,B,C 依次入栈,然后再依次出栈,则元素出栈的顺序是(分数:2.00)A.1,2,3,A,B,CB.C,B,A,1,2,3C.C,B,A,3,2,1D.1,2,3,C,B,A40.用于定义类的必不可
19、少的 C+关键字是(分数:2.00)A.autoB.returnC.classD.public二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,此工程中包含源程序文件maincpp,其中有类 Book(“书”)和主函数 main 的定义。程序中位于每个“ERROR*found*”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应该是:书名:C+语言程序设计总页数:299 已把“C+语言程序设计”翻到第 50 页已把“C+语言程序设计”翻到第 51 页已把书合上。书是合上的。已把“C+语言程序设计”翻到第
20、 1 页注意:只修改每个“ERROR*found*”下的一行,不要改动程序中的其他内容。#includeiostreamusingnamespacestd;classBookchar*title;intnum_pages;页数intcur_page;当前打开页面的页码,0 表示书未打开 public:Book(constchar*theTitle,intpages):num_pages(pages)ERROR*found*title=newcharstrlen(theTitle);strcpy(title,theTitle);coutend1“书名:“title“总页数:“num_pages;
21、Book()deletetitle;ERROR*found*boolisOpen()constreturnnum_pages!=0;)书打开时返回 true,否则返回 falseintnumOfPages()constreturnnum_pages;)返回书的页数 intcurrentPage()constreturncurpage;返回打开页面的页码 voidopenAtPage(intpage_no)把书翻到指定页coutend1;if(page_no1|page_nonum_pages)cout“无法翻到第“cur_page“页。“;close(); else cur_page=page
22、_no;cout“已把“title“”翻到第“cur_page“页“; voidopenAtPreVPage()openAtPage(cur_page 一 1);)把书翻到上一页voidopenAtNextPage()openAtPage(cur_page+1);)把书翻到下一页 voidclose()把书合上coutend1;if(!isOpen()cout“书是合上的。“;elseERROR*found*num_pages=0;cout“已把书合上。“;coutend1; ;intmain()Bookbook(“C+语言程序设计“,299);bookopenAtPage(50);booko
23、penAtNextPage();bookclose();bookclose();bookopenAtNextPage();return0;(分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,此工程中包含一个头文件numberh,其中包含了类 N 啪 ber、OctNumber、HexNumber 和 DecNumber 的声明;包含程序文件numbercpp,其中包含了上述类的成员函数 toString 的定义;还包含程序文件 proj2cpp,它以各种数制格式显示输出十进制数 11。请在程序
24、中的横线处填写适当的代码并删除横线,以实现上述功能。此程序的正确输出结果应为:013,11,OXB 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。mumberhclassNumberprotected:intn;staticcharbuf33;public:Number(intk):n(k)*found*_;纯虚函数 toString 的声明;classHexNumber:publicNumber16 进制数 public:*found*_构造函数,参数名为 kconstchar*toString()const;classOctNumber:p
25、ublicNumber八进制数public:OctNumber(intk):Number(k)constchar*toString()const;classDecNumber:publicNumber十进制数 public:DecNumber(intk):Number(k)constchar*toString()const;,Imumbercpp#include“Numberh“#includeiostream#includeiomanip#includestrstreamusingnamespacestd;charNumber:buf33=“;constchar*HexNumber:toSt
26、ring()conststrstreamstr(buf,33);strhexuppercaseshowbasenends;returnbuf;constchar*OctNumber:toString()conststrstreamstr(buf,33);stroctshowbasenends;returnbuf;constchar*DecNumber:toString()conststrstreamstr(buf,33);Strdecnends;returnbuf;_;按既定的数制显示输出参数对象 number 的值intmain()show(OctNumber(ii);cout,;show(
27、DecNumber(11);cout,;*found*_;以 16 进制格式输出十进制数11coutend1;return0;(分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程文件 proj3。本题创建一个小型字符串类,字符串长度不超过 100。程序文件包括 proj3h、proj3cpp、writeToFileobj。补充完成重载赋值运算符函数,完成深复制功能。屏幕上输出的正确结果应该是:Hello!Happynewyear!要求:补充编制的内容写在“*333*”与“*666*”两行之间。不得修改程序的
28、其他部分。注意:程序最后调用 writeToFile 函数,使用另一组不同的测试数据,将不同的运行结果输出到文件 outdat 中。输出函数 writeToFile 已经编译为 obj 文件。proj3h#includeiostream#includeiomanipusingnamespacestd;classMiniStringpublic:friendostream class Point public: static int number; public: Point() number+; Point() number-; ; int Point:number=0; int main()
29、 Point *ptr; Point A, B; Point* ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberA.3B.4C.6 D.7解析:解析:本题考查默认构造函数,题目中定义一个对象 A、B 以及对象数组 Point3,又定义了对象 C,共执行 6 次构造函数,number 变为了 6,所以本题答案为 C。4.软件生命周期是指( )。(分数:2.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程解析:解析:通常,将
30、软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。5.在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是(分数:2.00)A.+B.() C.D.+解析:解析:本题考查重载运算符,C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选 B。6.有如下类定义: class Point public: Point(int xx=0,int yy=0):x(xx),y(yy) private: int x,y; ; class Circle
31、:public Point public: Circle(int r):radius(r) private: int radius; ;派生类 Circle 中数据成员的个数为(分数:2.00)A.1B.2C.3 D.5解析:解析:本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为:class派生类名:继承方式基类名题目中公用继承,所以也继承基类的数据成员,所以总共有 3 个数据成员,所以 C 选项正确。7.数据字典(DD)所定义的对象都包含于(分数:2.00)A.数据流图(DFD 图) B.程序流程图C.软件结构图D.方框图解析:解析:在数据流图中,对所有元素都进行了命
32、名,所有名字的定义集中起来就构成了数据字典。因此选 A,而 B,C,D 都不符合。8.将运算符*重载为类成员函数时,其参数表中有且仅有一个参数,说明该运算符是(分数:2.00)A.无操作数的运算符B.无操作数的运算符C.二元运算符 D.三元运算符解析:解析:本题考查运算符重载,题目中将*重载为类成员函数时,如果是一元运算符,其参数就是默认的 this,而如果是二元运算符,其参数表中有且仅有一个参数,所以该运算符是二元运算符。9.有如下程序: #include using namespace std; class Appliance public: Appliance() Appliance()
33、 coutA; ; class TV:public Appliance public: TV(int s=41):size(s) TV() coutTA.T41B.T41A C.T41T41D.T41AT41A解析:解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数,所以本题中定义 room1 时,程序结束时先调用派生类析构函数输出 T41,然后执行基类的析构函数输出 A,而定义对象指针,并不会调用构造函数,所以什么也不输出,所以结果为 T41A,B 选项正确。10.设有表示学生选课的三张表,学生 S(学号,姓名,性
34、别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号 D.学号,姓名,成绩解析:解析:学号是学生表 S 的主键,课号是课程表 C 的主键,所以选课表 SC 的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择 C)。11.下列关于内联函数的叙述中,错误的是(分数:2.00)A.内联函数的定义必须出现在内联函数第一次被调用之前B.内联函数主要解决程序的运行效率问题C.类体中定义的函数都是内联函数D.内联函数不能有参数 解析:解析:内联函数的函数定义必须
35、出现在内联函数第一次被调用之前;内联函数可以避免函数频繁调用时的开销,提高程序运行效率;在类定义体内部定义的成员函数,编译器都将其视为内联函数;A、B、C 正确;内联函数也可以有参数,D 错误,答案为 D。12.有如下的类声明: #include using namespace std; class AA public: virtual void disp() coutA; ; class BB: public AA public: void disp() coutB; ; class CC: public BB public: virtual void disp() coutC; ; voi
36、d plot(AA a) a.disp(); int main() BB bb; CC cc; BB plot(bb); cc.disp(); rb.disp(); return 0; 运行这个程序的输出是(分数:2.00)A.ACC B.ACBC.BCCD.BCB解析:解析:程序定义了类 AA,成员函数 disp 是虚函数;类 BB 公有继承 AA,重新定义了函数 disp,由虚函数的性质可知,即使 BB 中未使用 virtual 修饰 disp,函数 disp 仍然是虚函数;类 CC 公有继承了BB,同样重新定义了虚函数 disp;main 函数中定义了 BB 类对象 bb,CC 类对象
37、cc,BB 类引用 rb,rb 被初始化指向 cc;然后调用 plot 函数,由于 plot 函数的形参是 AA 类对象 a,不满足多态性中调用者必须要是引用或者指针类型的条件,所以无论实参是 bb 或 cc,a.disp()调用的都是 AA 类中的函数 disp,输出“A“;cc.disp()显然调用的是类 CC 中的函数,输出“C“;rb.disp(),由于 rb 是引用,指向的是类 CC对象 cc,所以这里由多态性可知调用的是 CC 类中的 disp 函数,输出“CC“;程序输出结果为:“ACC“;答案为 A。13.有如下程序段: int i=100; while ( int i=10
38、) cout*; i-; 运行时输出“*“的个数是(分数:2.00)A.0B.100C.10D.无穷 解析:解析:首先,程序定义了局部变量 i 并初始化为 100,在 while 循环中定义了同名局部变量 i 并初始化为 10,由变量的作用域可知 while 循环中的 i 屏蔽了 while 语句前的局部变量 i,所以 while 循环体中的 i 初值为 10;其次,由于 while 循环的循环条件为 inti=10,每次循环都是重新定义并初始化 i,条件始终为真,所以 while 循环将会无限执行下去,输出无穷个“*“。答案为 D。14.有如下类声明: class What int n; p
39、ublic: double d; private: char c; ;类 What 的公有数据成员和私有数据成员的数量分别是(分数:2.00)A.1 和 1B.1 和 2 C.2 和 1D.2 和 2解析:解析:class 关键字定义的类,成员默认的访问级别是私有的,所以类 What 中公有成员有 d,私有成员有 n,c;答案为 B。15.有如下类定义: class Base public: int a; protected: int b; private: int c; ; class Derived: public Base protected: int d; ;若 obj 是类 Deri
40、ved 的对象,以下语句编译正确的是(分数:2.00)A.obj.a; B.obj.b;C.obj.c;D.obj.d;解析:解析:类 Derived 以 public 方式继承 Base,所以 a 在 Derived 中是 public 成员,b 在 Derived 中是 protected 成员,c 对 Derived 不可见;所以对类 Derived 对象 obj 可见的成员为 a,答案为 A。16.已知有数组定义 char a34;下列表达式中正确的是(分数:2.00)A.a0=“AAA“B.strcpy(a1,“BBBBB“)C.a21=“CC“D.a11=a11 解析:解析:程序定
41、义一个 3 行 4 列的二维字符数组。由于是二维数组,所以 a0代表一维数组,数组是不能直接赋值的,A 错误;由于是二维数组,a1代表数组 a 的第二行行地址,可以使用 strcpy 函数赋值,但是 a1只有 4 个字节大小的空间,而字符串“BBBBB“占 6 个字节,拷贝越界,B 错误;同 B 情况一样,a21只有 1 个字节空间,“CC“占 3 个字节,无法完成赋值,C 错误;D 选项是对 a11完成自我赋值,正确;答案为 D。17.下列关于派生类构造函数和析构函数的表述中,错误的是(分数:2.00)A.下列关于派生类构造函数和析构函数的表述中,错误的是B.派生类的构造函数会隐含调用基类的
42、构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析:派生类对象的撤销顺序与构造顺序相反:首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数,这样做是为了每次析构函数销毁的都是完整的对象,选项 D 错误,答案为 D。18.下面对软件特点描述错误的是(分数:2.00)A.软件没有明显的制作过程B.软件是一种逻辑实体,不是物理实体,具有抽象性C.软件的开发、运行对计算机系统具有依赖性D.软件在使用中存在磨损、老化问题 解析:解析:软件具有以下特点:软件是一种逻辑实体,具有抽象性;软
43、件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素。故 D 选项正确。19.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ;class YY: protected XX private: double y1; protected: double y2; public: double y3; ;在派生类 YY 中的保护成员的个数是(分数:2.00)A.1B.2C.3 D.4解析:解析:类 YY 以 pr
44、otected 方式继承类 XX,所以类 XX 中的 public 成员和 protected 成员在 YY 中为 protected 成员,所以 YY 中的 protected 成员有:x2,x3,y2,答案为 C。20.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321 C.ABCDE12345D.54321EDCBA解析:解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B)。21.在下列原型所示的 C+函数中,按“传值“方式传递参
45、数的是( )。(分数:2.00)A.voidf1(intx); B.voidf2(int*x);C.voidf3(constint*x);D.voidf4(int解析:解析:函数参数的 3 种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。其中 B、C 选项都是传递变量指针,D 选项为引用形参,所以本题答案为 A。22.下列代码段中声明了 3 个类:class Person ;class Student : public Person ;class Undergraduate : Student ;下列关于这些类之间关系的描述中,错误的是( )。(分数:2.00)A.类
46、Person 是类 Undergraduate 的基类B.类 Undergraduate 从类 Student 公有继承 C.类 Student 是类 Person 的派生类D.类 Undergraduate 是类 Person 的派生类解析:解析:本题考查基类和派生类的逻辑关系,属于基础知识,如果没有指明哪种继承方式,那么默认为私有继承,所以 B 选项错误。23.下列字符串中不能作为 C+标识符使用的是(分数:2.00)A.INTB.testC._1481D.1temp 解析:解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线 3 种字符组成,且第一个字符必须为字母或者下划线。所以 D 选项错误。24.在公有继承的情况下,允许派生类中新定义的成员函数直接访问的基类成员只包括(分数:2.00)A.公有成员和保护成员 B.公有成员C.公有成员、保护成员和私有成员D.保护成员解析:解析:本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式决定,本题主要考查公用继承方式对基类的访问权限,根据公用继承的特性,A 选项正确。25.设循环队列的存储空间为 Q(1:35),初始状