版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++语言考试题库含答案集一、单项选择题(本大题共20小题,每小题1分,共20分)1.在C++中,以下哪个关键字用于声明一个类的私有成员?A.publicB.protectedC.privateD.internal解析:C++中类的成员默认为私有(private),使用private关键字显式声明。public和protected分别声明公有和受保护成员,internal是C#关键字。本题考查类成员访问控制的基本概念,私有成员是类的封装核心,只能被类内部访问。2.以下哪个运算符用于判断两个指针是否指向同一内存地址?A.==B.!=C.===D.<=>解析:C++中判断指针是否相等使用==运算符,如`p1==p2`。!=用于判断不等,===是JavaScript运算符,<=>是C++20的强比较运算符。指针比较的是地址值而非对象内容,需注意与引用比较的区别。3.关于动态内存分配,以下说法正确的是?A.使用new分配的内存必须手动delete释放B.delete[]可以释放单个new分配的内存C.动态分配的内存生命周期由堆决定D.动态分配的内存大小在编译时确定解析:动态内存分配通过new分配,需用delete[]释放数组内存,delete释放单个内存。内存生命周期由作用域决定,而非堆本身。动态分配允许运行时确定大小,如`intarr=newint[10]`。错误选项B易混淆,需区分delete和delete[]的行为。4.C++中,以下哪个构造函数称为拷贝构造函数?A.`ClassName(constClassName&other)`B.`ClassName(ClassNameother)`C.`ClassName&operator=(ClassNameother)`D.`ClassName::ClassName()`解析:拷贝构造函数是带引用参数的单一参数构造函数,用于创建副本。选项A符合定义,B是普通函数,C是赋值运算符重载,D是默认构造函数。拷贝构造函数是深拷贝与浅拷贝的核心区别点。5.关于虚函数,以下说法错误的是?A.虚函数可以在基类中声明但不实现B.虚函数必须声明为publicC.虚函数通过动态绑定实现多态D.虚函数不能是静态成员函数解析:虚函数可以声明不实现,如`virtualvoidfunc();`。虚函数默认是public,因为成员函数默认是public。动态绑定是虚函数的核心特性,通过vptr表实现。静态成员函数属于类本身,不与对象关联,故不能是虚函数。6.以下哪个迭代器用于遍历标准容器?A.pointeriteratorB.randomaccessiteratorC.forwarditeratorD.bidirectionaliterator解析:标准库迭代器分为5类:输入迭代器、前向迭代器、双向迭代器、随机访问迭代器、输出迭代器。vector和string支持随机访问迭代器,可进行+、-、[]操作。forwarditerator只能单向遍历,如list。7.关于模板,以下说法正确的是?A.模板函数必须指定模板参数类型B.模板类可以只有成员函数没有成员变量C.模板实例化时必须显式指定模板参数D.模板是编译时多态的实现方式解析:模板参数可以省略,编译器自动推导,如`vector<int>`。模板类可以只有函数,如函数模板。模板实例化时编译器可以推导,如`sort(a,b)`推导为`sort<int>`。模板是编译时多态,与虚函数的运行时多态相对。8.关于异常处理,以下哪个关键字用于声明抛出异常的函数?A.throwB.tryC.catchD.noexcept解析:noexcept用于声明不抛出异常的函数,是C++11引入的。throw用于抛出异常,try用于捕获异常,catch用于处理异常。noexcept对性能优化有重要意义,如`voidfunc()noexcept;`。9.关于RAII(资源获取即初始化),以下说法错误的是?A.RAII通过对象生命周期管理资源B.RAII适用于所有资源管理场景C.RAII依赖堆栈自动销毁机制D.RAII是C++智能指针的基础解析:RAII通过对象构造获取资源,析构释放资源,依赖堆栈生命周期。不适用于需要跨线程同步的场景,如共享资源。智能指针(`std::unique_ptr`)是RAII的典型应用。10.关于C++11智能指针,以下说法正确的是?A.`std::shared_ptr`可以管理数组资源B.`std::unique_ptr`是线程安全的C.`std::weak_ptr`可以单独使用D.`std::auto_ptr`已被废弃解析:`std::shared_ptr`支持数组(`std::shared_ptr<int[]>`),`std::unique_ptr`独占资源,不是线程安全。`std::weak_ptr`必须与`shared_ptr`配合使用,防止循环引用。`std::auto_ptr`因潜在问题已被废弃,推荐用`unique_ptr`替代。11.关于I/O流,以下说法错误的是?A.`std::cin`是标准输入流B.`std::cout`的输出缓冲区默认关闭C.`std::cerr`是标准错误流D.`std::endl`刷新缓冲区并输出换行符解析:`std::cout`默认开启缓冲区优化,`std::endl`会刷新缓冲区并输出`\n`。`std::cin`是输入,`std::cerr`是错误输出。缓冲区管理是I/O性能优化的关键点。12.关于联合体(union),以下说法正确的是?A.联合体可以包含静态成员B.联合体所有成员共享同一内存C.联合体可以定义构造函数D.联合体的大小等于最大成员大小解析:联合体成员共享内存(`B`正确),不能有静态成员或构造函数。联合体大小是所有成员中最大的对齐要求,可能包含填充字节。与结构体不同,联合体不保证所有成员可访问。13.关于位运算,以下说法错误的是?A.`&`运算符用于按位与B.`|`运算符用于按位或C.`^`运算符用于按位异或D.`~`运算符是按位取反的非单目运算符解析:位运算是C++基础,`&`、`|`、`^`、`~`分别对应按位与、或、异或、取反。错误点在于易混淆`^`与`&`的优先级,`^`优先级低于`&`。位运算在底层编程中应用广泛,如掩码操作。14.关于STL容器,以下说法正确的是?A.`std::list`是连续存储的容器B.`std::map`的默认比较函数是`std::less`C.`std::set`允许重复元素D.`std::queue`是线程安全的解析:`std::list`是双向链表,非连续存储。`std::map`默认使用`std::less<T>`作为比较函数。`std::set`不允许重复元素。`std::queue`基于容器实现,默认非线程安全。15.关于预处理器指令,以下说法错误的是?A.`#include`用于包含头文件B.`#define`用于定义宏C.`#ifdef`用于条件编译D.`#pragma`是编译器扩展指令解析:预处理器在编译前处理指令,`#include`、`#define`、`#ifdef`是标准指令。`#pragma`是编译器特定指令,如MSVC的`#pragmaonce`。预处理器不参与语义分析,仅文本替换。16.关于C++11类型推导,以下说法正确的是?A.`autox=5;`推导为`int`B.`decltype(a)`推导为`int`C.`autox=func();`推导为`void`D.`auto&x=a;`推导为`int`解析:`autox=5;`推导为`int`。`decltype(a)`推导为`a`的类型,如`inta`推导为`int`。`autox=func();`推导为`func()`返回类型。`auto&`推导为引用类型,如`int&`。17.关于lambda表达式,以下说法错误的是?A.lambda可以捕获外部变量B.`[&]`表示捕获所有外部变量为引用C.`mutable`修饰符允许修改捕获变量D.lambda默认捕获为值拷贝解析:lambda捕获方式有值捕获`[=]`、引用捕获`[&]`、混合捕获`[a,&b]`。`[&]`捕获所有引用,`mutable`允许修改捕获的值捕获变量。默认捕获为值拷贝,如`[a]`。lambda是C++11的重要特性,用于匿名函数。18.关于C++11线程,以下说法正确的是?A.`std::thread`对象是线程安全的B.`std::mutex`需要手动解锁C.`std::atomic`支持自旋锁D.`std::async`是线程池的实现解析:`std::thread`对象不是线程安全的,需注意生命周期。`std::mutex`必须配合`lock_guard`或`unique_lock`使用,否则死锁风险高。`std::atomic`是轻量级同步,不涉及自旋锁。`std::async`是任务异步执行,非线程池。19.关于C++17模块化,以下说法错误的是?A.`import`语句用于导入模块B.模块必须编译在同一文件C.`module`关键字用于声明模块D.模块支持命名空间隔离解析:C++17引入模块化,`import`导入模块,`module`声明模块。模块可以编译在不同文件,通过编译单元关联。模块支持命名空间隔离,避免命名冲突。模块化是C++20的正式特性,C++17是预览。20.关于C++内存模型,以下说法正确的是?A.`volatile`保证内存可见性B.`std::atomic`保证原子性C.`memory_order_relaxed`最宽松的内存顺序D.`std::mutex`保证数据一致性解析:`volatile`防止编译器优化,但不保证可见性。`std::atomic`保证单个操作原子性。`memory_order_relaxed`仅保证操作顺序,不保证内存可见性。`std::mutex`保证互斥访问,不直接保证数据一致性。二、填空题(本大题共10小题,每空2分,共20分)1.在C++中,使用`new`分配内存后,应使用______释放内存,以避免内存泄漏。参考答案:delete解析:动态内存分配必须匹配释放方式,`new`对应`delete`,`new[]`对应`delete[]`。内存泄漏是C++常见问题,需严格遵循分配释放配对原则。2.C++中,`friend`关键字用于声明______函数或类,使其可以访问当前类的私有和保护成员。参考答案:非成员解析:`friend`是友元机制,用于打破封装,允许外部函数或类访问私有成员。友元不是成员函数,但可以访问成员。友元声明在类内部,但属于非成员函数。3.关于虚函数,`dynamic_cast`用于在______情况下进行安全的向下转型。参考答案:多态解析:`dynamic_cast`用于基类指针或引用的向下转型,前提是存在虚函数,即多态继承体系。静态转型(`static_cast`)不要求虚函数。`dynamic_cast`会检查类型兼容性,失败返回nullptr。4.C++中,`std::vector`的容量是指______,大小是指当前存储的元素数量。参考答案:已分配内存解析:容量是vector分配的内存空间,大小是实际元素个数。`vector`支持动态扩容,扩容时容量通常倍增。容量管理是性能优化的关键点。5.关于异常处理,`try`块中声明的局部对象在离开作用域时会______,这称为异常安全。参考答案:被析构解析:异常安全要求在异常抛出时资源被正确释放,即对象析构。`noexcept`声明保证不抛出异常,`strongexceptionguarantee`要求抛出时状态不变。RAII是异常安全的实现基础。6.C++11中,`auto`关键字用于自动推导变量类型,其前提是编译器能够______类型信息。参考答案:推断解析:`auto`依赖编译器类型推导,如`autox=f();`推导为`f()`返回类型。推导失败会导致编译错误,如`autox=nullptr;`推导为`auto`而非`void`。类型推导是C++11的重要改进。7.关于模板元编程,`SFINAE`是______的缩写,用于实现编译时多态。参考答案:SubstitutionFailureIsNotAnError解析:SFINAE是模板元编程的核心技术,通过替换失败而非错误来选择重载。如`std::enable_if`利用SFINAE实现条件编译。模板元编程是C++高级特性,用于编译期计算。8.C++中,`std::mutex`的锁操作通常与______搭配使用,以防止死锁。参考答案:lock_guard或unique_lock解析:`std::mutex`需要同步锁来管理访问,`lock_guard`是作用域锁,自动解锁。`unique_lock`更灵活,支持条件变量。锁管理是并发编程的核心。9.关于I/O流,`std::ios::binary`用于设置流以______方式操作文件。参考答案:二进制解析:`std::ios::binary`关闭文本模式转换,如`\n`转为`\r\n`。二进制模式下读写精度更高,适用于非文本文件。流状态管理是I/O编程的关键。10.C++17中,`consteval`关键字用于声明______,其值必须在编译时确定。参考答案:常量表达式解析:`consteval`是C++17的编译时常量,必须静态初始化。如`constevalintfunc(){return5;}`。常量表达式是性能优化的关键,避免运行时计算。三、判断题(本大题共10小题,每题2分,共20分)1.C++中,`delete`和`delete[]`可以互换使用来释放动态分配的内存。参考答案:错误解析:`delete`用于单个对象,`delete[]`用于数组。错误使用会导致未定义行为,如`delete[]`释放单个对象。内存管理必须严格匹配分配方式。2.虚函数表(vtable)是每个C++对象的一部分。参考答案:错误解析:虚函数表是类级别的,存储在动态内存中,每个对象存储指向vtable的指针。vtable包含虚函数地址,不随对象复制而复制。3.`std::auto_ptr`是C++11推荐的智能指针,用于自动管理资源。参考答案:错误解析:`std::auto_ptr`已被废弃,因其拷贝行为可能导致资源丢失。推荐使用`std::unique_ptr`(独占)或`std::shared_ptr`(共享)。智能指针是RAII的现代化实现。4.C++中,`const`关键字用于声明只读变量或函数。参考答案:正确解析:`const`是C++核心概念,用于定义不可修改的变量或函数。`const`成员函数不能修改对象状态。`const`是性能优化的关键,避免不必要的拷贝。5.`std::map`和`std::set`内部使用红黑树实现,因此插入和删除操作的时间复杂度是O(n)。参考答案:错误解析:红黑树是平衡二叉搜索树,插入和删除时间复杂度是O(logn),而非O(n)。`std::unordered_map`基于哈希表,平均时间复杂度是O(1)。6.C++中,`volatile`关键字用于防止编译器优化,但不会影响多线程同步。参考答案:正确解析:`volatile`告诉编译器每次访问变量都从内存读取/写入,不缓存。它不涉及线程同步,同步需用互斥锁。`volatile`适用于硬件寄存器访问。7.lambda表达式可以捕获外部类的静态成员变量。参考答案:正确解析:lambda可以捕获外部静态成员,因为静态成员不属于对象,与线程安全无关。捕获静态成员时,`this`指针不可捕获。8.`std::async`会自动创建线程池来管理异步任务。参考答案:错误解析:`std::async`返回`std::future`,不直接管理线程池。它可能使用现有线程或创建新线程。线程池管理需手动实现或使用`std::thread`。9.C++11中,`constexpr`函数必须返回常量表达式。参考答案:正确解析:`constexpr`要求函数体简单,返回值必须可由编译器计算为常量。适用于编译期计算,如`constexprintsquare(intx){returnxx;}`。10.C++17模块化通过编译时链接,避免了传统头文件的重复包含问题。参考答案:正确解析:模块化将接口与实现分离,编译时直接链接,避免了头文件依赖。这是C++20的正式特性,C++17是预览。模块化是代码组织和性能优化的重大改进。四、简答题(本大题共8小题,每题2分,共16分)1.简述C++中构造函数和析构函数的区别。参考答案:构造函数在对象创建时调用,用于初始化资源;析构函数在对象销毁时调用,用于释放资源。构造函数带参数,析构函数无参数。构造函数支持初始化列表,析构函数无特殊语法。2.解释RAII原理及其在C++中的应用场景。参考答案:RAII通过对象生命周期管理资源,对象构造获取资源,析构释放资源。应用场景包括文件操作、网络连接、锁管理。智能指针(`std::unique_ptr`、`std::shared_ptr`)是RAII的典型实现。3.什么是虚函数?虚函数表(vtable)的作用是什么?参考答案:虚函数是基类中声明为virtual的函数,支持动态绑定。虚函数表是类级别的表,存储虚函数地址。对象中存储指向vtable的指针,调用虚函数时通过vptr和vtbl实现多态。4.解释C++中左值引用和右值引用的区别。参考答案:左值引用(`T&`)绑定到有名称的内存,可被赋值;右值引用(`T&&`)绑定到临时对象,不可被赋值。右值引用用于移动语义,避免拷贝。`std::move`将左值转为右值引用。5.简述C++11智能指针的种类及其用途。参考答案:`std::unique_ptr`独占管理资源,`std::shared_ptr`共享管理资源,`std::weak_ptr`配合`shared_ptr`防止循环引用。智能指针是RAII的现代化实现,避免内存泄漏。6.解释C++中异常处理的流程,包括try、catch、throw。参考答案:异常处理流程:try块中抛出`throw`,系统查找匹配的`catch`块。`throw`可以是对象或类型,`catch`必须匹配类型。异常处理用于错误管理,避免程序崩溃。7.什么是模板元编程?模板元编程的典型应用是什么?参考答案:模板元编程是编译时编程,通过模板递归计算结果。典型应用包括类型检查、编译期算法。如`std::enable_if`实现条件编译,`std::integral_constant`创建编译期常量。8.解释C++中I/O流的缓冲机制及其优缺点。参考答案:I/O流使用缓冲区提高性能,将数据暂存内存再批量写入/读取。优点是减少系统调用,缺点是可能延迟数据。`std::ios::sync_with_stdio(false)`关闭同步,提高性能。五、应用题(本大题共8小题,每题4分,共24分)1.设计一个简单的单链表类,包含头节点,实现插入和删除操作。参考答案:```cppclassListNode{public:intval;ListNodenext;ListNode(intx):val(x),next(nullptr){}};classLinkedList{private:ListNodehead;public:LinkedList():head(newListNode(0)){}//Dummyheadvoidinsert(intval){ListNodenewNode=newListNode(val);newNode->next=head->next;head->next=newNode;}voidremove(intval){ListNodeprev=head;ListNodecurr=head->next;while(curr&&curr->val!=val){prev=curr;curr=curr->next;}if(curr){prev->next=curr->next;deletecurr;}}};```2.编写一个函数,判断字符串是否为回文(忽略大小写和空格)。参考答案:```cpp#include<algorithm>#include<cctype>boolisPalindrome(conststd::string&s){intleft=0,right=s.size()-1;while(left<right){//Skipnon-alphanumericcharacterswhile(left<right&&!std::isalnum(s[left]))left++;while(left<right&&!std::isalnum(s[right]))right--;//Compareinlowercaseif(std::tolower(s[left])!=std::tolower(s[right]))returnfalse;left++;right--;}returntrue;}```3.实现一个简单的二分查找算法,输入有序数组,返回目标值的索引。参考答案:```cpp#include<vector>intbinarySearch(conststd::vector<int>&arr,inttarget){intleft=0,right=arr.size()-1;while(left<=right){intmid=left+(right-left)/2;if(arr[mid]==target)returnmid;elseif(arr[mid]<target)left=mid+1;elseright=mid-1;}return-1;//Notfound}```4.编写一个函数,计算两个整数的最大公约数(辗转相除法)。参考答案:```cppintgcd(inta,intb){while(b!=0){inttemp=b;b=a%b;a=temp;}returna;}```5.实现一个简单的文件读取函数,读取文件内容并返回字符串。参考答案:```cpp#include<fstream>#include<string>std::stringreadFile(conststd::string&filename){std::ifstreamfile(filename);if(!file.is_open())return"";std::stringcontent((std::istreambuf_iterator<char>(file)),std::istreambuf_iterator<char>());returncontent;}```6.编写一个函数,将字符串中的所有小写字母转换为大写字母。参考答案:```cpp#include<algorithm>#include<cctype>std::stringtoUpperCase(conststd::string&s){std::stringresult=s;std::transform(result.begin(),result.end(),result.begin(),[](charc){returnstd::toupper(c);});returnresult;}```7.实现一个简单的队列类,使用数组实现,支持入队和出队操作。参考答案:```cppclassQueue{private:intarr;intfront,rear,capacity;public:Queue(intsize):capacity(size),front(0),rear(-1){arr=newint[capacity];}~Queue(){delete[]arr;}boolisEmpty(){returnfront>rear;}boolisFull(){return(rear+1)%capacity==front;}voidenqueue(intval){if(isFull())return;rear=(rear+1)%capacity;arr[rear]=val;}intdequeue(){if(isEmpty())return-1;intval=arr[front];front=(front+1)%capacity;returnval;}};```【标准答案及解析】一、单项选择题1.C2.A3.C4.A5.B6.B7.D8.D9.B10.D2.B12.B13.D14.B15.B16.B17.D18.C19.B20.B二、填空题1.delete22.非成员23.多态24.已分配内存25.被析构2.推断27.SubstitutionFailureIsNotAnError28.lock_guard或unique_lock3.二进制30.常量表达式三、判断题1.错误32.错误33.错误34.正确35.错误2.正确37.正确38.错误39.正确40.正确四、简答题1.构造函数在对象创建时调用,用于初始化资源;析构函数在对象销毁时调用,用于释放资源。构造函数带参数,析构函数无参数。构造函数支持初始化列表,析构函数无特殊语法。2.RAII通过对象生命周期管理资源,对象构造获取资源,析构释放资源。应用场景包括文件操作、网络连接、锁管理。智能指针(`std::unique_ptr`、`std::shared_ptr`)是RAII的典型实现。3.虚函数是基类中声明为virtual的函数,支持动态绑定。虚函数表是类级别的表,存储虚函数地址。对象中存储指向vtable的指针,调用虚函数时通过vptr和vtbl实现多态。4.左值引用(`T&`)绑定到有名称的内存,可被赋值;右值引用(`T&&`)绑定到临时对象,不可被赋值。右值引用用于移动语义,避免拷贝。`std::move`将左值转为右值引用。5.智能指针的种类:`std::unique_ptr`独占管理资源,`std::shared_ptr`共享管理资源,`std::weak_ptr`配合`shared_ptr`防止循环引用。智能指针是RAII的现代化实现,避免内存泄漏。6.异常处理流程:try块中抛出`throw`,系统查找匹配的`catch`块。`throw`可以是对象或类型,`catch`必须匹配类型。异常处理用于错误管理,避免程序崩溃。7.模板元编程是编译时编程,通过模板递归计算结果。典型应用包括类型检查、编译期算法。如`std::enable_if`实现条件编译,`std::integral_constant`创建编译期常量。8.I/O流使用缓冲区提高性能,将数据暂存内存再批量写入/读取。优点是减少系统调用,缺点是可能延迟数据。`std::ios::sync_with_stdio(false)`关闭同步,提高性能。五、应用题1.单链表类实现:```cppclassListNode{public:intval;ListNodenext;ListNode(intx):val(x),next(nullptr){}};classLinkedList{private:ListNodehead;public:LinkedList():head(newListNode(0)){}//Dummyheadvoidinsert(intval){ListNodenewNode=newListNode(val);newNode->next=head->next;head->next=newNode;}voidremove(intval){ListNodeprev=head;ListNodecurr=head->next;while(curr&&curr->val!=val){prev=curr;curr=curr->next;}if(curr){prev->next=curr->next;deletecurr;}}};```2.回文判断函数:```cppboolisPalindrome(conststd::string&s){intleft=0,right=s.size()-1;while(left<right){while(left<right&&!std::isalnum(s[left]))left++;while(left<right&&!std::isalnum(s[right]))right--;if(std::tolower(s[left])!=std::tolower(s[right]))returnfalse;left++;right--;}returntrue;}```3.二分查找算法:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届安顺市高三3月份模拟考试语文试题含解析
- 2026年新绛县教师招聘笔试参考题库及答案解析
- 2026年石楼县教师招聘笔试参考题库及答案解析
- 2026年进贤县教师招聘笔试参考题库及答案解析
- 2026年赣县区教师招聘笔试模拟试题及答案解析
- 2026福建宁德寿宁县国有企业招聘工作人员12人考试参考题库及答案解析
- 2026澄江市阳宗中心卫生院第一批次高校毕业见习生招聘(4人)考试参考题库及答案解析
- 2026焦作新材料职业学院继续教育学院招聘教师笔试模拟试题及答案解析
- 2026年伊通满族自治县教师招聘考试备考试题及答案解析
- 2026年肥东县教师招聘考试参考题库及答案解析
- 2026中国进出口银行招聘考试(专业知识)历年参考题库含答案详解
- 事业编计算机岗2026全真模拟
- 妇科肿瘤整合加速康复外科管理中国专家共识(2026年版)
- DZ/T 0054-2014定向钻探技术规程
- 应用型高校教学评价指标体系构建
- 城市高架桥防撞护栏安装方案
- 2024-2025学年人教版物理八年级上册 期中考试物理试卷
- JJF 1682-2017光栅式测微仪校准规范
- GB/T 37964-2019信息安全技术个人信息去标识化指南
- 2022年西式面点师(中级)考试题库大全(含答案)
评论
0/150
提交评论