1、二级 C+-232 及答案解析(总分:62.00,做题时间:90 分钟)一、选择题(总题数:36,分数:62.00)1.类的析构函数的作用是_。(分数:1.00)A.一般成员函数的初始化B.类的初始化C.对象的初始化D.删除类创建的对象2.有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int val: 若有对象定义“Type c1;”,则下列语句序列中,错误的是_。(分数:2.00)A.Type(3)+c1;B.c1+Type(3
2、);C.3-c1;D.c1-3;3.有如下定义: int a5=1,3,5,7,9,*p=a; 下列表达式中不能得到数值 5 的是_。(分数:2.00)A.a2B.a3C.*(p+2)D.*p+44.已知类 Base 和类 Derived 的定义如下: class Base int n; public; Base(int d); n(d) ; class Derived: public Base public: _ ; 其中横线处应为类 Derived 的构造函数的定义。 在下列构造函数的定义中正确的是_。(分数:2.50)A.Derived(int i)Base(i); B.Derived(
3、int i): Base(i); C.Derived(int i)n=i; D.Derived(int i): n=i5.有如下程序: #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; 该程序的输出结果是_。(分数:1.00)A.69825B.63825C.6385D.6938256.假定 AB 为一个类,则执行 AB x;语句时将自动调
4、用该类的(分数:2.00)A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数7.有如下程序: #includeiostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIVED:public BASE public: DERIVED()cout“DERIVED“; ; int main()DERIVED x;return 0; 执行后的输出结果是_。(分数:3.00)A.BASEB.DERJVEDC.BASEDERIVEDD.DERIVEDBASE8.下列关于继承方式的描述中,错误的
5、是_。(分数:1.00)A.如果不显式地指定继承方式,则默认的继承方式是私有 privateB.采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C.采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D.采用保护继承方式时,基类中的公有成员在派生类中仍然是公有成员9.下面程序的运行结果是 #includeiostream,h void fun(int*a,int*b) int X= *a; * a= *b; *b=X; cout *a *b“ “; void main() int x=1, y=2; fun( int fun(int*k) b=*k+b;return(b);
6、 void main() int a10=1,2,3,4,5,6,7,8,i; for(i=2;i4;i+)(b=fun(ai)+b;printf (“%d“,b); printf(“/n“; 程序运行后的输出结果是_。(分数:1.00)A.10 12B.8 10C.10 28D.10 1614.若 PAT 是一个类,则程序运行时,语句“pAT(*ad)3;”调用 PAT 的构造函数的次数是_。(分数:2.50)A.0B.1C.2D.315.有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type op
7、erator+(Type,Type); private: int val; ; 若有对象定义 Type c1;则下列语句序列中,错误的是_。(分数:2.00)A.Type(3)+c1;B.c1+Type(3);C.3-c1;D.c1-3;16.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstreamB.ifstreamC.ofstreamD.iostream17.以下程序的输出结果是_。 main() int a=4,b=5,c=0,d; d=!a coutdendl; (分数:2.50)A.1B.0C.非 0 的数D.-118.下列控制格式输入输出的操作
8、符中,能够设置浮点数精度的是_。(分数:2.50)A.setprecisionB.setwC.setfillD.showpoint19.下列关于输入流类成员函数 getline()的描述中,错误的是_。(分数:2.00)A.该函数是用来读取键盘输入的字符串的B.该函数读取的字符串长度是受限制的C.该函数读取字符串时,遇到终止符便停止D.该函数读取字符串时,可以包含空格20.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。(分数:1.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性C.耦合性是指一个模块内部各个元素间彼此结合的紧
9、密程度D.内聚性是指模块间互相连接的紧密程度21.以下关键字不能用来声明类的访问权限的是 _ 。(分数:1.00)A.publicB.staticC.protectedD.private22.下列描述正确的是_。(分数:1.00)A.表示 mn 为 true 或 mn 为 true 的表达式为 mnmnB.switch 语句结构中必须有 default 语句C.if 语句结构中必须有 else 语句D.如果至少有一个操作数为 true,则包含|运算符的表达式为 true23.有如下程序: #includeiostream using namespace std; class B public:
10、 B(int xx):x(xx)+count;x+=10; virtual void show()const coutcount“_“xendl; protected: static int count; private: int x; ; class D:public B public: D(int xx,int yy):B(xx),y(yy)(+count;y+=100; virtual void show()const coutcount“_“yendl; private: int y; ; int B:count=0; int main() B*ptr=new D(10,20); pt
11、r-show(); delete ptr; return 0; 运行时的输出结果是_。(分数:2.50)A.1_120B.2_120C.1_20D.2_2024.数据库管理系统是_。(分数:1.00)A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统25.数据结构中,与所使用的计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构D.物理和存储结构26.下列关于线性链表的叙述中,正确的是 _ 。(分数:2.00)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间
12、必须连续C.进行插入与删除时,不需要移动表中的元素D.以上三种说法都不对27.概要设计中要完成的事情是 _ 。(分数:2.00)A.系统结构和数据结构的设计B.系统结构和过程的设计C.过程和接口的设计D.数据结构和过程的设计28.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstreamB.ifstreamC.ofstreamD.iostream29.有如下程序: #indudeiostream using namespace std; class A public: A()cout“A“; A()cout“A“; ; class B A*p; public
13、: B()cout“B“;p=new A; B()cout“B“;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA30.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是_。(分数:1.00)A.int operator-(FunNumber);B.FunNumber operator-();C.FunNumber operator-(int);D.int operator-(FunNumber, FunNumber);31.以下有关析构函
14、数的叙述不正确的是(分数:2.00)A.一个类只能定义一个析构函数B.析构函数和构造函数一样可以有形参C.析构函数不允许有返回值D.析构函数名前必须冠有符号“”32.已知有定义 const int D=5; int i=1; double f=032; char c=15; 则下列选项错误的是(分数:1.00)A.+i;B.D-;C.c+;D.-f33.有如下程序: #includeiostream void fun(intx=y;y=t; int main() int a2=23,42; fun(a1,a0); std:couta0“,“a1std:endl; return 0; 执行后的输
15、出结果是_。(分数:2.00)A.42,42B.23,23C.23,42D.42,2334.下列虚基类的声明中正确的是_。(分数:1.00)A.class virtual B:public AB.virtual class B:public AC.class B:public A virtualD.class B:virtual public A35.有如下程序: #includeiostream using namespace std; class TV public: TV(int s=41):size(s) void Print()cout“/“N“size; void Print()
16、constcout“/“C“size; void Print(int s)cout“/“S“size; private: int size; ; int main() TV rooml; const TV room2(54); rooml.Print(); room2.Print(); return 0; 运行时的输出结果是_。(分数:1.00)A./N41/C54B./N41/S54C./C41/N54D./C41/C5436.下列重载函数中,正确的是 _ 。(分数:2.00)A.void fun(int a,float b);void fun(int c,float d)B.void fu
17、n( int a,float b);void fun(float a,int b)C.float fun(int a,float b);int fun(int b,float a)D.int fun(int a,int b);float fun(int a,int b)二级 C+-232 答案解析(总分:62.00,做题时间:90 分钟)一、选择题(总题数:36,分数:62.00)1.类的析构函数的作用是_。(分数:1.00)A.一般成员函数的初始化B.类的初始化C.对象的初始化D.删除类创建的对象 解析:解析 析构函数就是用来释放对象的,它的调用完成之后,对象也就消失了,相应的内存空间也被释
18、放了。2.有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int val: 若有对象定义“Type c1;”,则下列语句序列中,错误的是_。(分数:2.00)A.Type(3)+c1;B.c1+Type(3);C.3-c1; D.c1-3;解析:3.有如下定义: int a5=1,3,5,7,9,*p=a; 下列表达式中不能得到数值 5 的是_。(分数:2.00)A.a2B.a3 C.*(p+2)D.*p+4解析:解析 此题考查的是
19、指针引用数组元素。B 选项中,a3是数组的第四个元素,即 7;其它选项的引用均可得到 5。4.已知类 Base 和类 Derived 的定义如下: class Base int n; public; Base(int d); n(d) ; class Derived: public Base public: _ ; 其中横线处应为类 Derived 的构造函数的定义。 在下列构造函数的定义中正确的是_。(分数:2.50)A.Derived(int i)Base(i); B.Derived(int i): Base(i); C.Derived(int i)n=i; D.Derived(int i
20、): n=i解析:解析 本题考查的是构造函数的定义。构造函数的定义一般为:类名(形参):成员名(表达式)(),根据该公式,可以判断出选择 B。5.有如下程序: #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; 该程序的输出结果是_。(分数:1.00)A.69825B.63825C.6385 D.693825解析:解析 该题需要搞清楚以下几
21、点:定义了一个指针数组 char*p2后,程序中第一个循环“for(i=0;i2;i+)pi=chi”的作用是使指针数组的 p0元素(它本身是一个指针)指向了二维数组ch 的第一行字符串,并使指针数组的 p1元素指向了二维数组 ch 的第二行字符串,这样,就使指针数组p 和二维数组 ch 建立起了一种对应关系,以后对二维数组 ch 的某个元素的引用就有两种等价的形式:chij或 pij。对二维数组 ch 的初始化,使其第一行 ch0中存入了字符串“6937”,第二行ch1中的内容为字符串“8254”。程序中第二个循环中的循环体“s=s*10+pij-“0“”的功能是这样的,每执行一次,将 s
22、中的值乘以 10(即将 s 中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前 pij中的字符量转换为相应的数字,然后把这个数字加到 s 的个位上。注意到内层循环的循环条件 pij“/0“是指 piJ中的字符只要不是字符串结束标志“/0“就继续循环,语句j+=2;是使下标 j 每次增加 2,即一个隔一个地从 pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从 p0所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从 p1所指向的字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果 s 中的值应该
23、是 6385。6.假定 AB 为一个类,则执行 AB x;语句时将自动调用该类的(分数:2.00)A.有参构造函数B.无参构造函数 C.拷贝构造函数D.赋值重载函数解析:解析 当没有显式调用指定形式的构造函数,则系统自动调用无参构造函数,如果没有为类指定此构造函数,则系统自动为其生成一个最简单的无参构造函数。7.有如下程序: #includeiostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIVED:public BASE public: DERIVED()cout“DERIVED“; ;
24、 int main()DERIVED x;return 0; 执行后的输出结果是_。(分数:3.00)A.BASEB.DERJVEDC.BASEDERIVEDD.DERIVEDBASE 解析:解析 此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。8.下列关于继承方式的描述中,错误的是_。(分数:1.00)A.如果不显式地指定继承方式,则默认的继承方式是私有 privateB.采用公有继承方式时,基类
25、中的公有成员在派生类中仍然是公有成员C.采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D.采用保护继承方式时,基类中的公有成员在派生类中仍然是公有成员 解析:解析 不显式的指定继承方式,默认的继承方式是 private,选项 A 正确;采用公有继承方式时,基类的公有成员在派生类中仍然是公有成员,选项 B 正确;采用保护继承方式时,基类的保护成员在派生类中仍然是保护成员,选项 C 正确;采用保护继承方式时,基类的公有成员在派生类中是保护成员,选项D 错误。答案为 D 选项。9.下面程序的运行结果是 #includeiostream,h void fun(int*a,int*b) i
26、nt X= *a; * a= *b; *b=X; cout *a *b“ “; void main() int x=1, y=2; fun( int fun(int*k) b=*k+b;return(b); void main() int a10=1,2,3,4,5,6,7,8,i; for(i=2;i4;i+)(b=fun(ai)+b;printf (“%d“,b); printf(“/n“; 程序运行后的输出结果是_。(分数:1.00)A.10 12B.8 10C.10 28 D.10 16解析:解析 在程序中子函数 fun(int*k)的作用是给静态全局变量加上形参*k 的值。在主函数中
27、进行第一次 for 循环执行时,fun(a2)的返回值为 5,所以 5+5=10,因而输出结果为 10,第二次 for 循环执行时,fun(a3)的返回值为 14,所以 14+14=28。14.若 PAT 是一个类,则程序运行时,语句“pAT(*ad)3;”调用 PAT 的构造函数的次数是_。(分数:2.50)A.0 B.1C.2D.3解析:解析 PAT(*ad)3该表达式表示一个指向类 PAT 的数组的指针,只是声明了该指针,而并没有进行实例化对象,因此该语句运行时并不会调用构造函数。15.有类定义如下: class Type public: Type(int i=0); Type oper
28、ator-(int); friend Type operator+(Type,Type); private: int val; ; 若有对象定义 Type c1;则下列语句序列中,错误的是_。(分数:2.00)A.Type(3)+c1;B.c1+Type(3);C.3-c1; D.c1-3;解析:解析 由于在类 Type 中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3 是正确的,而 3-c1 是错误的表达式。16.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstream B.ifstreamC.ofstreamD.iostream解析:17.
29、以下程序的输出结果是_。 main() int a=4,b=5,c=0,d; d=!a coutdendl; (分数:2.50)A.1 B.0C.非 0 的数D.-1解析:解析 本题考查逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为选项 A。或运算的优先级最高,。其功能是从当前输入位置开始提取字符存入 s 所指向的具有 n 个字节的字符空间中。遇到以下情况时停止:已提取并存储了 n-1 个字符;到流尾,无字符可取;下一个要提取的字符等于结束标志字符 delim。故选项 B、C、D 都是正确的。getline()函数不仅可以用来读取键盘输入的字符串,还可以用来读取文件等数据流,故选
30、项 A 错误。20.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。(分数:1.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度解析:解析 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以 A 错误,B 正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元
31、素间彼此结合的紧密程度,所以 C 与 D 错误。21.以下关键字不能用来声明类的访问权限的是 _ 。(分数:1.00)A.publicB.static C.protectedD.private解析:解析 类的成员访问权限有 3 种:public(公用)、protected(保护)、private(私有)。22.下列描述正确的是_。(分数:1.00)A.表示 mn 为 true 或 mn 为 true 的表达式为 mnmnB.switch 语句结构中必须有 default 语句C.if 语句结构中必须有 else 语句D.如果至少有一个操作数为 true,则包含|运算符的表达式为 true 解析
32、:解析 本题主要考查 C+语言的基本语法,选项 A 中应该为 mn|mn;选项 B 中 default 语句可有可无;选项 C 中 if 可以单独作为一条语句,不必须和 else 搭配。23.有如下程序: #includeiostream using namespace std; class B public: B(int xx):x(xx)+count;x+=10; virtual void show()const coutcount“_“xendl; protected: static int count; private: int x; ; class D:public B public
33、: D(int xx,int yy):B(xx),y(yy)(+count;y+=100; virtual void show()const coutcount“_“yendl; private: int y; ; int B:count=0; int main() B*ptr=new D(10,20); ptr-show(); delete ptr; return 0; 运行时的输出结果是_。(分数:2.50)A.1_120B.2_120 C.1_20D.2_20解析:解析 本题考查派生类构造函数调用、静态成员以及虚函数的使用。题中,定义基类指针 ptr 指针派生类的动态空间。要先调用基类
34、B 的构造函数,coum 自增后为 1,x 的值为 20;再调用派生类 D 的构造函数,count 自增后为 2,y 的值为 120。“ptr-show();”调用的是派生类 D 中的 show()函数,输出count 和 y 的值,分别为 2 和 120。最终输出结果为 2_120。24.数据库管理系统是_。(分数:1.00)A.操作系统的一部分B.在操作系统支持下的系统软件 C.一种编译系统D.一种操作系统解析:解析 数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。25.数据结构中,与所使用的
35、计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构 D.物理和存储结构解析:解析 数据结构概念一般包括 3 个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。26.下列关于线性链表的叙述中,正确的是 _ 。(分数:2.00)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素 D.以上三种说法都不对解析:解析 线性表的链式存储结构称为线性链表。在链式存
36、储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。27.概要设计中要完成的事情是 _ 。(分数:2.00)A.系统结构和数据结构的设计 B.系统结构和过程的设计C.过程和接口的设计D.数据结构和过程的设计解析:解析 软件概要设计的基本任务是:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。28.在 C+中既可以用于文件输入又可以用于文件输出的流类是_。(分数:2.50)A.fstream B.ifstreamC.ofstreamD.iostream解析:29.有如下程序:
37、#indudeiostream using namespace std; class A public: A()cout“A“; A()cout“A“; ; class B A*p; public: B()cout“B“;p=new A; B()cout“B“;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.BAAABAB.ABABAA C.BAABAAD.ABAABA解析:解析 本题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象
38、的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出 A,然后调用子对象的构造函数输出 B,p=new A 再调用类 A 的构造函数输出 A。析构函数的调用顺序和构造函数的调用顺序相反。30.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是_。(分数:1.00)A.int operator-(FunNumber);B.FunNumber operator-();C.FunNumber operator-(int);D.int operator-(FunNumber, FunNumber); 解析:解析 本题考查运算符重载
39、的一些规则:一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;双目运算符=、()、- 不能重载为类的友元函数;类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该运算符函数必须作为一个友元函数来实现。所以答案为 D。3
40、1.以下有关析构函数的叙述不正确的是(分数:2.00)A.一个类只能定义一个析构函数B.析构函数和构造函数一样可以有形参 C.析构函数不允许有返回值D.析构函数名前必须冠有符号“”解析:解析 本题考察析构函数的定义和使用,析构函数不能有形参,也没有返回值,故正确答案应为B。32.已知有定义 const int D=5; int i=1; double f=032; char c=15; 则下列选项错误的是(分数:1.00)A.+i;B.D-; C.c+;D.-f解析:解析 “+”,“-”运算符不能用于常量。33.有如下程序: #includeiostream void fun(intx=y;y
41、=t; int main() int a2=23,42; fun(a1,a0); std:couta0“,“a1std:endl; return 0; 执行后的输出结果是_。(分数:2.00)A.42,42B.23,23 C.23,42D.42,23解析:解析 此题考查是是函数的调用以及参数值的传递。函数 fun 中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。34.下列虚基类的声明中正确的是_。(分数:1.00)A.class virtual B:public AB.virtual class B:public AC.class B:public A virtualD
42、.class B:virtual public A 解析:解析 虚基类说明格式为:virtual继承方式基类名其中,virtual 是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即 class派生类名:Virtua1继承方式基类名。35.有如下程序: #includeiostream using namespace std; class TV public: TV(int s=41):size(s) void Print()cout“/“N“size; void Print() constcout“/“C“size; void Print(int s)cout“/“S“
43、size; private: int size; ; int main() TV rooml; const TV room2(54); rooml.Print(); room2.Print(); return 0; 运行时的输出结果是_。(分数:1.00)A./N41/C54 B./N41/S54C./C41/N54D./C41/C54解析:解析 本题考查构造函数相关知识,本题中定义一个对象 room1,执行 room1.Print 时执行构造函数给 size 赋值为 41,然后执行 void Print() cout“/“N“size;输出/N41。而定义const TV room2(54)时,给 size 赋值为 54,最后输出结果为/C54,所以答案为 A。36.下列重载函数中,正确的是 _ 。(分数:2.00)A.void fun(int a,float b);void fun(int c,float d)B.void fun( int a,float b);void fun(float a,int b) C.float fun(int a,float b);int fun(int b,float a)D.int fun(int a,int b);float fun(int a,int b)解析: