ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:58KB ,
资源ID:1331964      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1331964.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】国家二级C++机试(继承和派生)模拟试卷18及答案解析.doc)为本站会员(bonesoil321)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】国家二级C++机试(继承和派生)模拟试卷18及答案解析.doc

1、国家二级 C+机试(继承和派生)模拟试卷 18及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB的下列定义中,正确的是( )。(分数:2.00)A.XB:XB(int a,int b):x(a),y(b)B.XB:XB(int a,int b):XA(a),y(b)C.XB:XB(int a,int b):x(a),XB(b)D.

2、XB:XB(int a,int b)iXA(a),XB(b)2.有如下程序: #includeiostream using namespace std; class BASE public: BASE()coutBASE; ; class DERiVED:public BASE public: DERIVED()toutDERiVED; ; int main()DERIVED x;return 0; 执行后的输出结果是( )。(分数:2.00)A.BASEB.DERIVEDC.BASEDERlJVEDD.DERIVEDBASE3.下列有关继承和派生的叙述中,正确的是( )。(分数:2.00)A

3、.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个描象类4.下列有关类继承的叙述中,错误的是( )。(分数:2.00)A.继承可以实现软件复用B.虚基类可以解决由多继承产生的二义性问题C.派生类构造函数要负责调用基类的构造函数D.派生类没有继承基类的私有成员5.在下列关键字中,不能用来表示继承方式的是( )。(分数:2.00)A.privateB.staticC.publicD.protected6.在类声明中,紧跟在“public:”后声明的成

4、员的访问权限是( )。(分数:2.00)A.私有B.公有C.保护D.默认7.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。(分数:2.00)A.私有继承B.非私有继承C.保护继承D.公有继承8.有如下类定义: class XX int xx; public; XX():xx(0)coutA; XX(int n):xx(n)coutB; ; class YY:public XX int yy; public; YY():yy(0)coutyy; YY(int n):XX(n+1),yy(n)coutyy; YY(int m,int n):XX(m),yy(n)cou

5、tyy; ; 下列选项中,输出结果为 A0的语句是( )。(分数:2.00)A.YY y1(0,0);B.YY y2(1);C.YY y3(0);D.YY y4;9.有如下类定义: class XX int xdata; public; XX(int n=0):xdata(n) ; class YY:public XX int ydata; public; YY(int m=0,int n=0):XX(m),ydata(n) ; YY 类的对象包含的数据成员的个数是( )。(分数:2.00)A.1B.2C.3D.410.下列关于继承方式的描述中,错误的是( )。(分数:2.00)A.如果不显式

6、地指定继承方式,缺省的继承方式是私有(private)B.采用公有继承方式时,基类中的公有成员在派生类中仍是公有成员C.采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D.采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员11.下列代码段声明了 3个类 class Person; class Student:public Person; class Undergraduate:Student; 下列关于这些类之间关系的描述中,错误的是( )。(分数:2.00)A.类 Person是类 Undergraduate的基类B.类 Undergraduate从类 student公

7、有继承C.类 student是类 Person的派生类D.类 Undergraduate是类 Person的派生类12.下列关于基类和派生类关系的叙述中,正确的是( )。(分数:2.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员13.若已定义了类 Vehicle,则下列派生类定义中,错误的是( )。(分数:2.00)A.class Car:vehicle*类体略*;B.class Car:public car*类体略*C.class Car:public Vehic

8、le*类体略*);D.class Car:virtual Public Vehicle*类体略*);14.下列描述中,错误的是( )。(分数:2.00)A.公有继承时基类中的公有成员在派生类中仍是公有成员B.公有继承时基类中的保护成员在派生类中仍是保护成员C.保护继承时基类中的公有成员在派生类中仍是公有成员D.保护继承时基类中的保护成员在派生类中仍是保护成员-15.当派生类继承一个基类时,默认的继承方式为( )。(分数:2.00)A.PublicB.protectedC.privateD.不确定16.下列关于派生类的叙述中,错误的是( )。(分数:2.00)A.派生类至少要有一个基类B.派生类

9、中包括了从基类继承的成员C.一个派生类可以作为另一个派生类的基类D.基类成员被派生类继承以后访问权限保持不变17.有如下类声明: class MyBASE int k; public: void set(int n)k=n; int getoconstreturn k; ; class MyDERIVED:protected MyBASE protected: int j; public: void set(int m,int n)MyBASE:set(m);j=n; int get()constreturn MyBASE:get()+j; ;则类 MyDERIVED中保护的数据成员和成员函数

10、的个数是( )。(分数:2.00)A.4B.3C.2D.118.有如下程序: #includeiostream using namespace std; class Base public: void fun()coutBase:funendl; ; class Derived:public Base public: void fun()_ coutDerived:funend1; ; int main() Derived d; dfun(); return 0; 已知其执行后的输出结果为: Base:fun Derived:fun 则程序中下划线处应填入的语句是( )。(分数:2.00)A.

11、Basefun();B.Base:fun();C.Base-fun();D.fun();19.有如下程序: #includeiostream using namespace std; class Base private: void fun1() constcoutfun1; protected: void fun2() constcoutfun2; public: void fun3() constcoutfun3; ; class Derived:protected Base public: void fun4()constcoutfun4“; ; int main() Derived o

12、bj; objfunl(); objfura(); objfun3(); objfun4(); return 0; 其中有语法错误的语句是( )。(分数:2.00)A.B.C.D.20.在公有继承的情况下,允许派生类直接访问的基类成员包括( )。(分数:2.00)A.公有成员B.公有成员和保护成员C.公有成员、保护成员和私有成员D.保护成员21.有如下类定义: class MyBase int k; public: MyBase(int n=0):k(n) int value()constreturn k; ; class MyDerived:MyBase intj; public: MyDe

13、rived(int i):j(i) int getK()constreturn k; int getJ()constreturn j; ; 编译时发现有一处语法错误,对这个错误最准确的描述是( )。(分数:2.00)A.函数 getK试图访问基类的私有成员变量 kB.在类 MyDerived的定义中,基类名 MyBase前缺少关键字 public、protected 或 privateC.类 MyDerived缺少一个无参的构造函数D.类 MyDerived的构造函数没有对基类数据成员 k进行初始化22.派生类的成员函数不能访问基类的( )。(分数:2.00)A.公有成员和保护成员B.公有成员

14、C.私有成员D.保护成员23.若有如下类定义: class B void fun1() protected: double varl; public: void fun2() ;class D:public B protected: void fun3() ; 已知 obj是类 D的对象,下列句中不违反类成员访问控制权限的是( )。(分数:2.00)A.objfun1();B.objvar1C.objfun2();D.objfun3();24.有如下类声明: class Base protected; int amount; public; Base(int n=0):amount(n) in

15、t getAmount()constreturn amount; ; class。Derived:public Base protected; int value; public; Derived(int m,int n):value(m)Base(n) Int getData()constreturn value+amount; ; 已知 x是一个 Derived对象,则下列表达式中正确的是( )。(分数:2.00)A.xvalue+xgetAmount()B.xgetData()-xgctAmount()C.xgetData()xamountD.Xvalue+xamount25.在一个派生

16、类的成员函数中,试图调用其基类的成员函数“void f();,但无法通过编译。这说明( )。(分数:2.00)A.f()是基类的私有成员B.f()是基类的保护成员C.派生类的继承方式为私有D.派生类的继承方式为保护26.对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是( )。(分数:2.00)A.公有或私有B.私有C.保护或私有D.公有或保护国家二级 C+机试(继承和派生)模拟试卷 18答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.有如下类声明: class XA int x; public:

17、XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB的下列定义中,正确的是( )。(分数:2.00)A.XB:XB(int a,int b):x(a),y(b)B.XB:XB(int a,int b):XA(a),y(b) C.XB:XB(int a,int b):x(a),XB(b)D.XB:XB(int a,int b)iXA(a),XB(b)解析:解析:此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式为:派生

18、类名(构造函数形参表)基类构造函数(形参表)。2.有如下程序: #includeiostream using namespace std; class BASE public: BASE()coutBASE; ; class DERiVED:public BASE public: DERIVED()toutDERiVED; ; int main()DERIVED x;return 0; 执行后的输出结果是( )。(分数:2.00)A.BASEB.DERIVEDC.BASEDERlJVEDD.DERIVEDBASE 解析:解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被

19、执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。3.下列有关继承和派生的叙述中,正确的是( )。(分数:2.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个描象类 解析:解析:此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项 A和 B错误;公有

20、继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项 C错误。4.下列有关类继承的叙述中,错误的是( )。(分数:2.00)A.继承可以实现软件复用B.虚基类可以解决由多继承产生的二义性问题C.派生类构造函数要负责调用基类的构造函数D.派生类没有继承基类的私有成员 解析:解析:此题考查的是类继承。派生类继承了基类的(全部数据成员,私有成员),只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问,故选项 D错误。5.在下列关键字中,不能用来表示继承方式的是( )。(分数:2.00)A.privateB.static C.publicD.protected解析:

21、解析:此题考查的是继承方式。继承方式有私有(private)、保护(protected)、公有(public)三种。6.在类声明中,紧跟在“public:”后声明的成员的访问权限是( )。(分数:2.00)A.私有B.公有 C.保护D.默认解析:解析:类中提供了 3种访问控制的权限:公有,私有和保护。其中公有类型定义了类的外部接口,任何一个外部的访问都必须通过外部接口进行。私有类型的成员只允许本类的成员函数访问,来自类外部的任何访问都是非法的,保护类型介于公有类型和私有类型之间,在继承和派生时可以体现出其特点。7.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。(分

22、数:2.00)A.私有继承 B.非私有继承C.保护继承D.公有继承解析:解析:继承的方式包括三种:公有继承,保护继承和私有继承。如果不显示的给出继承方式,缺省的类继承方式是私有继承 private。8.有如下类定义: class XX int xx; public; XX():xx(0)coutA; XX(int n):xx(n)coutB; ; class YY:public XX int yy; public; YY():yy(0)coutyy; YY(int n):XX(n+1),yy(n)coutyy; YY(int m,int n):XX(m),yy(n)coutyy; ; 下列选项

23、中,输出结果为 A0的语句是( )。(分数:2.00)A.YY y1(0,0);B.YY y2(1);C.YY y3(0);D.YY y4; 解析:解析:考查的是类的继承。选项 A的执行结果为 B0,建立 YY的对象 y1,首先调用其构造函数,YY继承于 XX所以先调用的为 XX的构造函数,根据输入的参数可知输出 B,然后执行 YY的构造函数输出 0;同理,选项 B的执行结果为 Bl,选项 C的执行结果为 B0。9.有如下类定义: class XX int xdata; public; XX(int n=0):xdata(n) ; class YY:public XX int ydata; p

24、ublic; YY(int m=0,int n=0):XX(m),ydata(n) ; YY 类的对象包含的数据成员的个数是( )。(分数:2.00)A.1B.2 C.3D.4解析:解析:因为类 XX包括一个数据成员 xdata,而类 YY继承自类 XX,所在类 YY中也包含数据成员xdata,同时类 YY中也定义了其本身的数据成员 ydata,因而 YY类的对象包含的数据成员的个数是 2。10.下列关于继承方式的描述中,错误的是( )。(分数:2.00)A.如果不显式地指定继承方式,缺省的继承方式是私有(private)B.采用公有继承方式时,基类中的公有成员在派生类中仍是公有成员C.采用保

25、护继承方式时,基类中的保护成员在派生类中仍然是保护成员D.采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员 解析:解析:基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。派生类中的成员不可以访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。11.下列代码段声明了 3个类 class Person; class Student:public Person; class Undergraduate:Student; 下列关于这些类之间关系的描述中,错误的是( )。(分数:2.00)A.类 Person是类 Undergraduate的基类B.类 Undergraduat

26、e从类 student公有继承 C.类 student是类 Person的派生类D.类 Undergraduate是类 Person的派生类解析:解析:Student 类公有继承自 Person类,Undergraduate 类私有继承自 Student类。所以Undergraduate类是从 Student类私有继承的。12.下列关于基类和派生类关系的叙述中,正确的是( )。(分数:2.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员 解析:解析:继承分为单继承和多

27、继承,一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。派生类的数据成员由所有基类的的数据成员与派生类新增的数据成员共同组成。13.若已定义了类 Vehicle,则下列派生类定义中,错误的是( )。(分数:2.00)A.class Car:vehicle*类体略*;B.class Car:public car*类体略* C.class Car:public Vehicle*类体略*);D.class Car:virtual Public Vehicle*类体略*);解析:解析:类 Car不能派生自它本身。14.下列描述中,错误的是( )。(分数:2.00)A.公

28、有继承时基类中的公有成员在派生类中仍是公有成员B.公有继承时基类中的保护成员在派生类中仍是保护成员C.保护继承时基类中的公有成员在派生类中仍是公有成员 D.保护继承时基类中的保护成员在派生类中仍是保护成员-解析:解析:保护继承时基类中的公有成员在派生类中是保护成员。15.当派生类继承一个基类时,默认的继承方式为( )。(分数:2.00)A.PublicB.protectedC.private D.不确定解析:解析:派生类继承一个基类时,默认的继承方式为 private。16.下列关于派生类的叙述中,错误的是( )。(分数:2.00)A.派生类至少要有一个基类B.派生类中包括了从基类继承的成员C

29、.一个派生类可以作为另一个派生类的基类D.基类成员被派生类继承以后访问权限保持不变 解析:解析:派生类对象对基类成员的访问权限:对于公有继承,只有基类的公有成员可以被派生类对象访问,其他(保护和私有)成员不能被访问。对于私有继承和保护继承,基类中所有成员都不能被派生类对象访问。派生类对基类成员的访问权限:对于公有继承,基类中公有成员和保护成员可以访问,而基类中私有成员不能被访问。对于私有继承和保护继承,也是基类中的公有成员和保护成员可以被派生类访问,而基类中的私有成员不能被访问。17.有如下类声明: class MyBASE int k; public: void set(int n)k=n;

30、 int getoconstreturn k; ; class MyDERIVED:protected MyBASE protected: int j; public: void set(int m,int n)MyBASE:set(m);j=n; int get()constreturn MyBASE:get()+j; ;则类 MyDERIVED中保护的数据成员和成员函数的个数是( )。(分数:2.00)A.4B.3 C.2D.1解析:解析:此题考查的是派生与继承中的访问权限。protected 派生:private-不可见;protected-private;public-protecte

31、d。18.有如下程序: #includeiostream using namespace std; class Base public: void fun()coutBase:funendl; ; class Derived:public Base public: void fun()_ coutDerived:funend1; ; int main() Derived d; dfun(); return 0; 已知其执行后的输出结果为: Base:fun Derived:fun 则程序中下划线处应填入的语句是( )。(分数:2.00)A.Basefun();B.Base:fun(); C.B

32、ase-fun();D.fun();解析:解析:此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员函数 fun()的调用语句,此处只能使用作用域运算符“:”才能调用到基类的同名函数,故选项 B正确。19.有如下程序: #includeiostream using namespace std; class Base private: void fun1() constcoutfun1; protected: void fun2() constcoutfun2; public: void fun3() constcoutfun3; ; class Derived:protected Ba

33、se public: void fun4()constcoutfun4“; ; int main() Derived obj; objfunl(); objfura(); objfun3(); objfun4(); return 0; 其中有语法错误的语句是( )。(分数:2.00)A.B. C.D.解析:解析:此题考查的是保护继承。因为 Derived以 protected方式继承了 Base类,所以父类 Base中的公有成员和保护成员均成了 Derived类的保护成员,而 Base类的私有成员 Derived类不可访问。所以,主函数中通过 Derived类的对象只能够访问到 Derived

34、类的公有成员。20.在公有继承的情况下,允许派生类直接访问的基类成员包括( )。(分数:2.00)A.公有成员B.公有成员和保护成员 C.公有成员、保护成员和私有成员D.保护成员解析:解析:此题考查的是派生类对基类成员的访问。基类的成员有公有、保护和私有三种访问属性:类的继承方式也有公有继承、保护继承和私有继承三种。无论那种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。21.有如下类定义: class MyBase int k; public: MyBase(int n=0):k(n) int value()constreturn k; ; clas

35、s MyDerived:MyBase intj; public: MyDerived(int i):j(i) int getK()constreturn k; int getJ()constreturn j; ; 编译时发现有一处语法错误,对这个错误最准确的描述是( )。(分数:2.00)A.函数 getK试图访问基类的私有成员变量 k B.在类 MyDerived的定义中,基类名 MyBase前缺少关键字 public、protected 或 privateC.类 MyDerived缺少一个无参的构造函数D.类 MyDerived的构造函数没有对基类数据成员 k进行初始化解析:解析:此题考查

36、的是派生类对基类成员的访问。因为类中缺省的访问权限是私有,所以本题中MyBase类中定义的成员 k是私有成员。派生类中的成员只能访问基类中的公有成员和保护成员,不能访问基类中的私有成员。所以派生类中函数 getK()中的语句 return k;是非法的。22.派生类的成员函数不能访问基类的( )。(分数:2.00)A.公有成员和保护成员B.公有成员C.私有成员 D.保护成员解析:解析:此题考查的是派生类对基类成员的访问。派生类对基类的各个成员的访问能力与继承方式无关,其成员不能访问基类中的私有成员,可以访问基类的公有成员和保护成员。23.若有如下类定义: class B void fun1()

37、 protected: double varl; public: void fun2() ;class D:public B protected: void fun3() ; 已知 obj是类 D的对象,下列句中不违反类成员访问控制权限的是( )。(分数:2.00)A.objfun1();B.objvar1C.objfun2(); D.objfun3();解析:解析:此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类

38、的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。根据以上分析可知,本题中只有从 B类继承的 fun2()为公有属性,故选 C选项。24.有如下类声明: class Base protected; int amount; public; Base(int n=0):amount(n) int getAmount()constreturn amount; ; class。Derived:public Base protected; int value; public; Derived(int m,i

39、nt n):value(m)Base(n) Int getData()constreturn value+amount; ; 已知 x是一个 Derived对象,则下列表达式中正确的是( )。(分数:2.00)A.xvalue+xgetAmount()B.xgetData()-xgctAmount() C.xgetData()xamountD.Xvalue+xamount解析:解析:此题考查的是派生类对基类成员的访问权限。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员:派生类从基类私

40、有继承时,基类的公有成员和保护成员在派生类中都变成私有成员:派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。25.在一个派生类的成员函数中,试图调用其基类的成员函数“void f();,但无法通过编译。这说明( )。(分数:2.00)A.f()是基类的私有成员 B.f()是基类的保护成员C.派生类的继承方式为私有D.派生类的继承方式为保护解析:解析:在派生类对基类的三种继承形式中,都无法对基类的私有成员访问 A正确。在 B中,三种继承方式都能访问基类的保护成员,故 B不正确。C 选项的情况在 f()是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样 D也不一定正确。26.对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是( )。(分数:2.00)A.公有或私有B.私有C.保护或私有D.公有或保护 解析:解析:通过公有继承定义的派生类,其成员函数可以访问基类的公有成员和保护成员,但不能访问基类的私有成员。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1