1、二级 C+笔试 371 及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列叙述中正确的是(分数:2.00)A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单以及运行结果D.软件包括程序、数据和文档2.设有语句:char str1=“string“,str28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是(分数:2.00)A.strcpy(str1,“Hello1“);B.strcpy(str2, “Hello2“);C.strcpy(str3, “Hell03“);D
2、.strcpy(str4, “Hell04“);3.数据结构分为逻辑结构和存储结构,下列数据结构中不属于存储结构的是(分数:2.00)A.线性链表B.二叉链表C.栈与队列D.循环队列4.下列叙述中正确的是(分数:2.00)A.用 E-R 图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型5.for(int x=0,y=0;!x p=s; q=s+ strlen(s)-1; while (pq) temp=*p; *p=*q; *p=
3、temp; p+; q-; (分数:2.00)A.将一个字符串首尾颠倒B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母9.不能作为函数重载的判断依据的是(分数:2.00)A.constB.返回类型C.参数个数D.参数类型10.下列叙述中正确的是(分数:2.00)A.程序设计过程中的主要工作是编制程序B.程序设计的主要目标是编制出运行结果正确的程序C.不良的程序设计风格会增加程序的复杂性D.上述三种说法都不对11.设栈 S 的初始状态为空。元素 a,b,c,d,e,f 依次通过栈 S,若出栈的顺序为 b,d, c,f,e,a,则栈 S 的容量至少应该为(分数:2
4、.00)A.3B.4C.5D.612.关系表中的每一横行称为一个(分数:2.00)A.元组B.字段C.属性D.码13.有以下程序#include iostreamusing namespace std:class Baseprivate: char c;public: Base(char n) :c(n) Base ( ) coutc; ; class Derived : public Baseprivate: char c;public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main() Derived obj(x); r
5、eturn 0; 执行后的输出结果是(分数:2.00)A.xyB.yxC.xD.y14.有如下程序:#include iostreamusing namespace std;class Baseprivate: char c;public: Base(char n) :c(n) Base() coutc; ;class Derived: public Baseprivate: char c; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main () Derived obj (x); return 0;执行上面的程序
6、净输出(分数:2.00)A.xyB.yxC.xD.y15.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(分数:2.00)A.概要设计B.需求分析C.详细设计D.编程调试16.有如下程序:#include iostreamusing namespace std;class point int x, y;public: point( int vx, int vy ) x = vx; y = vy; point ( ) x = 0; y= 0; point operator+( point p1 ) point p; int px = x+ p1.x; int py = y + p1.y;
7、 return point( px, py ); point operator-( point p1 ) point p; int px = x -p1.x; int py = y - p1.y; return point ( px, py ); void print() coutx“ , “yend1; ;int main () point p1(10, 10 ), p2( 20, 20 ); p1 = p1 - p2; p1.print (); return 0; 执行后的输出结果是(分数:2.00)A.10,10B.20,20C.10,20D.30,3017.若有以下程序:# inclu
8、de iostreamusing namespace std;class Basepublic: Base ( ) x=0; int x;class Derived1 : virtual public Basepublic: Derived1 ( ) x=10; ; class Derived2 : virtual public Basepublic: Derived2 () x=20; ;class Derived : public Derived1,protected Derived2 ;int main() Derived obj; coutobj.xend1; return 0; 该程
9、序运行后的输出结果是(分数:2.00)A.10B.20C.30D.018.有以下程序:#include iostream#include mathusing namespace std;class pointprivate: double x; double y;public: point(double a, double b x=a; y=b; friend double distance (point a, point b ; ;double distance(point a, point b return sqrt(a. x-b. x )*(a. x -b. x )+ (a. x -b.
10、 x)*(a. x-b. x);int main () point p1(1,2); point p2(5,2); coutdistance (p1, p2)end1; return 0; 程序运行后的输出结果是(分数:2.00)A.1B.5C.4D.619.设有以下定义和程序:#includeiostream.hclass A1public: void show1() cout“class A1“endl; ;class A2 : public A1public: void show2() cout“class A2“end1 ;class A3 : protected A2public:
11、void show3() cout“class A1“endl; ;void main() A1 obj1; A2 obj2; A3 obj3; 则以下不合语法的调用语句是(分数:2.00)A.obj1. showl();B.obj2. showl();C.obj3. showl();D.obj2. show2();20.有如下类的定义。空格处的语句是 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
12、B.constC.privateD.不需要填入内容21.设有以下语句,对 a 数组元素的引用中(其中 0=i10)不正确的是 int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(int a;int fun ();int main () extern int a; int b; a = 100; b = fun(); coutbend1; return 0;int fun) extern int a; return (10*a ; 其程序运行后的输出结果是(分数:2.00)A.100B.10C.1000D.1000026.在最坏情况下,下列排序
13、方法中时间复杂度最小的是(分数:2.00)A.冒泡排序B.快速排序C.插入排序D.堆排序27.下列关于 this 指针的叙述中,正确的是(分数:2.00)A.this 指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this 时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this 指针D.this 指针表示了成员函数当前操作的数据所属的对象28.算法的时间复杂度是指(分数:2.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数29.下列关于类中成员函数特征的描述中错误的是(分数:2.00)A.类的成员函数
14、一定是内联函数B.类的成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的30.有如下程序#include iostreamusing namespace std;class basepublic: virtual void f1() cout“F1Base “; virtual void f2() cout“F2Base “; ;class derive: public base void f1() cout“F1Derive “; void f2( int x ) cout“F2Derive “; ;int main() base obj1, * p; derive o
15、bj2; p = p - f1(); p - f2(); return 0; 执行后的输出结果是(分数:2.00)A.F1Derive F2BaseB.F1Derive F2DeriveC.F1Base F2BaseD.F1Base F2Derive31.面向对象程序设计将数据和( )放在一起,作为一个相互依存、不可分割的整体来处理。(分数:2.00)A.对数据的操作B.信息C.数据隐藏D.数据抽象32.关于在调用模板函数时实参的使用,下列表述中正确的是(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实
16、参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略33.以下程序的输出结果是#include iostreamusing namespace std;int main() cout.fill(*); cout.width(5); coushex100end1; return 0;(分数:2.00)A.*100B.*64C.100*D.64*34.下列有关拷贝构造函数的描述中错误的是(分数:2.00)A.拷贝构造函数是一种构造函数B.拷贝构造函数与一般的构造函数一样,可以设置多个形
17、参C.每一个类中都必须有一个拷贝构造函数D.拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象。35.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:2.00)A.6.500000B.6C.5.500000D.6.000000二、B填空题/B(总题数:14,分数:28.00)36.在长度为 n 的线性表中查找一个表中不存在的元素,需要的比较次数为U 【1】 /U。(分数:2.00)填空项 1:_37.在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为U 【2】 /U。(分数:2.00)填空项 1
18、:_38.源程序文档化要求程序应加注释。注释一般分为序言性注释和U 【3】 /U。(分数:2.00)填空项 1:_39.数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于U 【4】 /U。(分数:2.00)填空项 1:_40.在关系运算中,U 【5】 /U运算是在给定关系的某些域上进行的运算。(分数:2.00)填空项 1:_41.若 a=12,b=14,c=0,则表达式“(y=(aB) ?a:B) C) ?y:c”的值为U 【6】 /U。(分数:2.00)填空项 1:_42.下面程序的输出结果为U 【7】 /U。 #include iostream using namespace s
19、td; void initialize(int printNo,int state=0); void initialize(int printNo=1,int state); int main() initialize(); return 0; void initialize(int printNo, int state) coutprintNo“,“stateend1; (分数:2.00)填空项 1:_43.下列程序的输出结果是U 【8】 /U #includeiostream using namespace std; int int main () int a =10; getVar( c
20、outaend1; return 0; (分数:2.00)填空项 1:_44.若有以下程序: #include iostream using namespace std; class Base public: void who()cout“ Base“end1: ; class Derived1: public Base public: void who() cout“Derived“end1; ; int main() Base *p; Derived1 obj1; p= p-who(); return 0; 则该程序运行后的输出结果是U 【9】 /U。(分数:2.00)填空项 1:_45.
21、多态性分为两类:编译时的多态性和U 【10】 /U的多态性。(分数:2.00)填空项 1:_46.C+中,设置虚基类的目的是U 【11】 /U。(分数:2.00)填空项 1:_47.下面程序的输出结果为:Base: fun,请将程序补充完整。 #include iostream.h class Base public: U 【12】 /U fun()cout“Base:fun“end1: class Derived : public Base public: U 【13】 /U fun() cout“Derived:fun“end1; ; int main() Base a,*pb; Deri
22、ved b; pb = pb-fun(); return 0; (分数:2.00)填空项 1:_48.下列程序的输出结果是U 【14】 /U。 #include iostream using namespace std; template typename T T total (T *data) T s = 0; while(*data) s+=*data+; return s; int main() int x=2,4,6,8,0,12,14,16,18; couttotal(x)end1; return 0; (分数:2.00)填空项 1:_49.下面程序的输出结果是U 【15】 /U。
23、#include iostream.h #include math.h class point double x; double y; public: point(double a, double b) x=a; y=b; friend double distance(point a, point b) ; ; double distance(point a, point b) return sqrt (a. x-b.x) * (a. x-b.x)+ (a. y-b. y) * (a. y-b. y) ); void main() point p1(1,2); point p2(5,2); c
24、outdistance(p1,p2)end1; (分数:2.00)填空项 1:_二级 C+笔试 371 答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列叙述中正确的是(分数:2.00)A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单以及运行结果D.软件包括程序、数据和文档 解析:解析 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为: 软件=程序+文档+数据 选项 A、B、C 错误,正确答案是 D。2.设有语句:char str1=“string“,s
25、tr28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是(分数:2.00)A.strcpy(str1,“Hello1“);B.strcpy(str2, “Hello2“);C.strcpy(str3, “Hell03“); D.strcpy(str4, “Hell04“);解析:解析 本题考核函数调用。函数 strcpy 的函数原型为:char* strcpy(char* strDest, const char* strSrC) ;,其功能是复制 strSrc 所有字符到 strDest,并返回 strDest。根据函数 strcpy 的原型可知选项
26、A) ,B) 和 D) 的调用都是正确的。在 C) 选项中,由于指针*str3 没有初始化其字符长度,容易引起访问越界,故是不正确的。3.数据结构分为逻辑结构和存储结构,下列数据结构中不属于存储结构的是(分数:2.00)A.线性链表B.二叉链表C.栈与队列 D.循环队列解析:解析 线性链表是线性表的链式存储结构;二叉链表是二又树的链式存储结构;栈与队列分别是特殊的线性表;循环队列是队列的一种顺序存储结构。可知,线性链表、二叉链表、循环队列均属于存储结构,而栈与队列属于逻辑结构。选项 C 为正确答案。4.下列叙述中正确的是(分数:2.00)A.用 E-R 图能够表示实体集之间一对一的联系、一对多
27、的联系、多对多的联系 B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型解析:解析 用 E-R 图可以简单明了地描述实体及其相互之间的联系,用 E-R 图还可以方便地描述多个实体集之间的联系和一个实体集内部实体之间的联系。所以,选项 A 正确,选项 B 与 C 错误。 为了建立用户所要求的数据库,必须把概念结构(用 E-R 图表示的概念数据模型)转换为某个具体的数据库管理系统所支持的数据模型,这就是逻辑结构设计所要完成的任务。 在已给定数据库管理系统的情况下,数据库的逻辑设计可以分两步来进行
28、:将概念模型转换成一般的数据模型;将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。可知,用 E-R 图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以,选项 D 说法错误。5.for(int x=0,y=0;!x p=s; q=s+ strlen(s)-1; while (pq) temp=*p; *p=*q; *p=temp; p+; q-; (分数:2.00)A.将一个字符串首尾颠倒 B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母解析:解析 本题考核 while 循环语句和指针的使用。在该函数
29、中,循环开始时,指针 p 指向字符串的第 1 个字符,指针 q 指向字符串的最后一个字符,首先交换这两个字符;然后,指针 p 前进一个字符位置(指向下一个字符),指针 q 后退一个字符位置(指向前一个字符);经过若干次循环,条件 pq 将为假(即指针 p 和指针 q 相遇),循环结束。从而实现了将一个字符串首尾颠倒的功能。9.不能作为函数重载的判断依据的是(分数:2.00)A.constB.返回类型 C.参数个数D.参数类型解析:分析 本题考核函数重载。所谓函数重载,是指同一个函数名可以对应多个函数的实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。即重载函数不许具有相同
30、的形参列表。函数的返回类型不能作为函数重载的判断依据。corist 是函数的一部分参与函数的重载10.下列叙述中正确的是(分数:2.00)A.程序设计过程中的主要工作是编制程序B.程序设计的主要目标是编制出运行结果正确的程序C.不良的程序设计风格会增加程序的复杂性 D.上述三种说法都不对解析:解析 程序设计过程中包括很多步骤,编制程序只是其中的一步。所以,选项 A 错误。 程序设计的最终产品是程序,但仅设计和编制出一个运行结果正确的程序是不够的,还应养成良好的程序设计风格。所以,选项 B 错误。 程序设计的根本目标是要降低程序的复杂性和提高程序的可读性。而程序的复杂性主要来自以下两个方面:问题
31、固有的复杂性;不良的设计风格人为增加了程序的复杂性。所以,良好的设计风格对于降低程序的复杂性是很重要的,并且,好的设计风格是好的程序风格的基本保证。选项 C 正确。11.设栈 S 的初始状态为空。元素 a,b,c,d,e,f 依次通过栈 S,若出栈的顺序为 b,d, c,f,e,a,则栈 S 的容量至少应该为(分数:2.00)A.3 B.4C.5D.6解析:解析 根据题中给定的条件,可以作如下的模拟操作:元素 a,b 进栈,栈中有 2 个元素,分别为 a,b;元素 b 出栈后,元素 c, d 进栈,栈中有 3 个元素,分别为 a,c,d;元素 d,c 出栈后,元素 e,f 进栈,栈中有 3 个
32、元素,分别为 a,e,f;最后,元素 f,e,a 出栈,栈为空。 可以看出,进栈的顺序为 a,b,c,d,e,f,出栈的顺序为 b,d,c,f,e,a,满足题目要求。每次进栈操作后,栈中最多有 3 个元素,所以,为了顺利完成这些操作,栈的容量应至少为 3。本题的正确答案为 A。12.关系表中的每一横行称为一个(分数:2.00)A.元组 B.字段C.属性D.码解析:解析 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。关系表中的每一横行称为一个元组。本题的正确答案是 A。13.有以下程序#include iostreamusing namespace std:class Basep
33、rivate: char c;public: Base(char n) :c(n) Base ( ) coutc; ; class Derived : public Baseprivate: char c;public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main() Derived obj(x); return 0; 执行后的输出结果是(分数:2.00)A.xy B.yxC.xD.y解析:解析 本题考核继承与派生中继承基类的数据成员与成员函数。在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函
34、数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反在此题的程序中,在主函数 main结束时,派生类 Derived 对象 obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出 y。14.有如下程序:#include iostreamusing namespace std;class Baseprivate: char c;public: Base(char n) :c(n) Base() coutc; ;class Derived: public Baseprivate: char c
35、; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main () Derived obj (x); return 0;执行上面的程序净输出(分数:2.00)A.xy B.yxC.xD.y解析:解析 在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数 main 结束时,派生类 Derived 对象 obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数
36、,输出 x,然后调用基类的析构函数,输出 y。15.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(分数:2.00)A.概要设计 B.需求分析C.详细设计D.编程调试解析:解析 概要设计的任务是划分出构成系统的各物理元素以及设计出软件的结构(如确定模块及模块间的关系)。设计过程通常分为以下几步:提出可选择方案;选择合理方案;推荐最佳方案;功能分解;设计软件结构;制定测试计划;最后提交概要设计文档。软件功能分解属于概要设计阶段。本题的正确答案为 A。16.有如下程序:#include iostreamusing namespace std;class point int x, y;pub
37、lic: point( int vx, int vy ) x = vx; y = vy; point ( ) x = 0; y= 0; point operator+( point p1 ) point p; int px = x+ p1.x; int py = y + p1.y; return point( px, py ); point operator-( point p1 ) point p; int px = x -p1.x; int py = y - p1.y; return point ( px, py ); void print() coutx“ , “yend1; ;int
38、main () point p1(10, 10 ), p2( 20, 20 ); p1 = p1 - p2; p1.print (); return 0; 执行后的输出结果是(分数:2.00)A.10,10B.20,20C.10,20D.30,30 解析:解析 本题主要考查 C+中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。 程序在类 point 中声明了私有数据成员 int x 和 int y,并定义了两种形式的构造函数以完成对对象的初始化;之后,程序对运算符“+”进行了重载,另其输入参数
39、为类 point 的对象,输出为操作符“+”右侧该对象的私有数据成员 x 和 y 与操作符“+”左侧同类型对象的私有数据成员 x 和 y 的加和:print()函数则输出对象中数据成员的值。 程序 main()函数中,实例化了类 point 的两个对,象 p1 和 p2,并完成对对象的初始化在语句“p1= p1+p2;”中,由于操作符“+”左右两端的操作数为 point 类的对象,复合类point 定义中的操作符“+”的重载函数,因此程序将调用重载后的操作符函数,并返回两 point 对象数据成员的加和值,覆盖对象 p1 的数据成员因此 print()函数输出对象 p1 的数据成员值己应该为:
40、x=10+20=30,y=10+20=3017.若有以下程序:# include iostreamusing namespace std;class Basepublic: Base ( ) x=0; int x;class Derived1 : virtual public Basepublic: Derived1 ( ) x=10; ; class Derived2 : virtual public Basepublic: Derived2 () x=20; ;class Derived : public Derived1,protected Derived2 ;int main() De
41、rived obj; coutobj.xend1; return 0; 该程序运行后的输出结果是(分数:2.00)A.10B.20 C.30D.0解析:解析 本题考核虚基类。本题中,虽然 Derived1 和 Derived2 都是由共同的基类 x 派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x 只存在一份拷贝,不论在类Derived1 修改,还是在类 Derived2 中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obj”时,就会先调用虚基类 Base 的构造函数,使得 x=0,然后执行类 Derived1 的构造函数使得 x=10
42、,再执行类 Derived2 的构造函数,使得 x=20。最后输出 x 的值为 20。18.有以下程序:#include iostream#include mathusing namespace std;class pointprivate: double x; double y;public: point(double a, double b x=a; y=b; friend double distance (point a, point b ; ;double distance(point a, point b return sqrt(a. x-b. x )*(a. x -b. x )+
43、(a. x -b. x)*(a. x-b. x);int main () point p1(1,2); point p2(5,2); coutdistance (p1, p2)end1; return 0; 程序运行后的输出结果是(分数:2.00)A.1B.5C.4 D.6解析:解析 本题考核友元函数的应用。分析程序:类 point 中定义了两个私有成员 x 和 y,以及一个友元函数 distance。从而,函数 distance 可以访问类 point 中的任何成员。在函数 distance 中,返回值为 sqrt (a. x- b. x)*(a. x-b. x)+(a. y-b. y)*(
44、a. y-b. y)。由此可知,函数 distance 的功能是计算 a、b 两点之间的距离。在主函数 main 中,先定义两点:p1(1,2)和 p2(5,2)。然后调用函数distance 计算两点之间的距离为 4,所以程序最后输出为 4。19.设有以下定义和程序:#includeiostream.hclass A1public: void show1() cout“class A1“endl; ;class A2 : public A1public: void show2() cout“class A2“end1 ;class A3 : protected A2public: void
45、show3() cout“class A1“endl; ;void main() A1 obj1; A2 obj2; A3 obj3; 则以下不合语法的调用语句是(分数:2.00)A.obj1. showl();B.obj2. showl();C.obj3. showl(); D.obj2. show2();解析:解析 本题考核派生类的使用以及访问权限问题。C+中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2 是 A1 的公有派生类,A3 是 A2 的保护派生类,所以类 A1 的成员函数 show1()在类 A3 中呈现保护属性,不能通过 A3 类的对象访问。20.有
46、如下类的定义。空格处的语句是 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.privateD.不需要填入内容解析:解析 本题考核静态数据成员和静态成员函数。类的静态成员函数只可以直接访问类中的静态成员,不能直接访问类中的非静态成员。对于上述类的定义,由于在静态成员函数 change()访问了类MyClass 的数据成员 x 和 y,只能把 x 和 y 定义为静态数据成员。21.设有以下语句,对 a 数组元素的引用中(其中 0=i10)不正确的是 int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(int a;int fun ();int main () extern int a; int b; a = 100; b = fun(); coutbend1; r