1、二级 C+分类模拟 284及答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.以下函数实现的功能是 void fun(char*s) char*p,*q,temp; p=s; q=s+strlen(s)-1; while(pq) temp=*p; *p=*q; *p=temp; p+; q-; (分数:1.00)A.将一个字符串首尾颠倒B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母2.将前缀运算符“- -”重载为非成员函数,下列原型中能正确用于类中说明的是_。(分数:1.00)A.DecrB.Decr oper
2、ator -(DecrC.friend DecrD.friend Decr operator -(Decr3.下列关于基类和派生类关系的叙述中,正确的是_。(分数:1.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员4.设树 T的度为 4,其中度为 1,2,3,4 的结点个数分别为 4,2,1,1。则 T中的叶子结点数为(分数:1.00)A.5B.6C.7D.85.有下列程序: # include stdio.h void fun(int*s,int n1,int n
3、2) int i,j,t; i=n1;j=n2 while(ij)t=si;si=sj;sj=t;i+;j-; void main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“, ak);printf (“/n“); 程序的运行结果是_ 。(分数:2.50)A.0987654321B.4321098765C.5678901234D.09876512346.下列叙述中正确的是 _ 。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度必定大B.一个
4、算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对7.若要重载+、=、=和运算符,则必须作为类成员重载的运算符是_。(分数:2.50)A.+和=B.=和C.=和D.=和8.语句 ofstream f(“SALARY. DAT“, ios: :app | ios: :binary) ;的功能是建立流对象 f,试图打开文件 SALARY.DAT并与之连接,并且(分数:2.00)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首
5、;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件9.有以下程序: #includeiostream using namespace std; Class sample private: int n; public: sample() sample(int m) n=m; sample add(sample s1,samplc s2) this-n=s1.n+s2.n; return(*this); void disp() cout“n”nendl; ; int main() sample s1(10),s2(5),s3; s3.add(s1,s2); s3.
6、disp(); return 0; 程序运行后,输出的结果是 _ 。(分数:2.00)A.n10B.n5C.n20D.n=1510.下列程序输出的结果是_。 #includestdio.h funl(char a,char b)char c;c=a;a=b;b=c; fun2(char*a,char b)char c;c=*a;*a=b;b=; fun3(char*a,char*b)char c;c=*a;*a=*b;*b=c;) void main() char a,b; a=“A“=b=“B“;funl(a,b);putchar(a);putchar(b); a=“A“-b=“B“;fun
7、2(a, b);putchar(a);putchar (b); a=“A“;b=“B“;fun3(a,b);putchar(a);putchar(b); putchar(“/n“); (分数:2.50)A.BABBABB.ABBBBAC.ABBABAD.ABABBA11.决定 C+语言中函数的返回值类型的是(分数:1.00)A.return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型12.下列关于 this指针的叙述中,正确的是 _ 。(分数:2.00)A.this指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用
8、 this时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this指针D.this指针表示了成员函数当前操作的数据所属的对象13.在软件开发中,需求分析阶段产生的主要文档是_。(分数:2.50)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书14.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10,y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结果是_。(分数
9、:3.00)A.22B.23C.24D.2515.有如下程序: #inchldeiostream using namespace std; int main() char a; cina; if(a=“*“)cout“*“endl; else cout“#“endl; return 0; 输入字符+时,程序的运行结果是_。(分数:2.50)A.*B.#C.*#D.无输出16.下面关于 C+流的叙述中,正确的是 _ 。(分数:2.00)A.cin是一个输入流对象B.可以用 ifstream定义一个输出流对象C.执行语句序列 char *y=“PQMN“;couty;将输出字符串 PQMN的地址D
10、.执行语句序列 char x80;cin.getline(x,80);时,若输入 Happy new year,则 x中的字符串是“Happy”17.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是_。(分数:1.00)A.不合法的运算符B.一元运算符C.无操作数的运算符D.二元运算符18.通过运算符重载,可以改变运算符原有的_。(分数:1.00)A.操作数类型B.操作数个数C.优先级D.结合性19.在数据结构中,从逻辑上可以把数据结构分成_。(分数:2.50)A.内部结构和外部结构B.线性结构和非线性结构C.紧凑结构和非紧凑结构D.动态结构和静态结构20.已知数组 arr的定义
11、如下: int arr5=1, 2, 3, 4, 5; 下列语句中输出结果不是 2的是_。(分数:2.50)A.cout*arr+1endl;B.cout*(arr+1)endl;C.coutarr1endl;D.cout*arrendl;21.已知函数 FA调用函数 FB,若要把这两个函数定义在同一个文件中,则_。(分数:1.00)A.FA必须定义在 FB之前B.FB必须定义在 FA之前C.若 FA定义在 FB之后,则 FA的原型必须出现在 FB的定义之前D.若 FB定义在 FA之后,则 FB的原型必须出现在 FA的定义之前22.有以下程序: #include iostream using
12、namespace std; int main() int num23,*p; int t,i,j,k=10; p=num0; for(i=0;i2;i+) for(j=0;j3;j+) k+; *p=k; for(t=2;t*p;t+) if(!(*pt) j-; *p-; break; *p+; cout*(p-1)end1; return 0; 程序运行后的输出结果是 _ 。(分数:1.00)A.19B.11C.29D.2323.有如下函数定义: void func(int a,intb+; 若执行代码段: int x=0,y=1; func(x,y); 则变量 x和 y的值分别是_。(
13、分数:1.00)A.0和 1B.1和 1C.0和 2D.1和 224.下面的语句中错误的是(分数:2.00)A.int a5;int xa ;B.const int a5;int xa ;C.int n5;int * pnew inta ;D.const int n5;int * pnew inta ;25.在数据结构中,从逻辑上可以把数据结构分成 _ 。(分数:2.00)A.动态结构和静态结构B.线性结构和非线性结构C.集合结构和非集合结构D.树状结构和图状结构26.函数定义为 Fun(int i),变量定义 n=100,则下面调用正确的是_。(分数:1.00)A.Fun(20);B.Fun
14、(20+n);C.Fun(n);D.Fun(n);27.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为_。(分数:2.00)A.publicB.protectedC.privateD.static28.已知枚举类型声明语句为: enumCOLORWHITE,YELLOW,GREEN=5,RED,BLACK=10; 则下列说法中错误的是(分数:2.00)A.枚举常量 YELLOW的值为 1B.枚举常量 RED的值为 6C.枚举常量 BLACK的值为 10D.枚举常量 WHITE的值为 129.有如下类定义: class B public: void fun1
15、() private: void fun2() protected: void fun3() ; class D:public B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是_。(分数:1.00)A.obj.fun1();B.obj.fun2();C.obj.fun3();D.obj.fun4();30.下列描述正确的是_。(分数:1.00)A.表示 mn 为 true或 mn 为 true的表达式为 mnmnB.switch语句结构中必须有 default语句C.if语句结构中必须有 else语句D.如果至少有一个操作数为
16、true,则包含|运算符的表达式为 true31.下列关于队列的叙述中正确的是(分数:1.00)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表32.下列关于运算符重载的描述中,正确的是(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变运算符的优先级C.运算符重载可以改变运算符的结合性D.运算符重载可以使运算符实现特殊功能33.下列关于 goto语句的描述中,正确的是 _ 。(分数:1.00)A.goto语句可在一个文件中随意转向B.goto语句后面要跟一个它所转向的语句C.goto语句可以同时转向多条语句D.goto
17、语句可以从一个循环体内转到循环体外34.数据库管理系统是_。(分数:2.00)A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统35.有如下语句序列: char str10;cinstr; 当从键盘输入“I love this game”时,str 中的字符串是_。(分数:2.50)A.“I love this game“B.“I love thi“C.“I love“D.“I“36.已知字母 A的 ASCII代码值为 65,若变量 kk为 char型,下列不能正确判断出 kk中的值为大写字母的表达式是_。(分数:2.50)A.kk=“A“kk=“Z“B.!(k
18、k=“A“|kk=“Z“)C.(kk+32)=“a“(kk+32)=“z“D.isalpha(kk)(kk=91)37.下列代码段声明了 3个类: class Person); class Student:public Person; class Undergraduate:Student); 下列关于这些类之间关系的描述中,错误的是_。(分数:2.50)A.类 Person是类 Undergraduate的基类B.类 Undergraduate从类 Student公有继承C.类 Student是类 Person的派生类D.类 Undergraduate是类 Person的派生类38.下列叙述
19、中正确的是_。(分数:1.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率39.若是对类 BigNumber中重载的类型转换运算符 long进行声明,下列选项中正确的是_。(分数:1.00)A.operator long() const;B.operator long(BigNumber);C.long operator long()const;D.long operalor long(BigNumber)
20、;40.有如下程序: #includeiostream using namespace std; class A public: virtua1 void func1()cout“A1“; void func2()cout“A2“; class B: public A public: void func1()(cout“B1“; void func2()cout“B2“;); int main() A*p=new B; p-funcl(); p-func2(); return 0; 执行该程序,屏幕上将显示输出_。(分数:1.00)A.B1B2B.A1A2C.B1A2D.A1B2二级 C+分类
21、模拟 284答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.以下函数实现的功能是 void fun(char*s) char*p,*q,temp; p=s; q=s+strlen(s)-1; while(pq) temp=*p; *p=*q; *p=temp; p+; q-; (分数:1.00)A.将一个字符串首尾颠倒 B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母解析:解析 本题考核 while循环语句和指针的使用。在该函数中,循环开始时,指针 p指向字符串的第 1个字符,指针 q指向字符串的最后一个字符,
22、首先交换这两个字符:然后,指针 p前进一个字符位置(指向下一个字符),指针 q后退一个字符位置(指向前一个字符);经过若干次循环,条件 pq 将为假(即指针 p和指针 q相遇),循环结束。从而实现了将一个字符串首尾颠倒的功能。2.将前缀运算符“- -”重载为非成员函数,下列原型中能正确用于类中说明的是_。(分数:1.00)A.DecrB.Decr operator -(DecrC.friend DecrD.friend Decr operator -(Decr 解析:解析 非成员函数重载用友元函数的形式实现,“- -”运算符重载分为前置和后置两种重载方式。用友元函数来实现“- -”运算符的重载
23、时,前置“- -”运算符的重载的一般格式为:friendtypeoperator- -(ClassName i=n1;j=n2 while(ij)t=si;si=sj;sj=t;i+;j-; void main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“, ak);printf (“/n“); 程序的运行结果是_ 。(分数:2.50)A.0987654321B.4321098765C.5678901234 D.0987651234解析:解析 本题定义一
24、个一维数组并赋初值,接着调用 fun(),功能是使数组中的元素逆序,当调用fUn(a,0,3),将实参传递给形参实现数组 a中 a0至 a3这 4个元素逆序;同理调用 fun(a,4,9)是将上步排列好的 a数组中 a4至 a9这 6个元素逆序;调用 fun(a,0,9)是将数组中 a0至 a9这 10个元素再逆序,再用 prtntf()函数输出结果为 5678901234,故选项 C正确。6.下列叙述中正确的是 _ 。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说
25、法都不对 解析:解析 算法的时间复杂度和算法的空间复杂度从不同的角度来衡量算法的执行情况,它们之间没有内在联系。7.若要重载+、=、=和运算符,则必须作为类成员重载的运算符是_。(分数:2.50)A.+和=B.=和C.=和D.=和 解析:解析 C+规定“=”、“”、“()”、“-”以及所有的类型转换运算只能作为成员函数重载。8.语句 ofstream f(“SALARY. DAT“, ios: :app | ios: :binary) ;的功能是建立流对象 f,试图打开文件 SALARY.DAT并与之连接,并且(分数:2.00)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新
26、文件 B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:解析 本题考查的是文件流的操作, app 表示以追加方式打开文件(即将指针移至文件尾) , binary表示以二进制方式打开文件。9.有以下程序: #includeiostream using namespace std; Class sample private: int n; public: sample() sample(int m) n=m; sample add(sample s1,samplc
27、s2) this-n=s1.n+s2.n; return(*this); void disp() cout“n”nendl; ; int main() sample s1(10),s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是 _ 。(分数:2.00)A.n10B.n5C.n20D.n=15 解析:解析 本题考查 this指针的使用类成员函数 add中通过 this指针实现私有数据成员 n的赋值。10.下列程序输出的结果是_。 #includestdio.h funl(char a,char b)char c;c=a;a=b
28、;b=c; fun2(char*a,char b)char c;c=*a;*a=b;b=; fun3(char*a,char*b)char c;c=*a;*a=*b;*b=c;) void main() char a,b; a=“A“=b=“B“;funl(a,b);putchar(a);putchar(b); a=“A“-b=“B“;fun2(a, b);putchar(a);putchar (b); a=“A“;b=“B“;fun3(a,b);putchar(a);putchar(b); putchar(“/n“); (分数:2.50)A.BABBABB.ABBBBA C.ABBABAD.
29、ABABBA解析:解析 由程序中的主函数 main入手,分别调用 fun1,run2,fun3 函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以 d调用 funl后,实参 a和 b并没有交换,仍然是 AB。第二个调用中,实参 a采用的是地址,即传递的是地址,所以形参 a的改变会影响实参 a的值,即 BB。同理,调用 fun3后为 BA。11.决定 C+语言中函数的返回值类型的是(分数:1.00)A.return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用
30、该函数时的主调用函数类型D.在定义该函数时所指定的数据类型 解析:解析 C+语言中,在定义该函数时所指定的数据类型决定函数的返回值类型。12.下列关于 this指针的叙述中,正确的是 _ 。(分数:2.00)A.this指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this指针D.this指针表示了成员函数当前操作的数据所属的对象 解析:13.在软件开发中,需求分析阶段产生的主要文档是_。(分数:2.50)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书 解析:解析 软件需求规格说明书
31、是需求分析阶段的最后成果,是软件开发中的重要文档之一。14.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10,y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结果是_。(分数:3.00)A.22B.23 C.24D.25解析:解析 在函数 f1(int)中,是对变量 x的引用,所以当在 main函数中执行“f1(x);”语句后,变量 x的值等于 11,而在函数 void f2(int x)+x;中,对
32、变量 x的传递调用,在 main函数中执行“f2(y);”语句后,变量 y的值仍然等于 12,所以输出 x+y的值等于 23。15.有如下程序: #inchldeiostream using namespace std; int main() char a; cina; if(a=“*“)cout“*“endl; else cout“#“endl; return 0; 输入字符+时,程序的运行结果是_。(分数:2.50)A.*B.#C.*#D.无输出 解析:解析 函数在执行过程中,没有定义一个有效的返回值类型,所以程序运行结果为无输出。16.下面关于 C+流的叙述中,正确的是 _ 。(分数:2
33、.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是输入文件流,类不能定义个输出流对象。getline 函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以
34、 D选项中的语句序列后 x中字符串应该是 Happy new year。17.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是_。(分数:1.00)A.不合法的运算符B.一元运算符 C.无操作数的运算符D.二元运算符解析:解析 一元或二元运算符函数作为成员函数时,第一操作数就是对象本身,并不出现在参数表中,即第一操作数仅以 this指针的形式隐含于参数表中,因此对于一元运算符参数表是空的;而对于二元运算符参数表中只有一个参数,它代表第二操作数。18.通过运算符重载,可以改变运算符原有的_。(分数:1.00)A.操作数类型 B.操作数个数C.优先级D.结合性解析:解析 重载运算符的
35、规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为A。19.在数据结构中,从逻辑上可以把数据结构分成_。(分数:2.50)A.内部结构和外部结构B.线性结构和非线性结构 C.紧凑结构和非紧凑结构D.动态结构和静态结构解析:解析 逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间为一对一的关系,非线性结
36、构表示数据元素之间为一对多或者多对一的关系。20.已知数组 arr的定义如下: int arr5=1, 2, 3, 4, 5; 下列语句中输出结果不是 2的是_。(分数:2.50)A.cout*arr+1endl;B.cout*(arr+1)endl;C.coutarr1endl;D.cout*arrendl; 解析:解析 2 是数组元素第二个元素,*arr 是数组的第一个元素 1,因为数组下标是从 0开始计起的,所以 arr1是第二个元素。arr 是数组首地址,arr+1 为第二个元素地址。故答案 D的输出不是 2。21.已知函数 FA调用函数 FB,若要把这两个函数定义在同一个文件中,则_
37、。(分数:1.00)A.FA必须定义在 FB之前B.FB必须定义在 FA之前C.若 FA定义在 FB之后,则 FA的原型必须出现在 FB的定义之前D.若 FB定义在 FA之后,则 FB的原型必须出现在 FA的定义之前 解析:解析 如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被调用的函数作声明。22.有以下程序: #include iostream using namespace std; int main() int num23,*p; int t,i,j,k=10; p=num0; for(i=0;i2;
38、i+) for(j=0;j3;j+) k+; *p=k; for(t=2;t*p;t+) if(!(*pt) j-; *p-; break; *p+; cout*(p-1)end1; return 0; 程序运行后的输出结果是 _ 。(分数:1.00)A.19B.11C.29 D.23解析:解析 本题考核数组与指针的关系。程序首先初始化指针 p,让其指向二维数组 num 的首元素,即 num00。程序中,第 1个 for循环是为二维数组的每行元素赋值而设置的循环,第 2个 for循环是为二维数组的每列元素赋值而设定的,第 3个 for循环是为判断数组元素是否是素数而设置的。在第 3个 for循
39、环中,如果*p 的值能被小于它的数整除(即不是素数),则执行“j-;*p-;”,然后跳出第 3个 for循环。j-的含义是让其前面的赋值语句重新赋值,而*p-的含义是使指针指向前一个单元。语句“*p+;”将指针移到下一个单元,在下一次循环时,k 加 1,并 k赋给*p,看*p 是否为素数,这样一直到满足条件为止,即数组 num23中的数都为素数。最后数组 num中各元素的值分别为大于 10的素数,即分别为:11,13;17,19,23,29。 程序最后要求输出*p 的值,由于此时指针已指向数组 num的最后一个元素,即 num12。所以输出的值是 29。23.有如下函数定义: void fun
40、c(int a,intb+; 若执行代码段: int x=0,y=1; func(x,y); 则变量 x和 y的值分别是_。(分数:1.00)A.0和 1B.1和 1C.0和 2 D.1和 2解析:解析 函数参数的 3种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。本题中实参 x为传值方式,所以 x的值不会改变;y 为引用形参,所以会改变。故本题答案为 C。24.下面的语句中错误的是(分数:2.00)A.int a5;int xa ; B.const int a5;int xa ;C.int n5;int * pnew inta ;D.const int n5;int
41、* pnew inta ;解析:解析 在 C中定义数组时,数组的范围参数在静态定义时必须是一个常数,而在动态分配内存定义时可以是常数,也可以是一个赋了值的参数。故选项 A是错误的定义方法。25.在数据结构中,从逻辑上可以把数据结构分成 _ 。(分数:2.00)A.动态结构和静态结构B.线性结构和非线性结构 C.集合结构和非集合结构D.树状结构和图状结构解析:26.函数定义为 Fun(int i),变量定义 n=100,则下面调用正确的是_。(分数:1.00)A.Fun(20);B.Fun(20+n);C.Fun(n); D.Fun(n);解析:解析 本题考查函数的调用。当函数的参数是引用类型时
42、,参数不能是常量、表达式和变量地址,只能是变量本身。27.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为_。(分数:2.00)A.public B.protectedC.privateD.static解析:解析 类的 public成员可以被类对象通过成员操作符“.”直接访问,protected 和 private成员则不能,而 static不能单独修饰类的成员。28.已知枚举类型声明语句为: enumCOLORWHITE,YELLOW,GREEN=5,RED,BLACK=10; 则下列说法中错误的是(分数:2.00)A.枚举常量 YELLOW的值为 1B.
43、枚举常量 RED的值为 6C.枚举常量 BLACK的值为 10D.枚举常量 WHITE的值为 1 解析:解析 枚举变量中的枚举元素系统是按照常量来处理的。如果没有进行元素赋值操作,那么元素将会被系统从 0开始自动递增地进行赋值操作,但是,如果一旦定义了某一个元素的值,那么系统将对下一个元素进行按前一个元素的值加 1操作,故 wHITE=1,YELLOW=2,GREEN=5,RED=6,BLACK=10。29.有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3() ; class D:publ
44、ic B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是_。(分数:1.00)A.obj.fun1(); B.obj.fun2();C.obj.fun3();D.obj.fun4();解析:解析 本题考查派生类对基类成员的访问属性,基类成员在派生类中的访问属性如下表所示,因此本题选 A, 基类中的属性 继承方式 在派生类中的访问方式 公有成员 公有 保护成员 保护 私有成员 公有继承 不可直接访问 公有成员 保护 保护成员 保护 私有成员 保护继承 不可直接访问 公有成员 私有 保护成员 私有 私有成员 私有继承 不可直接访问 3
45、0.下列描述正确的是_。(分数:1.00)A.表示 mn 为 true或 mn 为 true的表达式为 mnmnB.switch语句结构中必须有 default语句C.if语句结构中必须有 else语句D.如果至少有一个操作数为 true,则包含|运算符的表达式为 true 解析:解析 本题主要考查 C+语言的基本语法,选项 A中应该为 mn|mn;选项 B中 default语句可有可无;选项 C中 if可以单独作为一条语句,不必须和 else搭配。31.下列关于队列的叙述中正确的是(分数:1.00)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表 D.队列是先进后出
46、的线性表解析:解析 队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项 A和选项 B错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项 C正确,选项 D错误。32.下列关于运算符重载的描述中,正确的是(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变运算符的优先级C.运算符重载可以改变运算符的结合性D.运算符重载可以使运算符实现特殊功能 解析:解析 重载后的运算符的优先级和结合性都不会改变,运算符重载进行对原有的运算符进行适当的改造,重载的功能与原有的功能相类似,但是不能改变原运算符的操作对象个数。33.下列关于 goto语句的描述中,正确的是 _ 。(分数:1.00)A.goto语句可在一个文件中随意转向B.goto语句后面要跟一个它所转向的语句C.goto语句可以同时转向多条语句D.goto语句可以从一个循环体内转到循环体外 解析:解析 goto 语句也可以跳出循环和 switch语句,goto 语句无条件地转移程序的执行控制。它总是与一标号相匹配,其形式为:goto 标