c++题库(69页).doc

上传人:1595****071 文档编号:35361225 上传时间:2022-08-21 格式:DOC 页数:69 大小:1.94MB
返回 下载 相关 举报
c++题库(69页).doc_第1页
第1页 / 共69页
c++题库(69页).doc_第2页
第2页 / 共69页
点击查看更多>>
资源描述

《c++题库(69页).doc》由会员分享,可在线阅读,更多相关《c++题库(69页).doc(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-c+题库-第 69 页假定 AB 引用是某个变量的别名,对引用的操作就是对被引用变量的操作。A. 对B. 错假定 AB 为一个类,则执行 AB x; 语句时将自动调用该类的无参构造函数。A. 对B. 错构造函数用来初始化类的新对象,构造函数与类同名,返回类型只能为void。A. 对B. 错用new动态分配的内存是在堆中分配的,而不是在栈中分配的。A. 对B. 错使用关键字class定义的类中缺省的访问权限是私有(private)的。A. 对B. 错在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。A. 对B. 错C+语言的标识符是不区分大小写的。A. 对B. 错作用域运算符(:)

2、只能用来限定成员函数所属的类。A. 对B. 错声明对象时,类名前面不需要加class关键字。A. 对B. 错C+程序一般应当含有main函数,它是C+程序执行的入口。A. 对B. 错可以在类的构造函数中对静态数据成员进行初始化。A. 对B. 错C+语言中,既允许单继承,又允许多继承。A. 对B. 错派生类的继承方式有两种:公有继承和私有继承。A. 对B. 错多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。A. 对B. 错类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。A. 对B. 错构造函数和析构函数都不能重载。A. 对B. 错在基

3、类中被声明为虚函数的类的成员函数必须在每个派生类中显式声明为虚函数,才能具有多态的特征。A. 对B. 错关于运算符重载,运算符函数的返回类型不能声明为基本数据类型。A. 对B. 错将类的一个对象赋值给该类的另一个对象时,调用拷贝构造函数。A. 对B. 错模板可以使程序对任何数据类型进行同样方式的处理。A. 对B. 错1. 编译源文件后产生的文件是( )。A. 目标文件B. 可执行文件C. 源文件D. 头文件2. 每个C+程序只能有一个()。A. 全局变量B. 函数C. 头文件D. 主函数3. 使用内联函数的好处是()。A. 增加函数调用次数B. 提高代码执行效率C. 减少代码量,增强代码可读性

4、D. 隐藏内部实现4.下列不是函数重载所要求的条件是()。A. 函数名相同B. 函数返回值类型不同C. 参数类型不同D. 参数个数不同5. 下列哪两个函数为重载函数()。A. void a1(), void a2()B. intb(int x), float b(int x)C. char c(double y), char c(int y, double z)D. bool d(double y), bool d(double y, int x = 0)6. 在面对对象方法中,实现信息隐蔽依靠的是()。A. 对象的封装B. 对象的继承C. 对象的多态D. 对象的分类7. 所谓数据封装就是将一

5、组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()。A. 类B. 对象C. 函数体D. 数据块8. 下列关于类定义的说法中,正确的是()。A. 在类里定义的函数为内联函数B. 类成员的默认访问权限是保护的C. 数据成员必须被声明为私有的D. 成员函数只能在类体外进行定义9. 关于类和对象不正确的说法是()。A. 类是一种类型,它封装了数据和操作B. 对象是类的实例C. 一个类的对象只有一个D. 一个对象必属于某个类10. 结构体中定义的成员默认的访问属性为()。A. publicB. privateC. friendD. protected11.类中定义的成员默认的访问属性为

6、()。A. publicB. privateC. friendD. protected12. 有关构造函数的叙述不正确的是()。A. 构造函数名必须和类名一致B. 构造函数在定义对象时自动执行C. 构造函数无任何函数类型D. 在一个类中构造函数有且仅有一个13. 下列关于析构函数的描述中,错误的是()。A. 析构函数可以重载B. 析构函数由系统自动调用C. 每个对象的析构函数只被调用一次D. 每个类都有析构函数14. 通常拷贝构造函数的参数是()。A. 对象名B. 对象的成员名C. 对象的引用名D. 对象的指针名15. 在类外定义成员函数时,需要在函数名前加上()。A. 类名B. 对象名C.

7、作用域运算符D. 类名和作用域运算符16. 在类定义中,为说明成员的访问权限,private, protected,public可以出现次数()。A. 次数没有具体限制B. 每种至多一次C. public至少一次D. 每种至少一次17. 关于静态数据成员的描述中错误的是()。A. 类的静态数据成员是该类所有对象所共享的B. 类的静态数据成员在在该类每个对象中都保留一个备份C. 类的静态数据成员必须进行初始化D. 类的静态数据成员可以不通过对象来访问18. 若一个类的数据成员用 const 关键字修饰,则该数据成员()。A. 静态函数中可以对该成员赋值B. 构造函数只能通过初始化列表对该成员初始

8、化C. 任何函数都不能使用该成员D. 外部函数可以对该成员赋值19. 有两个类 X和Y,且 Y 有一个构造函数 Y:Y(X x); 那么以下语句:X a;Yb(a);不会调用下面的哪个函数( )。A. Y的构造函数Y(X x)B. Y的拷贝(复制)构造函数C. X的默认构造函数D. X的拷贝(复制)构造函数20. 已知类 A 的定义。假设 x 为 A 的对象,则在类外访问 x 对象中数据成员a和b分别应采用()。class A private: int a;public: int getValue() return a; int b;A. x:getValue(), x:bC. x.a(),

9、x.b()21. 假设程序中先前已经定义了 A、B、C 三个类,他们的构造函数分别会输出A constructed、B constructed 和C constructed,那么又定义了类 D,并在 main 函数中定义了一个D 类的对象,部分代码如下:class Dpublic: D():a(), b(), c() private: A a; B b; C c;intmain() D d; return 0;程序的输出结果为( )。A. A constructed B constructed C constructedB. C constructed B constructed A cons

10、tructedC. 编译错误D. 编译器决定22. 已知类 CA 中的某个成员是类 CB 的对象,若要把这两个类定义在同一个文件中,则()。A. CA必须定义在CB之前B. CB必须定义在CA之前C. 若CA定义在CB之后,则CA的声明必须出现在CB的定义之前D. 若CB定义在CA之后,则CB的声明必须出现在CA的定义之前23. 在设计一个类的时候,如果希望允许一个不属于该类的函数访问该类的私有成员,应该使用哪个关键字()。A. publicB. privateC. friendD. protected24. 关于友元函数的描述中,错误的是()。A. 友元函数是成员函数B. 友元函数能访问类中

11、私有成员C. 友元函数破坏封装性D. 友元函数声明在类体内25. 如果类 A 是类 B 的友元,则()。A. 类A的成员是类B的成员B. 类B的成员是类A的成员C. 类A的成员函数可以访问类B的私有成员D. 类B是类A的友元26. 已知类 A 是类 B 的友元类,类 B 是类 C 的友元类,则()。A. 类A一定是类C的友元B. 类C一定是类A的友元C. 类C的成员函数可以访问类B的对象的任何成员D. 类A的成员函数可以访问类B的对象的任何成员27. 已知Point类含有无参(默认)构造函数和有参构造函数,使用Point a3 = Point(1, 2), Point(3,4), Point(

12、) ; 时,调用了()次Point类的无参(默认)构造函数。A. 1B. 2C. 3D. 428. 要定义一个引用变量p使之引用类MyClass的一个对象,正确的定义语句是()。A. MyClass p=MyClass;B. MyClass p=new MyClass;C. MyClass&p=new MyClass;D. MyClass a,&p=a;29. 关于this指针的说法不正确的是()。A. 不能在程序中修改this指针B. this指针可以给其他指针赋值,但不能修改this指针C. 静态成员函数中没有this指针D. this指针可以被赋值30. 关于C+的动态存储分配,下列说法

13、正确的是()。A. new和delete是C+语言中专门用于动态内存分配和释放的函数B. 动态分配的内存空间也可以被初始化C. 当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D. 当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new31. 观察程序#includeusing namespace std;int main() int *first, *second;first = new int5;second = first;delete second; delete first;return 0;该程序是否正确,原因是什么 ?A. 正确,因为f

14、irst和second都是独立的指针变量B. 不正确,因为first和second是相关而非独立的指针变量C. 正确,second会拷贝first的内容D. 不正确,second和first指向相同的内容32. C+中,不能被派生类继承的有()。A. 析构函数B. 虚函数C. 静态成员函数D. 友元函数33. 下列关于派生类的叙述中,错误的是()。A. 派生类至少要有一个基类B. 派生类中包括了从基类继承的成员C. 一个派生类可以作为另一个派生类的基类D. 基类成员被派生类继承以后访问权限保持不变34. 下列关于类型转换正确的是()。A. 基类的对象可以被当作公有派生类对象使用B. 派生类对象

15、必须显式的转换为基类对象C. 派生类对象可以初始化基类的引用D. 基类的指针可以隐含转换为派生类的指针35. 下列关于虚基类的描述中,错误的是()。A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明“classB:virtual public A”说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数36. 以下说法正确的是()。A. 同一个运算符可以被重载多次B. 可以通过运算符重载来创建C+中原来没有的运算符C. 自增运算符重载时,重载函数不允许有输入参数D. 运算符函数的返回类型不能声明为基本数据类型37. 若A是一个类名

16、,则如下语句将会产生的A对象个数为()。A a1,*a2;A *a3= new A();A& a4 = a1;A. 1B. 2C. 3D. 438. 类C2是类C1的派生类,下列说法中错误的是()。A. C1的成员都是C2的成员B. C2的对象可以赋值给C1的变量C. C1的友元函数都是C2的友元函数D. 创建C2的对象时,要执行C1的构造函数39. 若类A和类B都是类模板T的模板类,则以下说法正确的是()。A. A的友元函数中,可以访问B的私有成员B. A的对象可以赋值给B类型的变量C. A和B共享T的静态成员变量D. A的成员函数中,不能访问B的私有成员40.若类B是从类A派生而来,而语句

17、 p.Do(); 在被多次执行时,有的时候调用的是类A的Do成员函数,有的时候调用的是类B的Do成员函数,那么 p 的类型可以是()。A. A &B. A *C. BD. A41. 将一个对象放入STL中的容器里时,()。A. 实际上被放入的是该对象的一个拷贝(副本)B. 实际上被放入的是该对象的指针C. 实际上被放入的是该对象的引用D. 实际上被放入的就是该对象自身42. 以下说法正确的是()。A. 在multiset容器中,可以同时存储多个相同的元素B. 在set容器中,各元素的存储位置取决于它们的插入顺序C. 向deque容器添加新对象时,需要比较对象的大小D. 在list容器中,各元素

18、的存储位置取决于它们的值43. 若有如下定义:set:iterator it1, it2, it3;set s;则以下语句不符合语法的是( )。A. it1+;B. -it2;C. it3 = it1 + 1;D. boolisEnd = (it1 = s.end();44. 关于函数对象,如下说法中正确的是()。A. 如果一个类重载了“()”运算符,该类的对象是函数对象B. 如果一个类定义了函数指针成员变量,则该类的对象是函数对象C. 函数对象类中只能定义成员函数,不能定义成员变量D. 函数对象类只能定义一个函数对象45. 有如下两个类定义:class AA ;class BB AA v1,

19、 *v2; BB v3; int v4;其中有一个成员变量的定义是错误的,这个变量是( )。A. v1B. v2C. v3D. v446. 对于如下代码,请指出错误的代码行号是( )。1 classA2 public:3 A(inta = 0) 4 x = a;5 6 staticvoidf1() 7 x+;8 ;9 private:10 intx;11 staticinty;12 ;A. 3B. 4C. 7D. 1147. 对于如下代码1 classB2 public:3 voidf()4 voidg()f();5 6 classD:publicB7 public:8 voidf()9 vo

20、idg()B:f()10 11 intmain()12 Bb,pb=&b;13 Dd,pd=&d;14 b.f();15 pd-f();16 return0;17 其中第14行代码和第15行代码分别调用的是( )。A. B:f()与D:f()B. B:f()与B:f()C. D:f()与D:f()D. D:f()与B:f()48. 以下程序的输出结果是()。#includeusing namespace std;class A public: A(int a1, int a2):a1(a1), a2(a2) void print(); void print() const;private: i

21、nt a1, a2;void A:print() cout a1 ;void A:print()const cout a2 ;int main() A a(1, 2); const A b(1, 2); a.print(); b.print(); return 0;A. 1 1B. 1 2C. 2 1D. 2 249. 有如下程序:#includeusing namespace std;class A private: int a;public: A(int a = 0):a(a) cout 1; A(A &x) a = x.a; cout 2; A() cout a; int get_a()

22、 return a;int main() A d1(5), d2(d1); A *pd = new A(8); cout get_a(); delete pd; return 0;程序运行时的输出结果是( )。A. 12185B. 1215588C. 128512D. 121885550. 有如下程序:#includeusing namespace std;class A public: void setA(int);private: int a;class B public: void setB(int);private: int b;class C:public A,private B p

23、ublic: void setC(int, int, int);private: int c;void A:setA(intx) a = x;void B:setB(intx) b = x;void C:setC(int x, int y, int z) setA(x); setB(y); c = z;int main() C obj; obj.setA(5); / A obj.setB(6); / B obj.setC(6, 7, 9); / C return 0;main函数中( )是错误的。A. A语句B. B语句C. C语句51. 设置虚基类的目的是()。A. 区分类是否有虚函数B.

24、使类成为抽象类C. 提高程序运行效率D. 消除二义性52. 运行时多态是基于()。A. 友元函数B. 虚函数C. 函数重载D. 运算符重载53. C+泛型编程通过( )实现。A. classB. templateC. virtualD. typedef54. 关于函数声明 float fun(int a, int b) throw,下列叙述正确的是()。A. 表明函数抛出float类型异常B. 表明函数抛出任何类型异常C. 表明函数不抛出任何类型异常D. 语法错误55. 有如下两个程序片段:#include/程序片段一std:vectorvec;for(auto itr =vec.begin(

25、); itr != vec.end(); itr+)itr-print();/程序片段二std:vectorvec;for(autoitr = vec.begin(); itr != vec.end(); +itr)itr-print();则下列说法中,正确的有( )。(a)itr的类型为auto(b)程序二性能上要比程序一更好(c)程序一和程序二性能上没有区别A. abB. bC. acD. c56. 如果 X 是整型变量,则合法的形式是()。A. &(X+1)B. *XC. *&XD. &*X57. 判断以下程序的正确性,并说明原因。#include using namespace std

26、;int main() int *first, *second;first = new int5;second = first;delete second;delete first;return 0;A. 正确,因为first和second都指向动态内存,需要手动释放B. 不正确,应该先释放first指向的内存空间C. 正确,second会拷贝first的内容D. 不正确,second和first指向相同的动态内存,重复释放会可能导致未定义行为58. C+中既可以用于文件输入又可以用于文件输出的流类是( )。A. fstreamB. ifstreamC. ofstreamD. iostream

27、59. 下列是关于函数模板的程序,则下列说法中正确的有()。#include using namespace std;template void f(T &i) cout 1; template void f(const int &i) cout 2; int main() int i = 42;f(i);return 0;(a)程序输出1(b)程序输出2(c)template void f(const int &i) 显式实例化void f(const int &)(d)f(i)隐式实例化函数void f(int &)A. adB. bcC. acdD. bcd60. 下列程序的输出为()。

28、#include using namespace std;class Shape public:virtual void print() cout SHAPE endl;virtual Shape() classBox : public Shape public:virtual void print(int i) cout BOX print();delete s;return 0;A. SHAPEB. BOXC. 未定义行为1、从完成C+源文件编辑,到生成执行文件,C+编译器必须执行的步骤依次为编译、链接。A. 对B. 错C+是强类型语言。A. 对B. 错3、如果a为int型变量,b为int

29、型变量,则a/static_cast(b)的值为int型。A. 对B. 错4、数组可以通过值参数和引用参数两种方式传递给函数。A. 对B. 错5、当一个函数在运行过程中产生一个异常,则这个函数会终止,但是整个程序不一定终止运行。A. 对B. 错6、构造函数和析构函数都不能重载。A. 对B. 错7、构造函数可以声明为虚函数。A. 对B. 错8、已知类X成功地重载了-、=、+和这几个运算符,其中肯定属于成员函数的运算符是=和。A. 对B. 错9、在声明一个对象时如果使用同一类类型的另一个对象来初始化,这时调用的是该类的拷贝构造函数。A. 对B. 错10、C+语言中,既允许单继承,又允许多继承。A.

30、 对B. 错11、派生类的继承方式有两种:公有继承和私有继承。A. 对B. 错12、派生类是从基类派生出来的,它不能再生成新的派生类。A. 对B. 错13、构造函数可以被继承,析构函数不能被继承。A. 对B. 错14、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。A. 对B. 错15、在公有继承中,基类中只有公有成员对派生类对象是可见的。A. 对B. 错16、某类的友元类中的所有成员函数可以存取或修改该类的私有成员。A. 对B. 错17、多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。A. 对B. 错18、虚函数和普通函数的区别在于函数名字与函数

31、体之间的绑定方式不同,普通函数使用的是静态绑定,而虚函数使用的是动态绑定。A. 对B. 错19、在抽象类中定义的函数只能是纯虚函数。A. 对B. 错20、模板对类型参数化提供了很好的支持,类模板实例化时,编译器将根据给出的模板实参生成一个类。A. 对B. 错1. 算法是一个计算过程,是程序设计的基础和精髓。一个有效的算法应该具有如下特点,其中错误的是()。A. 零个或多个输入及一个或多个输出B. 有效性C. 无穷性D. 确定性2. #include与 #includefile.h的区别是()。3. 头文件中的ifndef/define/endif的作用是()。A. 定义常量B. 标记为特殊的头

32、文件C. 防止头文件被重复引用D. 注释头文件4. 在一个程序中,如果函数fA调用了函数fB,函数fB又调用了函数fA,那么( )。A. 称为函数的循环调用B. 这样调用方式是不允许的C. 称为函数的直接递归调用D. 称为函数的间接递归调用5. 引入内联函数的目的是为了( )。A. 方便变量的使用B. 提高函数调用的效率C. 扩大局部变量的使用范围D. 节省内存空间6. 当给函数的参数设置默认值时,正确的说法是()。A. 若给某一参数设置了默认值,那么在参数表中其前所有的参数都必须也设置默认值B. 若给某一参数设置了默认值,那么在参数表中其后所有的参数都必须也设置默认值C. 给函数的参数设置默

33、认值可以提高程序运行效率D. 任何情况下,函数调用时均可不列出已设置默认值的参数7.下列说法正确的是()。int*p1=new int10;int*p2=new int10();A. p1和p2申请的空间里面的值都是随机值B. p1和p2申请的空间里的值都已经初始化C. p1申请的空间里的值是随机值,p2申请的空间里的值已经初始化D. p1申请的空间里的值已经初始化,p2申请的空间里的值是随机值8. 按照常理,下列概念可以理解为对象而不是类的是()。A. 国际知名学府B. 国家重点建设大学C. 诺贝尔奖获得者D. 杭州师范大学9. 在面向对象程序设计中,实现信息隐蔽是靠( )。A. 对象的封装

34、B. 对象的继承C. 对象的间接访问D. 对象的分类10. 下列有关类的说法,错误的是( )。A. 在类中,如果不作特别说明,所有的数据成员均为私有数据成员B. 类是一种用户自定义的数据类型C. 在类中,如果不作特别说明,所有的成员均为公有成员D. 只有类中的成员函数或类的友元函数才能存取类中的私有数据11. 下面有关类与对象的说法中,错误的是( )。A. 对象是类的实例B. 类和对象的关系与数据类型和变量的关系相似C. 一个对象不能同时属于多个没有关系的独立的类D. 一个类只能有一个对象12. 下列关于构造函数说法,错误的是( )。A. 构造函数必须与类同名B. 构造函数必须有返回值C. 构

35、造函数可以省略不写D. 在构造函数中可以对类中的成员进行初始化13. 以下有关析构函数的叙述,错误的是()。A. 析构函数名前必须冠有符号“”B. 在一个类只能定义一个析构函数C. 析构函数不允许用返回值D. 析构函数和构造函数一样可以有形参14. 关于类的对象,说法错误的是()。A. 释放对象时,相应类的析构函数被自动执行B. 在成员函数中,只能访问成员函数所作用的对象的private成员C. 对象的成员变量可以是其他类的对象D. 同类的对象间,可以互相赋值15. 设已经有A、B、C、D4个类的定义,程序中A、B、C、D析构函数调用顺序是()。Cc;intmain() A *pa = new

36、A();Bb;staticDd;deletepa;A. A B C DB. A B D CC. A C D BD. A C B D16. 以下说法中正确的是()。A. 构造函数中可以调用本类的静态成员函数B. 构造函数和析构函数都可以是虚函数C. 通过赋值号“=”用一个对象对另一个对象进行赋值,就会引发复制构造函数的调用D. 用new运算符动态创建对象时,用于初始化该对象的一定是无参数的构造函数17. 下列情况中,不会调用对象析构函数的是()。A. 将对象指针强行赋值为NULL时B. 函数中定义的动态对象变量当函数执行结束时C. 用delete删除对象指针时D. 当对象变量脱离其作用域时18.

37、 关于类的静态成员,说法错误的是()。A. 在类的静态成员函数中,可以访问该类的静态成员变量B. 在类的非静态成员函数中,不可以访问该类的静态成员变量C. 不需要创建类的对象,就可以访问类的静态成员D. 类的静态成员变量由该类的全部对象共有19. 假设Complex是一个复数类,下面()将不会引起拷贝构造函数的调用。A. Complexc1(5); Complex c2(c1);B. Complexc1(5); Complex c2 = c1;C. Complexc1(5); Complex c22 = c1, 2;D. Complexc1(5), c2; c2 = c1;20. 关于常量成员

38、和静态成员,下面说法正确的是()。A. 从同一个类模板得到的两个模板类可以共享同一个静态成员B. 公有的静态成员在没有对象生成的时候也能被直接访问C. 常量成员函数只有常量对象可以调用D. 在静态成员函数中不能访问非静态成员,但可以访问常量成员21. 下列关于运算符重载的说法中,错误的是( )。A. new和delete运算符可以重载B. 重载运算符不能改变其原有的操作数个数C. 三元运算符“?:”不能重载D. 所有运算符既可以作为类的成员函数重载,又可以作为非成员函数重载22. 若需要为xv类重载乘法运算符,运算结果为xv类型,在将其声明为类的成员函数时,下列原型声明正确的是()。A. xv

39、 operator*(xv,xv);B. xv*(xv);C. operator*(xv);D. xv operator*(xv);23. 已知表达式+a中的“+”是作为成员函数重载的运算符,则与+a等效的运算符函数调用形式为()。A. a.operator+(1)B. operator+(a)C. operator+ (a,1)D. a.operator+()24. 将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是( )。A. 不合法的运算符B. 一元运算符C. 无操作数的运算符D. 二元运算符25. 将运算符“+”重载为非成员函数,下列原型声明中,错误的是()。A. MyClock operator+(MyClock, long);B. MyCIock operator+(MyClock, MyCIock);C. MyClock operator+(long, long);D. MyCIock operator+(long,MyClock);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁