1、二级 C+分类模拟 262 及答案解析(总分:62.50,做题时间:90 分钟)一、选择题(总题数:35,分数:62.50)1.for(int x=0,y=0;!x|y=5;y+,x=!x)语句执行的循环次数是 _ 。(分数:2.00)A.0B.7C.6D.无数次2.有如下程序 #includeiostream using namespace std; class A public: virtual void func1()cout“A1“; void func2()cout“A2“; ; class B:public A public: void func1()cout“B1“; void
2、func2()cout“B2“; ; int main() A *p=new B; p-func1(); P-func2(); return 0; 运行此程序,屏幕上将显示输出_。(分数:2.00)A.B1B2B.A1A2C.B1A2D.A1B23.设 n=10,i=4,则赋值运算 n%=i+1 执行后,n 的值是 _ 。(分数:2.00)A.0B.3C.2D.14.在对函数进行原型声明时,下列语法成分中不需要的是_。(分数:1.00)A.函数返回类型B.函数参数列表C.函数名D.函数体5.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是确定程序中错误的位置B.软件调试的主要目的是
3、发现程序中错误的类型C.程序经调试后还应进行测试D.软件的测试与调试工,作最好都由程序编制者来完成6.以下程序的输出结果是_。 int x=5; do cout-x: while(!x);(分数:2.00)A.43210B.5C.4D.无任何输出7.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情
4、况是_。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数8.假定 MyClass 为一个类,则执行 MyClass a,b(2),*p;语句时,自动调用该类构造函数 _ 次。(分数:2.50)A.2B.3C.4D.59.若变量已正确定义,有下列程序段 int a=3,b=5,c-7; if(ab)a=b;c-a; if(c!=a)c=b; printf(“%d,%d,%d/n“,a,b,c); 其输出的结果是_。(分数:2.50)A.程序段有语法错B.3,5,3C.3,5,5D.3,5,710.在计算机中,算法是指_。(分数:1.00)A.查询方法B.
5、加工方法C.解题方案的准确而完整的描述D.排序方法11.若 MyClass 是一个类名,且有如下语句序列 MyClass c1,*c2; MyClass *c3=new MyClass; MyClass 上面的语句序列所定义的类对象的个数是_。(分数:2.00)A.1B.2C.3D.412.有如下数组声明:int value 30;,下标值引用错误的是 _ 。(分数:2.00)A.value30B.value0C.value10D.value2013.下列关于模版的叙述中,错误的是_。(分数:2.50)A.调用模板函数时,有时可以省略模板实参B.函数模板的每个实例就是一个函数定义C.类模板的每
6、个实例就是一个类定义D.类模板的实例是一个类对象14.下列叙述中正确的是(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表15.执行下列语句序列: int i=0;while(125)i+=3;couti; 输出结果是_。(分数:1.00)A.24B.25C.27D.2816.已知枚举类型定义语句为 enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列叙述中错误的是_。(分数:1.00)A.枚举常量 NAME 的值
7、为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 1017.当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为_。(分数:2.00)A.ios base:inB.ios_base:binaryC.ios_base:in|ios_base:outD.ios_base:out18.有如下类定义: class Point private: static int how_many; ; _how_many=0; 要初始化 Point 类的静态成员 how_many,下画线处应填入的内容是_。(分数:1.
8、00)A.intB.static intC.int Point:D.static int Point:19.设有以下定义和程序: #include iostream.h class A1 public: void showl() cout“class A1“end1; ; Class A2 : public A1 public: void show2() cout“Class A2“end1; ; Class A3 : protected A2 public: void show3() cout”Class A 土”end1; ; void main() A1 obj1; A2 obj2; A
9、3 obj3; 则以下不合语法的调用语句是 _ 。(分数:1.00)A.obj1show1();B.obj2show1();C.obj3show1();D.obj2show2();20.有如下程序 #includeiostream.h void main() char ch25=“6937“, “8254“,*p2; int i,j,s=0; for(i=0;i2;i+)pi=chi; for(i=0;i2;i+) for(j=0;pij“/0“;j+=2) s=10*s+pij=“0“; couts; 该程序的输出结果是_。(分数:2.50)A.69825B.63825C.6385D.693
10、82521.有以下程序: #include iostream using namespace std; class count static int n; public: count ( ) n+; static int test() for (int i = 0; i 4; i+ ) n+; return n; ; int count : n = 0; int main() coutcount : test()“ “; count c1, c2; coutcount : test()end1; return 0; 执行后的输出结果是 _ 。(分数:1.00)A.4 10B.1 2C.22D.
11、2422.有如下程序 #includeiostream using namespace std; class Base protected: Base()cout“A“; Base(char C)coutc; ; class Derived:public Base public: Derived(char C)coutc; ; int main() Derived d1(“B“); return 0; 执行这个程序屏幕上将显示输出_。(分数:2.00)ABB.BAC.ABD.BB23.对关系 S 和 R 进行集合运算,产生的元组属于 S 中的元组,但不属于 R 中的元组,这种集合运算称为 _
12、。(分数:2.00)A.并运算B.交运算C.差运算D.积运算24.有以下程序: #includeiostream using namespace std; class A public: A()cout“A“;) ; classBpublic:B()cout“B“; classC:public A B b: public: C()(cout“C“;) ; int main() C obj; return 0; 执行后的输出结果是_。(分数:2.50)A.CBAB.BACC.ACBD.ABC25.以下程序的输出是 _ 。 struct st int x;int *y; *p; int dt4=1
13、0,20,30,40; struct st aa4=50, 则下列叙述中错误的是_。(分数:1.00)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 1028.下列关于函数的描述中,错误的是_。(分数:1.00)A.函数可以没有返回值B.函数可以没有参数C.函数可以是一个类的成员D.函数不能被定义为模板29.执行下列语句: #includeiostream using namespace std; int main() int x=3; if(x=5) coutx+endl; else coutxen
14、dl; return 0; 程序的输出是_。(分数:2.50)A.3B.4C.5D.630.有如下程序: #include using namespace std; class Point int x, y; public: Point(int x1=0, int y1=0):x(x1), y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx, int cy, int r):center(cx, cy), raaius(r) int get()return center
15、.get()+radius; ; int main() Circle c(3, 4, 5); coutc.get() return 0; /c.get() 运行时的输出结果是_。(分数:2.50)A.5B.7C.9D.1231.下列关于 this 指针的叙述中,正确的是 _ 。(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针32.有如下程序; #includelostream using namespace std; void fun(int c=a; a=b; b=c
16、; int main() int x=14, y=20; fun(x, y); coutxy; return 0; 运行后的输出结果是“2020”,则横线处的语句应为_。(分数:1.00)AbB.int bC.int*bD.im class A public: virtual 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-func1(); P-func2();
17、 return 0; 运行此程序,屏幕上将显示输出_。(分数:2.00)A.B1B2B.A1A2C.B1A2 D.A1B2解析:解析 此题考查的是虚函数的概念。此题中,func1 是虚函数,func2 是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句 A*p=new B;定义了一个基类的指针 p,并让它指向一个派生类对象。所以通过该指针调用 func1 时,运行的是派生类的版本,而通过该指针调用 func2运行的是基类的版本。所以程序运行的最后输出是:B1A2。3.设 n=10,i=4,则赋值运算 n%=i+1 执行后,n 的值是 _ 。(分数:2.00)A.0 B.
18、3C.2D.1解析:4.在对函数进行原型声明时,下列语法成分中不需要的是_。(分数:1.00)A.函数返回类型B.函数参数列表C.函数名D.函数体 解析:解析 函数原型中,函数名、函数返回值、函数参数列表是需要的,而函数体在函数声明时不需要。所以答案为 D。5.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是确定程序中错误的位置B.软件调试的主要目的是发现程序中错误的类型C.程序经调试后还应进行测试 D.软件的测试与调试工,作最好都由程序编制者来完成解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。 测试不是为了证明程序是正确的,而是
19、在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。 由于测试的这一特征,一般应当避免由开发者测试自己的程序。 测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试就能发现程序中的所有错误是不可能的,即完全测试是不可能的。 因此,选项 A)与 D)中的说法都是错误的。 调试也称排错。 测试的目的是暴露错误,而调试的目的是发现错误的位置,并改正错误。 经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试:以检查调试的效果,同时也可防止在调试过程中引进新的错误。 因此,选项 B)中的说法也是错误的,而选项 C)中的说法是正确的。6.以下程序的输出
20、结果是_。 int x=5; do cout-x: while(!x);(分数:2.00)A.43210B.5C.4 D.无任何输出解析:解析 先无条件执行一次循环体,前置“-”作用于 x,使得 x 先减 1,再输出;由于 x 非零,故!x为 false,不再执行循环语句。7.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=3;
21、 编译运行这个程序将出现的情况是_。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 此题考查的是函数参数的传递。C+语言中,函数在传递参数时,总是将实参的值传递给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作都不会改变实参的值。8.假定 MyClass 为一个类,则执行 MyClass a,b(2),*p;语句时,自动调用该类构造函数 _ 次。(分数:2.50)A.2 B.3C.4D.5解析:解析 C+在创建一个对象时,会调用类的构造函数。执行 MyClass a b,(2),*p;创建了两个对象 a、b 和指针 p,在
22、创建对象 a 和 b 会调用构造函数,而创建指针 p 时,由于 p 本身不是对象,所以不调用类的构造函数。9.若变量已正确定义,有下列程序段 int a=3,b=5,c-7; if(ab)a=b;c-a; if(c!=a)c=b; printf(“%d,%d,%d/n“,a,b,c); 其输出的结果是_。(分数:2.50)A.程序段有语法错B.3,5,3 C.3,5,5D.3,5,7解析:解析 如果 if 判断条件成立时就执行其后的相关语句,否则不执行,第一个 if 条件 ab 不成立,故不执行“a=b”,接着执行“c=a”,把 a 的值赋给 c 后,此时第二个 if 条件不成立,故不执行其后
23、语句,最终点 c 的值为 3。10.在计算机中,算法是指_。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述 D.排序方法解析:解析 计算机算法是指解题方案的准确而完整的描述,它的基本特征分别是:可行性、确定性、有穷性和拥有足够的情报。11.若 MyClass 是一个类名,且有如下语句序列 MyClass c1,*c2; MyClass *c3=new MyClass; MyClass 上面的语句序列所定义的类对象的个数是_。(分数:2.00)A.1B.2C.3 D.4解析:解析 C1、*C2、C3 是 3 个 MyClass 对象,C4 是 MyClass 对象的引用
24、,它是对象 C1 的别名。12.有如下数组声明:int value 30;,下标值引用错误的是 _ 。(分数:2.00)A.value30 B.value0C.value10D.value20解析:13.下列关于模版的叙述中,错误的是_。(分数:2.50)A.调用模板函数时,有时可以省略模板实参B.函数模板的每个实例就是一个函数定义C.类模板的每个实例就是一个类定义 D.类模板的实例是一个类对象解析:解析 模板可以看作一种高级宏。通过一次实例化模板可以得到一个类。模板和类的关系类似于类和对象的关系。但是一个类可以实例化多次,就是说一个类可以生成多个对象,只要给出的参数相同,所生成的对象在那一刻
25、的内部状态就是一样的。但是模板只能用一套参数实例化一次。14.下列叙述中正确的是(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式 D.一个关系可以包括多个二维表解析:解析 本题考查数据库的关系模型。关系模型的数据结构是一个“二维表”,每个二维表可称为一个关系,每个关系有一个关系名。表中的一行称为一个元组;表中的列称为属性,每一列有一个属性名。表中的每一个元组是属性值的集合,属性是关系二维表中最小的单位,它不能再被划分。关系模式是指一个关系的属性名表,即二维表的表框架。因此,选项 C 的
26、说法是正确的。15.执行下列语句序列: int i=0;while(125)i+=3;couti; 输出结果是_。(分数:1.00)A.24B.25C.27 D.28解析:解析 本题考查循环语句 while 的使用。i 为 3 的倍数,当 i=24 时,i25,执行 while 的循环体 i+=3,则 i=27,不满足 i25 的条件,结束循环。16.已知枚举类型定义语句为 enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则下列叙述中错误的是_。(分数:1.00)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为 1C.枚举常量 M
27、INUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析 本题考查 C+语言的数据类型。第一个枚举常量的值为 0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增 1。17.当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为_。(分数:2.00)A.ios base:inB.ios_base:binaryC.ios_base:in|ios_base:outD.ios_base:out 解析:解析 对于 ofstream,默认的打开方式是 ios_base:out,ofstream 只能用于输出,它没有
28、提供任何用于输入的操作。18.有如下类定义: class Point private: static int how_many; ; _how_many=0; 要初始化 Point 类的静态成员 how_many,下画线处应填入的内容是_。(分数:1.00)A.intB.static intC.int Point: D.static int Point:解析:解析 本题考查静态数据成员,静态数据成员可以初始化,但只能在类体外进行初始化,其一般形式为:数据类型类名:静态数据成员名=初值。所以本题答案为 C。19.设有以下定义和程序: #include iostream.h class A1 pu
29、blic: void showl() cout“class A1“end1; ; Class A2 : public A1 public: void show2() cout“Class A2“end1; ; Class A3 : protected A2 public: void show3() cout”Class A 土”end1; ; void main() A1 obj1; A2 obj2; A3 obj3; 则以下不合语法的调用语句是 _ 。(分数:1.00)A.obj1show1();B.obj2show1();C.obj3show1(); D.obj2show2();解析:解析
30、 C+中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2 是A1 的公有派生类,A3 是 A2 的保护派生类,所以类 A1 的成员函数 showl()在类 A3 中呈现保护属性,不能通过 A3 类的对象访问。20.有如下程序 #includeiostream.h void main() char ch25=“6937“, “8254“,*p2; int i,j,s=0; for(i=0;i2;i+)pi=chi; for(i=0;i2;i+) for(j=0;pij“/0“;j+=2) s=10*s+pij=“0“; couts; 该程序的输出结果是_。(分数:2.50
31、)A.69825B.63825C.6385 D.693825解析:解析 该题主要要搞清楚以下几点:定义了一个指针数组 char*p2后,程序中第一个循环“for(i=0;i2;i+)pi=chi”的作用是使指针数组的 p0元素(它本身是一个指针)指向了二维数组ch 的第一行字符串,并使指针数组的 p1元素指向了二维数组 ch 的第二行字符串,这样,就使指针数组p 和二维数细 ch 建立起了一种对应关系,以后对二维数组 ch 的某个元素的引用就有两种等价的形式:chij或 pij。对二维数组 ch 的初始化,使其第一行 ch0中存入了字符串“6937”,第二行ch1中的内容为字符串“8254”。
32、程序中第二个循环中的循环体“s=s*10+pij=“0“”的功能是这样的,每执行一次,将 s 中的值乘以 10(即将 s 中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前 pij中的字符量转换为相应的数字,然后把这个数字加到 s 的个位上。注意到内层循环的循环条件 pij“/0“是指 pij中的字符只要不是字符串结束标志“/0“就继续循环,语句j+2;是使下标 j 每次增加 2,即一个隔一个地从 pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从 p0所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从 p1所指向的字符串“8254”
33、中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果 s 中的值应该是 6385。21.有以下程序: #include iostream using namespace std; class count static int n; public: count ( ) n+; static int test() for (int i = 0; i 4; i+ ) n+; return n; ; int count : n = 0; int main() coutcount : test()“ “; count c1, c2; coutcount : test()end1;
34、 return 0; 执行后的输出结果是 _ 。(分数:1.00)A.4 10 B.1 2C.22D.24解析:解析 程序首先定义了类 count,其内部含有 private 类型数据成员“static int n;”,同时含有 public 类型构造函数 count()和静态成员函数 static int test(),这两个函数的功能分别是为对象申请系统资源并将静态数据成员 n 加 1 和将静态数据成员 n 加 4。主函数前,程序将静态数据成员 n 初始化为 0,该数据成员为所有类 count 的对象所共有的数据成员。主函数中,程序首先执行静态成员函数test()(由于 test 声明为
35、static,因此其调用时无需通过具体对象)。而其执行过程中,静态数据成员 n应该加 4 变成 n=4,因此此处输出为 4。此后程序创建对象 c1 和 c2,由于在每次创建过程中都要调用构造函数 count(),而每次调用 count()函数后,静态数据成员 n 值都会加 1,因此,创建两个对象之后,n值变为 n=6;再次执行 test()函数后,n 的值再次加 4,此时变为 n=6+4=10。故程序全部执行后,变量 n值变为 10,而中间程序输出为“4 10”。22.有如下程序 #includeiostream using namespace std; class Base protecte
36、d: Base()cout“A“; Base(char C)coutc; ; class Derived:public Base public: Derived(char C)coutc; ; int main() Derived d1(“B“); return 0; 执行这个程序屏幕上将显示输出_。(分数:2.00)ABB.BAC.AB D.BB解析:解析 此题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序是:执行基类的构造函数,调用顺序按照各个基类被被继承时声明的顺序;执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序;执行派生类的构造函数。此题中,在建立派生
37、类 Derived 的对象 d1 时会先调用基类 Base 的构造,调用的是默认构造函数,输出字符A;然后调用自身的构造函数,输出B;故程序的输出结果是:AB。23.对关系 S 和 R 进行集合运算,产生的元组属于 S 中的元组,但不属于 R 中的元组,这种集合运算称为 _ 。(分数:2.00)A.并运算B.交运算C.差运算 D.积运算解析:24.有以下程序: #includeiostream using namespace std; class A public: A()cout“A“;) ; classBpublic:B()cout“B“; classC:public A B b: pub
38、lic: C()(cout“C“;) ; int main() C obj; return 0; 执行后的输出结果是_。(分数:2.50)A.CBAB.BACC.ACBD.ABC 解析:解析 本题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。25.以下程序的输出是 _ 。 struct st int x;int *y; *p; int dt4=10,20,30,40; struct st aa4=50, 则下列叙述中错误的是_。(分数:1.00)A.枚举常量 NAME 的值为 1 B.枚举常量 NUMBER 的值为
39、1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:解析 本题考查 C+语言的数据类型。第一个枚举常量的值为 0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增 1。28.下列关于函数的描述中,错误的是_。(分数:1.00)A.函数可以没有返回值B.函数可以没有参数C.函数可以是一个类的成员D.函数不能被定义为模板 解析:解析 本题考查函数的基础知识,函数可以没有返回值,没有参数,也可以是一个类的成员,函数可以定义为模板,即模板函数。29.执行下列语句: #includeiostream using namespac
40、e std; int main() int x=3; if(x=5) coutx+endl; else coutxendl; return 0; 程序的输出是_。(分数:2.50)A.3B.4C.5 D.6解析:解析 if条件语句 1 else 语句 2,语句的执行过程是:首先判断条件是否为真(不为 0),为真则执行语句 1,否则执行语句 2。题目中的条件是 x=5,意思是把 5 赋予变量 x,它将 x 置 5 且返回一个真值。30.有如下程序: #include using namespace std; class Point int x, y; public: Point(int x1=0
41、, int y1=0):x(x1), y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx, int cy, int r):center(cx, cy), raaius(r) int get()return center.get()+radius; ; int main() Circle c(3, 4, 5); coutc.get() return 0; /c.get() 运行时的输出结果是_。(分数:2.50)A.5B.7 C.9D.12解析:解析 本题考查的知识点是
42、类的继承和派生。类的继承是新的类从已有类那里得到已有的特性,如数据成员、成员函数等。类的派生是从已有的类产生新类的过程。在继承过程中,原有的类或已经存在的用来派生新类的类成为基类或父类,而由已经存在的类派生出的新类则称为派生类或子类。派生类具有基类的数据成员和成员函数,同时增加了新的成员。31.下列关于 this 指针的叙述中,正确的是 _ 。(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针 解析:解析 本题考查 this 指针的使用。类的每一个成员函数都有一个隐含的常
43、量指针,即 this 指针。类的静态成员函数不能含有 this 指针,因为 this 指针是一个指向本对象的指针。32.有如下程序; #includelostream using namespace std; void fun(int c=a; a=b; b=c; int main() int x=14, y=20; fun(x, y); coutxy; return 0; 运行后的输出结果是“2020”,则横线处的语句应为_。(分数:1.00)AbB.int b C.int*bD.im&b解析:解析 C+中,函数的参数必须指定类型,选项 A 错误;C+中,函数的参数默认是按值传递的,观察程序
44、可知,在函数 fun 中,由于 fun 函数的第一个参数为引用类型,所以 x 值被改变为 y 的值,由于程序输出 x、y 的值均为 20,所以 y 的值并没有在调用 fun 的过程中被改变,所以 fun 函数的第二个形参类型不能为引用类型,选项 D 错误;由于 fun 函数中,形参 a、b 与整型变量 c 之间可以相互赋值,所以b 不可能为指针类型,选项 C 错误;对于选项 B,由于函数参数按值传递,所以形参 b 的改变,不会影响实参 y 的值,选项 B 正确。33.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载函数B.内联函数 C.静态函数D.虚
45、函数解析:解析 内联 inline 函数就是取代宏定义的,在编译时展开,插入到相应的位置,从而减少了系统开销,加快了执行速度。虚函数则是为了取消二义性现象,静态函数则是一个类所有对象的共享函数。34.关于二义性的描述错误的是 _ 。(分数:1.00)A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性B.解决二义性可以用对成员名的限定法C.父类和子类中同时出现同名函数,也可能存在二义性 D.一个子类是从两个父类派生出来的,而这两个父类只有一个共同的父类,对该父类成员进行访问时,可能出现二义性解析:35.下列选项中合法的用户标识符是 _ 。(分数:2.00)A.10ngB.2Test C.3DmaxD.dat解析:解析 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31 个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合这些要求的只有选项 B。