版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年cpp考试题库及答案一、单项选择题(每题1.5分,共30分。每题给出的四个选项中,只有一项符合题目要求)1.按照ISOC++20标准规范,下列关于标识符命名规则的说法,正确的是()A.标识符可以以数字开头,后续字符可包含字母、下划线、数字B.标识符中允许出现$符号且所有编译器均默认支持其作为合法字符C.关键字consteval可作为用户自定义标识符使用D.在同一作用域内,大小写不同的标识符被视为不同实体2.在64位GCC13.2编译器默认编译选项(LP64数据模型)下,下列基本数据类型占用内存空间大小的排序,正确的是()A.char<bool<short<int<long<longlongB.bool<char<short<int<long<longlongC.char==bool<short<int<long==longlongD.char<bool==short<int<long<longlong3.下列关于C++左值引用与指针的表述,符合语言标准的是()A.左值引用在初始化完成后,可以重新绑定到其他同类型对象B.不存在绑定空值的引用,因此通过引用访问对象时无需做任何合法性校验C.指针变量本身占用独立的内存存储,而引用在编译期作为绑定对象的别名,不分配独立的存储空间D.引用作为函数参数传递时,会产生实参的临时副本,不会修改原实参的值4.下列关于const关键字的用法,语义表述正确的是()A.constint*p表示p是指向int类型常量的常量指针,指针本身不可修改B.int*constp表示p是指向int类型变量的常量指针,指针指向的值不可修改C.类的const成员函数内,不能修改类的非静态成员变量,也不能调用类的非const成员函数D.const修饰的函数参数,意味着函数内部绝对不能修改该参数对应的实参值5.下列关于C++函数重载规则的表述,正确的是()A.两个函数的返回值类型不同,其他签名完全一致,可以构成合法重载B.两个函数的参数列表完全一致,仅其中一个参数带有const修饰,若参数为值传递类型,可以构成合法重载C.重载函数的默认参数不会影响重载匹配,调用时不需要考虑默认参数带来的二义性问题D.类的const成员函数与非const成员函数,参数列表和函数名完全一致,可以构成合法重载6.下列关于new/delete与malloc/free的区别,表述错误的是()A.new是C++关键字,会调用对象的构造函数完成初始化;malloc是C标准库函数,仅分配原始内存,不会调用构造函数B.new分配内存失败时默认抛出std::bad_alloc异常;malloc分配内存失败时返回NULLC.new[]分配的数组内存,可以使用delete单独释放每个元素,不会产生内存问题D.new是类型安全的,无需手动强制转换返回的指针类型;malloc返回void*类型,需要强制转换为目标指针类型7.下列关于C++拷贝构造函数的表述,错误的是()A.拷贝构造函数的参数必须是同类型对象的引用,通常为const左值引用B.如果用户没有定义拷贝构造函数,编译器会在需要时自动生成默认拷贝构造函数,执行成员的逐位拷贝(浅拷贝)C.用一个对象初始化另一个同类型新对象时,会调用拷贝构造函数;对象作为函数参数值传递时,不会调用拷贝构造函数D.C++17标准规定,满足条件的返回值优化(RVO)是强制生效的,此时函数返回局部对象时会省略拷贝构造函数的调用8.下列关于C++析构函数的表述,正确的是()A.析构函数可以带参数,支持重载B.基类的析构函数应当声明为虚函数,否则通过基类指针释放派生类对象时会产生未定义行为C.析构函数的调用顺序与构造函数的调用顺序完全一致D.一个类只能有一个析构函数,且析构函数不能声明为noexcept9.下列关于C++继承方式的表述,正确的是()A.public继承下,基类的public成员在派生类中为public属性,基类的protected成员在派生类中为private属性B.protected继承下,基类的public和protected成员在派生类中均为protected属性,派生类对象可以直接访问基类的public成员C.private继承下,基类的所有公有和保护成员在派生类中均为private属性,派生类的成员函数仍可以访问基类的保护成员D.三种继承方式下,基类的private成员都可以被派生类的成员函数直接访问10.下列关于C++虚函数与多态的表述,错误的是()A.虚函数的调用是通过虚函数表(vtable)和虚表指针(vptr)实现的,属于运行期动态绑定B.派生类重写基类虚函数时,函数签名(函数名、参数列表、const属性、引用限定符)必须与基类完全一致,否则会构成隐藏而非重写C.基类中声明为final的虚函数,不允许在派生类中被重写;声明为final的类,不允许被其他类继承D.在类的构造函数中调用虚函数,会触发动态绑定,调用派生类重写的函数版本11.下列运算符中,C++允许用户重载的是()A.作用域解析运算符::B.条件运算符?:C.成员访问运算符.D.函数调用运算符()12.下列关于C++模板的表述,正确的是()A.函数模板和类模板在代码编写完成后,会直接编译生成所有类型的实例化代码B.C++20引入的concepts特性,可以用于约束模板参数的合法类型,优化模板编译错误提示,替代传统的SFINAE写法C.类模板的成员函数必须在类内定义,不能放到类外单独实现D.模板特化必须针对所有模板参数进行特化,不支持部分参数的偏特化13.下列关于STL容器的表述,错误的是()A.std::vector采用连续内存存储,支持随机访问,在尾部插入元素的摊还时间复杂度为O(1),当容量不足时会自动扩容B.std::list是双向链表实现,支持任意位置的O(1)时间插入删除,不支持随机访问C.std::map采用红黑树实现,元素按键有序存储,插入、查找、删除的时间复杂度为O(logn)D.std::unordered_map采用哈希表实现,所有场景下的查找效率都高于std::map,且元素按哈希值有序存储14.下列关于C++11lambda表达式的表述,正确的是()A.捕获列表[=]表示以引用捕获方式捕获外部作用域的所有可用变量B.lambda表达式采用值捕获变量时,默认情况下可以直接在lambda函数体内修改捕获的变量副本C.无捕获的lambda表达式可以隐式转换为同签名的函数指针,兼容C风格的函数接口D.lambda表达式不能作为STL算法的谓词参数,因为其不是函数类型15.下列关于C++异常处理机制的表述,错误的是()A.异常抛出后,程序会沿着调用栈向上查找匹配的catch块,这个过程称为栈展开,栈上的局部对象会被自动析构B.C++11引入的noexcept关键字用于标记函数不会抛出异常,如果标记为noexcept的函数内部抛出异常,程序会直接调用std::terminate终止C.析构函数默认不应当抛出异常,C++11及以后标准中,析构函数默认带有noexcept属性D.catch块捕获异常时,按照catch块的编写顺序匹配,派生类异常的catch块放在基类异常catch块之后也可以正确匹配16.下列关于C++RAII(资源获取即初始化)机制的表述,错误的是()A.RAII的核心思想是将资源的生命周期与对象的生命周期绑定,对象构造时获取资源,对象析构时自动释放资源B.标准库中的智能指针、std::lock_guard等组件都是RAII机制的典型实现,可以有效避免资源泄漏、异常安全问题C.RAII机制要求所有资源必须在类的构造函数中获取,不能在对象构造完成后再绑定资源D.使用RAII机制时,资源释放逻辑只需要编写一次,无论函数正常返回还是异常抛出,析构函数都会被自动调用17.下列关于C++11智能指针的表述,正确的是()A.std::unique_ptr是独占式智能指针,不允许拷贝和移动,同一时间只能有一个unique_ptr指向给定对象B.std::shared_ptr采用引用计数机制管理对象,循环引用场景下会导致对象无法释放,产生内存泄漏,需要使用std::weak_ptr打破循环引用C.std::weak_ptr是不持有对象所有权的智能指针,可以直接访问指向的对象,不需要先转换为shared_ptrD.创建shared_ptr对象时,直接使用new初始化和使用std::make_shared创建的效率、安全性完全一致18.下列关于C++20引入的三路比较运算符<=>(俗称“宇宙飞船运算符”)的表述,错误的是()A.三路比较运算符的返回值为std::strong_ordering、std::weak_ordering或std::partial_ordering类型,分别对应三种序关系B.为类定义operator<=>后,编译器会自动生成所有六个比较运算符(==、!=、<、<=、>、>=)的实现,无需手动重载C.如果将operator<=>声明为default,编译器会按照成员变量的声明顺序逐位生成比较逻辑,支持结构体的按成员比较D.三路比较运算符可以重载为全局函数,也可以重载为类的成员函数19.下列关于C++输入输出流的表述,正确的是()A.std::endl与'\n'的作用完全一致,都是输出换行符B.以文本模式打开文件时,换行符会按照平台规则做转换;以二进制模式打开文件时,会原样读写文件内容,不做换行转换C.std::cin读取输入时,会自动跳过所有空白字符,但读取字符串时不会出现缓冲区溢出问题D.流对象的格式化标志一旦设置,会一直生效直到程序退出,无法手动恢复20.下列关于C++程序编译链接流程的表述,错误的是()A.预处理阶段会处理#include头文件包含、#define宏替换、条件编译等指令,生成预处理后的源代码B.编译阶段会将预处理后的代码转换为汇编代码,此阶段会做语法检查、类型检查、优化等操作C.汇编阶段会将汇编代码转换为机器指令,生成目标文件,目标文件中已经完成了所有符号的地址解析D.链接阶段会将多个目标文件、依赖的库文件整合为可执行文件,解析未定义的符号引用二、多项选择题(每题2分,共20分。每题给出的选项中,有2项及以上符合题目要求,多选、少选、错选均不得分)1.下列关于C++类静态成员的表述,正确的有()A.静态成员变量属于整个类,不依赖于具体对象实例;C++17标准之前,非inline静态成员需要在类外进行初始化定义B.静态成员函数没有隐含的this指针,因此不能直接访问类的非静态成员变量或非静态成员函数C.静态成员变量的内存空间在静态存储区分配,生命周期与程序运行周期一致D.C++11标准下,conststatic修饰的所有类型成员变量都可以直接在类内声明时初始化,无需类外定义2.下列关于C++11移动语义与右值引用的表述,正确的有()A.右值引用可以绑定到将亡值,实现资源所有权的转移,避免不必要的深拷贝开销,提升程序性能B.std::move函数的本质是将传入的参数强制转换为右值引用类型,本身不会执行任何资源移动操作C.移动构造函数的参数必须是非const的右值引用类型,否则无法匹配临时对象的移动调用D.如果用户没有为类定义移动构造函数和移动赋值运算符,编译器会在满足生成条件的情况下,自动生成默认的移动构造和移动赋值函数3.下列关于虚函数与多态实现的表述,符合C++标准规范的有()A.虚函数不能是静态成员函数,也不能是类的友元函数B.基类中声明为virtual的函数,在公有派生类中即使不写virtual关键字,只要函数签名完全一致,自动成为虚函数C.纯虚函数是基类中声明的没有默认实现的虚函数(C++11及以后也可以为纯虚函数提供实现),包含纯虚函数的类是抽象类,不能实例化对象D.构造函数和析构函数都可以声明为虚函数,实现构造和析构阶段的多态调用4.下列STL容器中,迭代器类型属于随机访问迭代器的有()A.std::vector<T>B.std::deque<T>C.std::list<T>D.std::array<T,N>5.下列关于C++lambda表达式的用法,符合语法规范的有()A.捕获列表[=]表示以值捕获方式捕获外部作用域中所有可访问的变量B.值捕获的变量默认在lambda体内是只读的,若需要修改副本值,需要在lambda声明处加mutable关键字C.lambda表达式作为可调用对象,可以赋值给std::function类型的变量存储,也可以直接作为参数传递给STL算法D.无捕获的lambda表达式可以隐式转换为同签名的函数指针,用于需要C风格回调函数的接口场景6.下列关于C++异常安全级别的表述,正确的有()A.基本保证:异常发生后,程序内不会出现资源泄漏,所有对象处于合法但状态不确定的可析构状态B.强保证:异常发生后,程序状态完全回滚到操作执行之前,操作要么完全成功,要么不产生任何状态改变C.不抛出保证:函数承诺不会抛出任何异常,C++11起可使用noexcept关键字标记该类函数D.只要代码中new和delete正确配对,就一定能达到强异常安全级别7.下列关于constexpr关键字的表述,正确的有()A.constexpr修饰的函数,当传入参数为编译期常量时,函数可以在编译阶段完成计算,结果可作为常量表达式使用B.C++14及以后标准中,constexpr函数内部可以包含局部变量声明、循环、分支等语句,不再限制为只能有一条return语句C.constexpr修饰的变量必须用常量表达式初始化,编译期即可确定其值,运行期不可修改D.constexpr修饰的类构造函数,可以让类的对象在编译期完成构造,生成编译期常量对象8.下列关于派生类对象构造、析构顺序的表述,正确的有()A.构造派生类对象时,先调用基类构造函数,再按照成员声明顺序调用派生类成员对象的构造函数,最后调用派生类自身的构造函数B.多继承场景下,基类构造函数的调用顺序与派生类声明时的继承列表顺序一致,与构造函数初始化列表的顺序无关C.析构函数的调用顺序与构造函数的调用顺序完全一致D.虚继承场景下,虚基类的构造函数会在所有非虚基类构造之前被调用,且整个继承体系中只会调用一次9.下列关于C++显式类型转换运算符的表述,正确的有()A.static_cast可用于基本数据类型之间的转换、具有继承关系的类指针/引用的转换,编译期完成类型检查,安全性高于C风格强制转换B.dynamic_cast用于多态类型(含虚函数的类)的向下转型,指针转型失败返回nullptr,引用转型失败抛出std::bad_cast异常,属于运行期类型检查C.const_cast的作用是移除变量的const属性,通过const_cast修改原本定义为const的常量值是标准定义的合法行为,不会产生问题D.reinterpret_cast可实现任意指针类型之间、指针与整数类型之间的转换,转换结果高度依赖编译器实现,风险较高,需谨慎使用10.下列属于C++20标准正式纳入的语言或标准库特性的有()A.concepts概念约束,简化模板编程,提升编译错误信息可读性B.ranges范围库,支持管道式的算法调用,实现惰性求值,简化集合操作C.无栈协程(coroutines),提供原生协程语法支持,简化异步代码编写D.modules模块机制,替代传统头文件包含模式,提升编译速度,避免宏污染、头文件重复包含问题三、程序阅读题(每题5分,共20分。阅读下列程序代码,写出程序在标准合规编译器下的运行输出)1.代码如下:usingnamespacestd;classTest{private:intval;public:Test(intv=0):val(v){cout<<"Constructorcalled,val="<<val<<endl;}Test(constTest&t){val=t.val;cout<<"Copyconstructorcalled,val="<<val<<endl;}Test&operator=(constTest&t){if(this!=&t){val=t.val;cout<<"Assignmentoperatorcalled,val="<<val<<endl;}return*this;}~Test(){cout<<"Destructorcalled,val="<<val<<endl;}};intmain(){Testt1(10);Testt2=t1;Testt3;t3=t1;return0;}2.代码如下:usingnamespacestd;classBase{public:Base(){cout<<"Baseconstructor"<<endl;func();}virtualvoidfunc(){cout<<"Base::func()"<<endl;}virtual~Base(){cout<<"Basedestructor"<<endl;func();}};classDerived:publicBase{public:Derived(){cout<<"Derivedconstructor"<<endl;func();}voidfunc()override{cout<<"Derived::func()"<<endl;}~Derived(){cout<<"Deriveddestructor"<<endl;func();}};intmain(){Base*p=newDerived();p->func();deletep;return0;}3.代码如下:usingnamespacestd;intmain(){vector<int>v={3,1,4,1,5,9,2,6};sort(v.begin(),v.end(),[](inta,intb){returna>b;});for_each(v.begin(),v.end(),[](intx){if(x%2==0){cout<<x<<"";}});cout<<endl;autoit=find(v.begin(),v.end(),5);if(it!=v.end()){cout<<"Foundatposition:"<<it-v.begin()<<endl;}return0;}4.代码如下:usingnamespacestd;classTest{public:Test(){cout<<"Testcreated"<<endl;}~Test(){cout<<"Testdestroyed"<<endl;}voidshow(){cout<<"Testshow"<<endl;}};intmain(){unique_ptr<Test>p1=make_unique<Test>();unique_ptr<Test>p2=move(p1);if(p1==nullptr){cout<<"p1isnull"<<endl;}p2->show();shared_ptr<Test>p3=make_shared<Test>();shared_ptr<Test>p4=p3;cout<<"p3usecount:"<<p3.use_count()<<endl;p4.reset();cout<<"p3usecountafterresetp4:"<<p3.use_count()<<endl;return0;}四、程序填空题(每空2分,共10分。阅读下列程序,在空缺处填入合适代码,使程序功能完整、符合规范)题目:实现一个自定义的动态字符串类MyString,支持构造、深拷贝、赋值、下标访问、自动内存释放功能。usingnamespacestd;classMyString{private:char*data;size_tlength;public://从C风格字符串构造MyString(constchar*str=nullptr){if(str==nullptr){length=0;data=newchar[1];data[0]='\0';}else{length=strlen(str);____(1)____;//分配足够的内存存储字符串和结尾的'\0'strcpy(data,str);}}//拷贝构造,实现深拷贝MyString(constMyString&other){length=other.length;data=newchar[length+1];____(2)____;//复制源对象的字符串内容}//赋值运算符重载,处理自赋值,实现深拷贝MyString&operator=(constMyString&other){if(____(3)____){//判断是否为自赋值return*this;}delete[]data;length=other.length;data=newchar[length+1];strcpy(data,other.data);return*this;}//下标运算符重载,支持通过下标访问和修改字符____(4)____operator[](size_tindex){//返回对应位置字符的引用returndata[index];}//析构函数,释放动态分配的内存~MyString(){____(5)____;//释放data指向的动态数组data=nullptr;length=0;}size_tsize()const{returnlength;}constchar*c_str()const{returndata;}};五、编程题(共20分。要求代码符合C++标准规范,逻辑清晰,具备必要的鲁棒性,可直接编译运行)1.(8分)编写函数boolisPalindrome(conststring&s),功能是判断输入字符串是否为回文串。要求:忽略字符串中的所有非字母数字字符,字母比较时忽略大小写;空字符串视为有效回文串。例如输入"Aman,aplan,acanal:Panama"时返回true,输入"raceacar"时返回false。2.(12分)实现简化的图书管理模块,使用类封装,满足以下功能要求:(1)图书信息包含:ISBN号(string,唯一标识)、书名(string)、作者(string)、价格(double)、库存数量(int);(2)支持添加图书功能:添加时如果ISBN已存在,抛出std::invalid_argument异常,提示“图书ISBN重复”;(3)支持根据ISBN查找图书:找到后返回图书完整信息,找不到则抛出std::out_of_range异常,提示“图书不存在”;(4)支持按库存数量升序排序所有图书,排序后可遍历输出全部图书信息;(5)使用std::vector存储图书对象,使用标准库算法完成查找、排序逻辑,内存管理安全,无泄漏风险。参考答案与解析一、单项选择题答案1.D2.C3.C4.C5.D6.C7.C8.B9.C10.D11.D12.B13.D14.C15.D16.C17.B18.B19.B20.C【核心考点解析】:本题型覆盖C++基础语法、内存模型、面向对象特性、STL、标准演进、编译流程等核心考点,易错点包括:new[]必须搭配delete[]使用,否则会出现数组内存释放不完整的问题;构造/析构阶段调用虚函数不会触发多态,因为派生类部分未完成构造或已被析构;unordered_map在哈希冲突严重时查找效率会退化为O(n),并非所有场景都优于有序map;链接阶段才会完成跨目标文件的符号地址解析,编译阶段仅生成待重定位的符号表项。二、多项选择题答案1.ABC2.ABD3.ABC4.ABD5.ABCD6.ABC7.ABCD8.ABD9.ABD10.ABCD【核心考点解析】:本题型侧重知识点的综合辨析,易错点包括:C++11标准下仅conststatic整型、枚举类型成员支持类内初始化,浮点等其他类型需类外定义;移动构造函数可以接收const右值引用,但因为无法转移资源(源对象为const),实际开发中极少使用;通过const_cast修改原本定义为const的对象属于未定义行为,可能导致程序崩溃;析构顺序与构造顺序完全相反,栈对象遵循“后进先出”的析构规则;三路比较运算符仅自动生成<、<=、>、>=四个关系运算符,==和!=需要单独重载或声明为default。三、程序阅读题答案1.输出内容:Constructorcalled,val=10Copyconstructorcalled,val=10Constructorcalled,val=0Assignmentoperatorcalled,val=10Destructorcalled,val=10Destructorcalled,val=10Destructorcalled,val=10【解析】:Testt2=t1是拷贝初始化,调用拷贝构造函数;t3是默认构造,之后执行赋值操作调用赋值运算符;栈对象析构顺序为t3、t2、t1,与构造顺序相反。2.输出内容:BaseconstructorBase::func()DerivedconstructorDerived::func()Derived::func()DeriveddestructorDerived::func()BasedestructorBase::func()【解析】:构造基类部分时,派生类尚未初始化,虚函数调用绑定到基类版本;基类指针指向派生类对象调用func()触发多态,绑定到派生类版本;虚析构函数保证delete时先调用派生类析构再调用基类析构,析构阶段虚函数绑定到当前正在析构的类版本。3.输出内容:642Foundatposition:2【解析】:降序排序后vector元素为9、6、5、4、3、2、1、1;for_each遍历输出所有偶数元素;find查找元素5的下标为2(从0开始计数)。4.输出内容:Testcreatedp1isnullTestshowTestcreatedp3usecount:2p3usecountafterresetp4:1TestdestroyedTestdestroyed【解析】:unique_ptr不支持拷贝,通过move转移所有权后p1变为空指针;shared_ptr通过引用计数管理对象,p4和p3指向同一对象时引用计数为2,resetp4后引用计数降为1;程序结束时智能指针自动释放管理的对象。四、程序填空题答案(1)data=newchar[length+1](2)strcpy(data,other.data)(3)this==&other(4)char&(5)delete[]data【解析】:本题考查类的动态内存管理与深拷贝实现。易错点包括:字符串内存分配需要多1字节存储'\0';赋值运算符必须做自赋值判断,否则释放自身内存后会拷贝无效地址;下标运算符返回char&才能支持左值赋值(如s[0]='a');释放字符数组必须使用delete[],不能使用delete,否则会产生未定义行为。五、编程题参考实现1.回文判断函数参考代码:```cppusingnamespacestd;boolisPalindrome(conststring&s){intleft=0,right=s.size()-1;while(left<right){//左指针跳过非字母数字字符while(left<right&&!isalnum(s[left]))left++;//右指针跳过非字母数字字符while(left<right&&!isalnum(s[right]))right--;//转小写后比较if(tolower(s[left])!=tolower(s[right])){returnfalse;}left++;rig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国碳酸饮料市场供需状况及渠道拓展战略研究报告
- 2026中国便利店冷藏饮料周转率提升与补货模型研究报告
- 2026中国医疗清洁机器人感染控制效果与采购标准报告
- 2026电缆剪跨境电商市场消费者行为与品牌建设分析报告
- 2026中国液体化工物流行业产能布局与资源优化配置报告
- 2026金融科技行业监管趋势与投资战略研究报告
- 2026中国疫苗流通环节利润分配与价格形成机制报告
- 2026细胞治疗产品质量控制标准建设分析报告
- 文化产业政策支持力度评估方案
- 2026年客户服务战略规划与实施方案
- 中国电信湖南校招笔试题
- 托育食品安全课件
- 人工智能与未来 课件 8.2 计算机视觉概述
- 2025 初中一年级语文下册《台阶》细节描写作用课件
- 彩票合伙合同协议书
- 企业管理-采购腹腔镜训练器的申请报告
- T-CICC 35007-2025 金属材料 疲劳试验小样本数据统计分析方法
- HJ 169-2018建设项目环境风险评价技术导则
- 机械表维护知识培训课件
- GJB1406A-2021产品质量保证大纲要求
- 产后胎盘植入课件
评论
0/150
提交评论