【计算机类职业资格】二级C++-18-2及答案解析.doc

上传人:wealthynice100 文档编号:1324001 上传时间:2019-10-17 格式:DOC 页数:29 大小:118.50KB
下载 相关 举报
【计算机类职业资格】二级C++-18-2及答案解析.doc_第1页
第1页 / 共29页
【计算机类职业资格】二级C++-18-2及答案解析.doc_第2页
第2页 / 共29页
【计算机类职业资格】二级C++-18-2及答案解析.doc_第3页
第3页 / 共29页
【计算机类职业资格】二级C++-18-2及答案解析.doc_第4页
第4页 / 共29页
【计算机类职业资格】二级C++-18-2及答案解析.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、二级 C+-18-2 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构2.支持子程序调用的数据结构是_。(分数:1.00)A栈B树C.队列D.二叉树3.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是_。(分数:1.00)A.10B.8C.6D.44.下列排序方法中,最坏情况下比较次数最少的是_。(分数:1.00)A.冒泡排序B.简单选择排序C.直

2、接插入排序D.堆排序5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:1.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序6.下面叙述中错误的是_。(分数:1.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性7.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。(分数:1.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性C.耦合性是指一个模

3、块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度8.数据库应用系统中的核心问题是_。(分数:1.00)A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训9.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 C 2 1 S A B a 3 b 0 C 2 由关系 R 通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影C.插入D.连接10.将 E-R 图转换为关系模式时,实体和联系都可以表示为_。(分数:1.00)A.属性B键C.关系D域11.字面常量 42、4.2、42L 的数据类型分别是_。(分数:1.00)A

4、.long、double、intB.long、float、intC.int、double、longD.int、float、long12.执行下列语句段后,输出字符“*”的个数是_。 for(int i=50; i1; -i) cout “*“;(分数:1.00)A.48B.49C.50D.5113.有如下程序段: int i=0, j=1; nt / r=j;/ int *p=/ *p=/ 其中会产生编译错误的语句是_。(分数:1.00)A.B.C.D.14.必须用一对大括号括起来的程序段是_。(分数:1.00)A.switch 语句中的 case 标号语句B.if 语句的分支C.循环语句的循

5、环体D.函数的函数体15.下列符号中不属于 C+关键字的是_。(分数:1.00)A.friendB.namespaceC.continueD.byte16.下列有关函数重载的叙述中,错误的是_。(分数:1.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同D.重载函数的参数可以带有默认值17.下列有关运算符重载的叙述中,正确的是_。(分数:1.00)A.运算符重载是多态性的一种表现B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性18.在下列原型所示的 C+函数中,按

6、“传值”方式传递参数的是_。(分数:1.00)A.void f1(int x);B.void f2(int *x);C.void f3(const int *x);D.void f4(int 19.将前缀运算符“- -”重载为非成员函数,下列原型中能正确用于类中说明的是_。(分数:1.00)A.DecrB.Decr operator -(DecrC.friend DecrD.friend Decr operator -(Decr20.有如下函数定义: void func(int a, int b+; 若执行代码段: int x=0, y=1; func(x, y); 则变量 x 和 y 的值分

7、别是_。(分数:1.00)A.0 和 1B.1 和 1C.0 和 2D.1 和 221.下列运算符中,不能被重载的是_。(分数:1.00)A. class A public: static int a; void init() a=1; A(int a=2) init(); a+; ; int A:a=0: A obj; int main() coutobj. a; return 0; 运行时输出的结果是_。(分数:1.00)A.0B.1C.2D.325.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.staticC.protectedD.private26.下

8、列关于派生类构造函数和析构函数的说法中,错误的是_。(分数:1.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数27.派生类的成员函数不能访问基类的_。(分数:1.00)A.公有成员和保护成员B.公有成员C.私有成员D.保护成员28.有如下类定义: class AA int a; Public: AA(int n=0): a(n) ; class BB: public AA public: BB(in

9、t n) ; 其中横线处的缺失部分是_。(分数:1.00)A.: a(n) B.: AA(n) C.a(n);D.a=n;29.有如下程序: #includeiostream using namespace std; class test private: int a; public: test() cout“constructor“endl; test(int a) coutaendl; test(const test cout“copy constructor“endl; test() cout“destructor“endl; ; int main() test A(3); return

10、 0; 执行这个程序的输出结果是_。 A3 B C D (分数:1.00)A.B.C.D.30.若有如下类声明: class MyClass public: MyClass() cout1; ; 执行下列语句 MyClass a, b2, *p2; 程序的输出结果是_。(分数:1.00)A.11B.111C.1111D.1111131.有如下程序: #includeiostream using namespace std; class Point public: static int number; public: Point() number+; Point() number -; ; in

11、t Point:number=0; int main() Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.3B.4C.6D.732.有如下程序: #includeiostream using namespace std; class Sample friend long fun(Sample s); public: Sample(long a) x=a;

12、private: long x; ; long fun(Sample s) if(s. x2)return 1; return s. x*fun(Sample(s. x-1); int main() int sum=0; for(int i=0; i6; i+) sum +=fun(Sample(i); coutsum; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.120B.16C.154D.3433.有如下程序: class Base public: int data; ; class Derivedl: public Base ; class Derived2:

13、protected Base ; int main() Derivedl d1; Derived2 d2; d1. data=0;/ d2. data=0;/ return 0; 下列关于程序编译结果的描述中,正确的是_。(分数:1.00)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编译错误D.皆有编译错误34.有如下程序: #includeiostream using namespace std; class A public: A(int i) x=i; void dispa() coutx“,“; private: int x; ; class B: public A p

14、ublic: B(int i): A(i+10) x=i; void dispb() dispa(); coutxendl; private: int x; ; int main() B b(2); b. dispb(); return 0; 执行这个程序的输出结果是_。(分数:1.00)A.10, 2B.12, 10C.12,2D.2, 235.有如下程序: #includeiostream using namespace std; class Music public: void setTitle(char*str) strcpy(title, str); protected: char

15、type10; private: char title20; ; class Jazz: public Music public: void set(char*str) strcpy(type, “Jazz“);/ strcpy(title, str);/ ; 下列叙述中正确的是_。(分数:1.00)A.程序编译正确B.程序编译时语句出错C.程序编译时语句出错D.程序编译时语句和都出错36.有如下程序: #includeiostrcam using namespace std; class Book public: Book(char* t=“ “) strcpy(title, t); pri

16、vate: char title40; ; class Novel: public Book public: Novel(char* t=“ “): Book(t) char*Category()const return“文学“; ; int main() Book *pb; pb=new Novel(); coutpb-Category(); delete pb; return 0; 若程序运行时输出结果是“文学”,则横线处缺失的语句是_。(分数:1.00)A.char*Category();B.char*Category()const;C.virtual char*Category()co

17、nst;D.virtual char*Category()const=0;37.如下函数模板: templateclass TT square(T x) return x*x; 其中 T 是_。(分数:1.00)A.函数形参B.函数实参C.模板形参D.模板实参38.下列函数模板的定义中,合法的是_。(分数:1.00)A.templatetypename TT abs(T x) return x0? -x: x;B.template classTT abs(T x) return x0? -x: x;C.template Tclass Tabs(T x) return x0? -x: x;D.t

18、emplate T abs(T x) return x0? -x: x;39.在 C+中,cin 是一个_。(分数:1.00)A类B.对象C.模板D.函数40.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是_。(分数:1.00)A.setprecisionB.setwC.setfillD.showpoint二、基本操作题(总题数:1,分数:18.00)41.请使用 VC6 或使用答题菜单打开 proj1 下的工程 proj1,此工程中含有一个源程序文件 proj1. cpp。其中位于每个注释“/ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

19、Constructor called. The value is 10 Copy constructor called. The value is 10 Destructor called. Destructor called. 注意:只修改注释“/ERROR *found*”的下一行语句,不要改动程序中的其他内容。 /proj1. cpp #includeiostream using namespace std; class MyClass public: /ERROR *found* MyClass(int i) value=i; cout“Constructor called.“endl

20、; /ERROR *found* MyClass(const MyClass P) value=P. value; cout“Copy constructor called.“endl: void Print() cout“The value is“valueendl: /ERROR *found* voidMyClass() cout“Destructor called.“endl; private: int value; ; int main() MyClass obj1; obj1. Print(); MyClass obj2(obj1); obj2. Print(); return 0

21、; (分数:18.00)_三、简单应用题(总题数:1,分数:24.00)42.请使用 VC6 或使用答题菜单打开 proj2 下的工程 proj2,其中有矩阵基类 MatrixBase、矩阵类Matrix 和单位阵 UnitMatrix 的定义,还有 main 函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改

22、动程序中的其他内容,也不要删除或移动“/*found*”。 #includeiostream using namespace std; /矩阵基础类,一个抽象类 class MatrixBase int rows, cols; public: MatrixBase(int rows, int cols): rows(rows), cols(cols) int getRows()const return rows;/矩阵行数 int getCols()const return cols;/矩阵列数 virtual double getElement(int r, int c)const=0;/取

23、第 i 个元素的值 void show()const /分行显示矩阵中所有元素 for(int i=0; irows; i+) coutendl; for(int i=0; jcols; j+) /*found* cout_“ “; ; /矩阵类 class Matrix: public MatrixBase double*val; public: /*found* Matrix(int rows, int cols, double m=NULL):_ /*found* val=_; for(int i=0; irows*cols; i+) vali=(m=NULL?0.0: mi); Mat

24、rix() deleteval; double getElement(int r. int c)const return valr*getCols()+c; ; /单位阵(主对角线元素都是 1,其余元素都是 0 的方阵)类 class UnitMatrix: public MatrixBase public: UnitMatrix(int rows): MatrixBase(rows, rows) /单位阵行数列数相同 double getElement(int r, int c)const /*found* if(_)return 1.0; return 0.0; ; int main()

25、MatrixBase*m; double d5= 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7; m=new Matrix(3, 5,(double*)d); m-show(); delete m; coutendl; m=new UnitMatrix(6); m-show(); delete m; return 0; (分数:24.00)_四、综合应用题(总题数:1,分数:18.00)43.请使用 VC6 或使用答题菜单打开 proj3 下的工程 proj3,其中声明的 DataList 类,是一个用于表示数据表的类。DataList 的重载运算符函

26、数 operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个 operator+函数。程序的正确输出应该是: 两个数据表: 1, 2, 3, 4, 5, 6 3, 4, 5, 6, 7, 8 两个数据表之和: 4, 6, 8, 10, 12, 14 要求: 补充编制的内容写在“/*333*”与“/*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out. dat 中。输出函数 writeToFile 已经编译为 obj 文件,并且在本程序中调用。 /DataList. h #incl

27、udeiostream using namespaee std; class DataList /数据表类 int len; double*d; public: DataList(int len, double data=NULL); DataList(DataList int length()const return len; double getElement(int i)const return di; DataList operator+(const DataList/两个数据表求和 void show()const;/显示数据表 ; void writeToFile(char*, c

28、onst DataList /main. cpp #include“DataList. h“ DataList:DataList(int len, double data): len(len) d=new doublelen; for(int i=0; ilen; i+) di=(data=NULL?0.0: datai); DataList:DataList(DataList for(int i=0; ilen; i+) di=data. di; DataList DataList:operator+(const DataList /*333* /*666* return DataList(

29、list. length(), dd); void DataList:show()const /显示数据表 for(int i=0; ilen-1; i+) coutdi“,“; coutdlen-1endl; int main() double s1=1, 2, 3, 4, 5, 6; double s2=3, 4, 5, 6, 7, 8; DataList list1(6, s1), list2(6, s2);/定义两个数据表对象 cout”两个数据表:”endl; list1. show(); list2. show(); coutendl“两个数据表之和:“endl; list1+li

30、st2). show(); writeToFile(“ “, listl+list2); return 0; (分数:18.00)_二级 C+-18-2 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 解析:解析 栈是先进后出的线性表,所以 A 错误;队列是先进先出的线性表,所以 B 错误;循环队列是线性结构的线性表,所以 C 错误。2.支持子程序调用的数据结构

31、是_。(分数:1.00)A栈 B树C.队列D.二叉树解析:解析 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为 A。3.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是_。(分数:1.00)A.10B.8C.6 D.4解析:解析 根据二叉树的基本性质 3:在任意一颗二叉树中,度为 0 的叶子结点总是比度为 2 的结点多一个,所以本题中是 5+1=6 个。4.下列排序方法中,最坏情况下比较次数最少

32、的是_。(分数:1.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序 解析:解析 冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较 n(n-1)/2 次,而堆排序在最坏情况下需要比较的次数是 nlog 2 n。5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。(分数:1.00)A.编译程序B.操作系统C.教务管理系统 D.汇编程序解析:解析 编译软件、操作系统、汇编程序都属于系统软件,只有 C 教务管理系统才是应用软件。6.下面叙述中错误的是_。(分数:1.00)A.软件测试的目的是发现错误并改正错误 B.对被调试的程序进行“错

33、误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性解析:解析 软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项 A 错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为 Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。7.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。(分数:1.00)

34、A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度解析:解析 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以 A 错误,B 正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以 C 与 D 错误。8.数据库应用系统中的核心问题是_。(分数:1.00)A

35、.数据库设计 B.数据库系统设计C.数据库维护D.数据库管理员培训解析:解析 数据库应用系统中的核心问题是数据库的设计。9.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 C 2 1 S A B a 3 b 0 C 2 由关系 R 通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影 C.插入D.连接解析:解析 投影运算是指对于关系内的域指定可引入新的运算。本题中 S 是在原有关系 R 的内部进行的,是由 R 中原有的那些域的列所组成的关系。所以选择 B。10.将 E-R 图转换为关系模式时,实体和联系都可以表示为_。(分数:1.00)A.属性B键C

36、.关系 D域解析:解析 从 E-R 图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R 图中属性也可以转换成关系的属性。11.字面常量 42、4.2、42L 的数据类型分别是_。(分数:1.00)A.long、double、intB.long、float、intC.int、double、long D.int、float、long解析:解析 本题考查整型变量的类型和浮点变量的类型,42 默认为 int 型数据,42 后面加上 L 后,表示 long 型数据,4.2 默认为 double 型数据。12.执行下列语句段后,输出字符“*”的个数是_。 for(int i=50; i1;

37、 -i) cout “*“;(分数:1.00)A.48B.49 C.50D.51解析:解析 本题考查 for 循环语句,- -i 表示用之前先减 1,那么这个 for 循环语句只有 50 到 2 时才会输出“*”,所以总共输出 49 次。13.有如下程序段: int i=0, j=1; nt / r=j;/ int *p=/ *p=/ 其中会产生编译错误的语句是_。(分数:1.00)A. B.C.D.解析:解析 本题考查指针和引用。为引用,使用正确;中 B.void f2(int *x);C.void f3(const int *x);D.void f4(int 解析:解析 函数参数的 3 种

38、传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。其中 B、C 选项都是传递变量指针,D 选项为引用形参,所以本题答案为 A。19.将前缀运算符“- -”重载为非成员函数,下列原型中能正确用于类中说明的是_。(分数:1.00)A.DecrB.Decr operator -(DecrC.friend DecrD.friend Decr operator -(Decr 解析:解析 非成员函数重载用友元函数的形式实现,“- -”运算符重载分为前置和后置两种重载方式。用友元函数来实现“- -”运算符的重载时,前置“- -”运算符的重载的一般格式为:friendtypeoperato

39、r- -(ClassName b+; 若执行代码段: 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。21.下列运算符中,不能被重载的是_。(分数:1.00)A. class A public: static int a; void init() a=1; A(int a=2) init

40、(); a+; ; int A:a=0: A obj; int main() coutobj. a; return 0; 运行时输出的结果是_。(分数:1.00)A.0B.1 C.2D.3解析:解析 本题考查构造函数,本题中对类中的 a 数据成员先是赋值为 0,当定义了对象 obj 时,执行构造函数,将 a 的值变为了 1,所以输出 1。25.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.static C.protectedD.private解析:解析 类的成员访问权限有 3 种:public(公用)、protected(保护)、private(私有)。26.

41、下列关于派生类构造函数和析构函数的说法中,错误的是_。(分数:1.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析 在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。27.派生类的成员函数不能访问基类的_。(分数:1.00)A.公有成员和保护成员B.公有成员C.私有成员 D.保护成员解析:解析 本题考查 3 种继承方式,其中,基类的私有成员始终为基类私有。所以派生类无法访问

42、基类的私有成员。本题答案为 C。28.有如下类定义: class AA int a; Public: AA(int n=0): a(n) ; class BB: public AA public: BB(int n) ; 其中横线处的缺失部分是_。(分数:1.00)A.: a(n) B.: AA(n) C.a(n);D.a=n;解析:解析 本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即 a 为私有变量

43、。所以本题答案为 B。29.有如下程序: #includeiostream using namespace std; class test private: int a; public: test() cout“constructor“endl; test(int a) coutaendl; test(const test cout“copy constructor“endl; test() cout“destructor“endl; ; int main() test A(3); return 0; 执行这个程序的输出结果是_。 A3 B C D (分数:1.00)A.B.C.D. 解析:解

44、析 本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象 A(3),对象带着参数,所以执行带参数的构造函数,输出 3,然后执行析构函数,输出 destructor。所以本题答案为 D。30.若有如下类声明: class MyClass public: MyClass() cout1; ; 执行下列语句 MyClass a, b2, *p2; 程序的输出结果是_。(分数:1.00)A.11B.111 C.1111D.11111解析:解析 本题考查默认构造函数和带参数的构造函数,题目中定义一个对象 a 以及对象数组 b2,共执行 3 次构造函数,对象指针不调用构造函数。所以本题答案为 B。31.有如下程序: #includeiostream using namespace std; class Point public: static int number; public: Point() number+; Point() number -; ; int Point:number=0; int main() Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; delete

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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