蓝桥杯c组试题及答案_第1页
蓝桥杯c组试题及答案_第2页
蓝桥杯c组试题及答案_第3页
蓝桥杯c组试题及答案_第4页
蓝桥杯c组试题及答案_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

蓝桥杯c组试题及答案一、选择题(100分)1.以下关于C++中虚函数的说法正确的是()A.虚函数可以是静态成员函数B.虚函数不能是纯虚函数C.虚函数必须在基类中声明,在派生类中重新定义D.虚函数的调用是通过动态绑定实现的答案:D解释:虚函数的调用是通过动态绑定实现的。虚函数不能是静态成员函数,因为静态成员函数不属于对象,无法进行动态绑定;虚函数可以是纯虚函数;虚函数可以在派生类中重新定义,但不是必须在基类中声明。2.在C++中,以下哪个容器是连续存储的?A.listB.setC.vectorD.map答案:C解释:在C++的STL容器中,vector是连续存储的,它的元素在内存中是连续存放的。list是基于双向链表实现的,不是连续存储的;set和map是基于红黑树实现的,也不是连续存储的。deque(双端队列)虽然也是连续存储的,但它是由多个连续块组成的,不像vector那样完全连续。3.以下关于时间复杂度的说法,正确的是()A.O(n²)的时间复杂度一定比O(n)的差B.时间复杂度与常数因子无关C.时间复杂度只考虑最好情况D.时间复杂度与具体实现无关答案:B解释:时间复杂度与常数因子无关,它只考虑算法运行时间随输入规模增长的趋势。O(n²)的时间复杂度不一定比O(n)的差,因为当常数因子很小时,O(n²)的算法可能在实际运行中比O(n)的算法快;时间复杂度通常考虑最坏情况,也可以考虑平均情况;时间复杂度与具体实现有关,不同的实现可能导致不同的时间复杂度。4.在C++中,以下哪个关键字用于定义模板?A.templateB.typedefC.typenameD.class答案:A解释:在C++中,使用template关键字来定义模板。typedef用于定义类型别名;typename用于在模板中声明类型参数;class也可以用于在模板中声明类型参数,但template是定义模板的关键字。5.以下哪种排序算法的平均时间复杂度为O(nlogn)?A.冒泡排序B.选择排序C.快速排序D.插入排序答案:C解释:快速排序的平均时间复杂度为O(nlogn)。冒泡排序、选择排序和插入排序的平均时间复杂度都是O(n²)。6.在C++中,以下哪个函数用于动态分配内存?A.mallocB.freeC.newD.delete答案:C解释:在C++中,使用new关键字来动态分配内存。malloc是C语言中的函数,用于动态分配内存;free用于释放由malloc分配的内存;delete用于释放由new分配的内存。7.以下关于图的说法,正确的是()A.有向图一定是强连通图B.无向图的邻接矩阵是对称的C.图的遍历只能使用DFSD.最短路径问题只能使用Dijkstra算法解决答案:B解释:无向图的邻接矩阵是对称的,因为边(i,j)和边(j,i)是相同的。有向图不一定是强连通图;图的遍历可以使用DFS或BFS;最短路径问题可以使用Dijkstra算法、Bellman-Ford算法或Floyd算法等多种方法解决。8.在C++中,以下哪个容器支持随机访问?A.stackB.queueC.listD.deque答案:D解释:在C++的STL容器中,deque支持随机访问,它的元素可以通过下标直接访问。stack和queue不支持随机访问;list不支持随机访问,只能通过迭代器顺序访问。9.以下哪种数据结构适合实现表达式求值?A.队列B.栈C.树D.图答案:B解释:栈适合实现表达式求值,因为它可以方便地处理运算符的优先级和括号。队列适合实现广度优先搜索;树适合实现层次结构;图适合表示复杂的关系网络。10.在C++中,以下哪个关键字用于声明常量?A.constB.staticC.volatileD.mutable答案:A解释:在C++中,使用const关键字声明常量。static用于声明静态变量或函数;volatile用于声明易变的变量;mutable用于声明可以在常量成员函数中修改的成员变量。11.以下关于递归的说法,正确的是()A.递归一定比迭代效率低B.递归算法的空间复杂度通常比迭代高C.所有的递归算法都可以转换为迭代算法D.递归算法的时间复杂度通常比迭代高答案:C解释:所有的递归算法都可以转换为迭代算法,但有些问题用递归实现更自然、更简洁。递归算法的空间复杂度通常比迭代高,因为需要维护调用栈;递归算法的时间复杂度不一定比迭代高,有时反而更低。12.在C++中,以下哪个函数用于获取当前时间?A.time()B.clock()C.gettimeofday()D.alloftheabove答案:D解释:time()函数用于获取当前日历时间;clock()函数用于获取处理器时间;gettimeofday()函数用于获取高精度时间。这些函数都可以用于获取当前时间,但精度和用途不同。13.以下哪种算法适合解决背包问题?A.贪心算法B.分治算法C.动态规划D.回溯算法答案:C解释:背包问题最适合使用动态规划解决,因为它具有最优子结构和重叠子问题的特性。贪心算法不适合解决0-1背包问题;分治算法不适合解决背包问题,因为问题不能简单地分解为独立的子问题;回溯算法可以解决背包问题,但效率通常低于动态规划。14.在C++中,以下哪个头文件包含了STL容器的定义?A.<iostream>B.<vector>C.<algorithm>D.<string>答案:B解释:在C++中,<vector>头文件包含了vector容器的定义。<iostream>包含了输入输出流的相关操作;<algorithm>包含了STL算法;<string>包含了字符串类和相关操作。15.以下关于多线程的说法,正确的是()A.多线程总是提高程序的性能B.多线程不需要考虑线程安全问题C.多线程可以使用互斥锁来保护共享资源D.多线程只能使用C++11标准库实现答案:C解释:多线程不一定提高程序的性能,因为线程创建和切换都有开销;多线程需要考虑线程安全问题,以避免竞态条件;多线程可以使用互斥锁来保护共享资源;多线程可以使用多种方式实现,包括C++11标准库、POSIX线程库等。16.在C++中,以下哪个函数用于计算字符串长度?A.strlen()B.strcpy()C.strcmp()D.strcat()答案:A解释:在C++中,strlen()函数用于计算字符串长度;strcpy()函数用于复制字符串;strcmp()函数用于比较字符串;strcat()函数用于连接字符串。17.以下哪种排序算法是稳定的?A.快速排序B.堆排序C.归并排序D.希尔排序答案:C解释:归并排序是稳定的排序算法,因为它在合并时保持相等元素的相对顺序。快速排序、堆排序和希尔排序都是不稳定的排序算法。18.在C++中,以下哪个关键字用于声明虚基类?A.virtualB.overrideC.finalD.explicit答案:A解释:在C++中,使用virtual关键字声明虚基类,以避免多重继承中的二义性问题。override关键字用于声明重写基类虚函数的函数;final关键字用于防止虚函数被重写;explicit关键字用于防止隐式类型转换。19.以下关于哈希表的说法,正确的是()A.哈希表的查找时间复杂度一定是O(1)B.哈希冲突会导致数据丢失C.哈希表的负载因子越大,效率越高D.哈希表的实现可以使用开放寻址法或链地址法答案:D解释:哈希表的查找时间复杂度不一定是O(1),在最坏情况下可能为O(n);哈希冲突不会导致数据丢失,而是需要通过冲突解决方法处理;哈希表的负载因子越大,冲突的概率越高,效率越低;哈希表可以使用开放寻址法或链地址法实现。20.在C++中,以下哪个函数用于将字符串转换为整数?A.atoi()B.atof()C.atol()D.itoa()答案:A解释:在C++中,atoi()函数用于将字符串转换为整数;atof()函数用于将字符串转换为浮点数;atol()函数用于将字符串转换为长整型;itoa()函数用于将整数转换为字符串(注意,itoa()不是标准C++函数,而是某些编译器扩展的函数)。二、填空题(50分)1.在C++中,使用____关键字可以声明一个虚函数,以便实现多态。答案:virtual解释:在C++中,使用virtual关键字可以声明一个虚函数,以便实现多态。虚函数允许在派生类中重新定义,并通过动态绑定机制在运行时确定调用哪个版本的函数。2.快速排序的平均时间复杂度为____,最坏时间复杂度为____。答案:O(nlogn),O(n²)解释:快速排序的平均时间复杂度为O(nlogn),最坏时间复杂度为O(n²)。最坏情况发生在每次划分都极不平衡时,例如数组已经有序或逆序。3.在C++中,使用____容器可以实现队列数据结构。答案:queue解释:在C++中,使用queue容器可以实现队列数据结构。queue提供了入队(push)、出队(pop)、查看队首元素(front)等操作。4.二叉树的遍历方式有前序遍历、____和后序遍历。答案:中序遍历解释:二叉树的遍历方式有前序遍历、中序遍历和后序遍历。前序遍历的顺序是根-左-右;中序遍历的顺序是左-根-右;后序遍历的顺序是左-右-根。5.在C++中,使用____关键字可以声明一个常量成员函数,该函数不会修改对象的状态。答案:const解释:在C++中,使用const关键字可以声明一个常量成员函数,该函数不会修改对象的状态。常量成员函数可以访问对象的成员变量,但不能修改它们。6.动态规划的核心思想是将问题分解为子问题,并通过____来避免重复计算。答案:记忆化解释:动态规划的核心思想是将问题分解为子问题,并通过记忆化来避免重复计算。记忆化是指将已经计算过的子问题的结果存储起来,以便在需要时直接使用,而不是重新计算。7.在C++中,使用____函数可以获取当前系统的毫秒时间。答案:clock()或gettimeofday()解释:在C++中,可以使用clock()函数获取当前系统的毫秒时间(需要适当转换),或者使用gettimeofday()函数获取高精度时间。clock()函数返回的是处理器时间,而gettimeofday()函数返回的是日历时间。8.图的存储方式有邻接矩阵和____两种。答案:邻接表解释:图的存储方式有邻接矩阵和邻接表两种。邻接矩阵使用二维数组表示图中各顶点之间的相邻关系;邻接表使用链表或数组存储每个顶点的邻接点。9.在C++中,使用____关键字可以声明一个模板参数。答案:template解释:在C++中,使用template关键字可以声明一个模板参数。模板参数可以是类型参数(使用typename或class声明)或非类型参数(如常量值)。10.在C++中,使用____函数可以将字符串转换为浮点数。答案:atof()解释:在C++中,atof()函数用于将字符串转换为浮点数。该函数接受一个C风格字符串作为参数,并返回对应的double类型值。三、编程题(150分)1.编写一个函数,实现字符串的反转。要求时间复杂度为O(n),空间复杂度为O(1)。函数原型如下:```cppvoidreverseString(charstr);```答案:```cppvoidreverseString(charstr){if(str==nullptr)return;intlength=strlen(str);for(inti=0;i<length/2;i++){//交换第i个字符和第length-i-1个字符chartemp=str[i];str[i]=str[length-i-1];str[length-i-1]=temp;}}```解释:这个函数使用双指针法实现字符串反转。一个指针指向字符串开头,另一个指针指向字符串末尾,然后交换这两个指针所指的字符,并向中间移动指针,直到两个指针相遇。这种方法的时间复杂度是O(n),空间复杂度是O(1),因为它只使用了常数个额外空间。2.实现一个简单的计算器,能够处理加减乘除四种基本运算。要求输入为一个字符串表达式,输出计算结果。假设输入的表达式是合法的,且只包含数字和运算符。例如,输入"3+52",输出应为13。使用栈来实现表达式求值。函数原型如下:```cppdoublecalculate(conststring&expression);```答案:```cppinclude<stack>include<string>include<cctype>doublecalculate(conststring&expression){stack<double>nums;//存储数字stack<char>ops;//存储运算符for(inti=0;i<expression.size();i++){charc=expression[i];if(c=='')continue;//跳过空格if(isdigit(c)||c=='.'){//处理数字doublenum=0;intdecimalPlaces=0;boolhasDecimal=false;while(i<expression.size()&&(isdigit(expression[i])||expression[i]=='.')){if(expression[i]=='.'){hasDecimal=true;i++;continue;}if(hasDecimal){decimalPlaces++;num=num+(expression[i]-'0')/pow(10,decimalPlaces);}else{num=num10+(expression[i]-'0');}i++;}i--;//回退一个字符,因为for循环会自增nums.push(num);}elseif(c=='('){//左括号直接入栈ops.push(c);}elseif(c==')'){//右括号,计算到左括号while(ops.top()!='('){applyOp(nums,ops);}ops.pop();//弹出左括号}else{//运算符,考虑优先级while(!ops.empty()&&precedence(ops.top())>=precedence(c)){applyOp(nums,ops);}ops.push(c);}}//处理剩余的运算符while(!ops.empty()){applyOp(nums,ops);}returnnums.top();}intprecedence(charop){if(op=='+'||op=='-')return1;if(op==''||op=='/')return2;return0;}voidapplyOp(stack<double>&nums,stack<char>&ops){doublenum2=nums.top();nums.pop();doublenum1=nums.top();nums.pop();charop=ops.top();ops.pop();switch(op){case'+':nums.push(num1+num2);break;case'-':nums.push(num1-num2);break;case'':nums.push(num1num2);break;case'/':nums.push(num1/num2);break;}}```解释:这个函数使用两个栈来实现表达式求值,一个栈用于存储数字,另一个栈用于存储运算符。函数从左到右扫描表达式,遇到数字就解析并压入数字栈,遇到运算符就根据优先级决定是否立即计算。当遇到右括号时,计算到左括号之间的所有运算。最后,处理栈中剩余的运算符,得到最终结果。这种方法可以正确处理运算符优先级和括号,时间复杂度为O(n),其中n是表达式的长度。3.实现一个函数,判断一个二叉树是否是平衡二叉树。平衡二叉树定义为:任意节点的左右子树高度差不超过1。函数原型如下:```cppboolisBalanced(TreeNoderoot);```答案:```cppstructTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx):val(x),left(NULL),right(NULL){}};boolisBalanced(TreeNoderoot){returncheckHeight(root)!=-1;}intcheckHeight(TreeNoderoot){if(root==NULL)return0;//递归检查左子树intleftHeight=checkHeight(root->left);if(leftHeight==-1)return-1;//递归检查右子树intrightHeight=checkHeight(root->right);if(rightHeight==-1)return-1;//检查当前节点是否平衡if(abs(leftHeight-rightHeight)>1)return-1;//返回当前节点的高度returnmax(leftHeight,rightHeight)+1;}```解释:这个函数使用递归的方法判断二叉树是否平衡。对于每个节点,函数递归地计算其左右子树的高度。如果左右子树的高度差超过1,则返回-1表示不平衡;否则返回该节点的高度。在主函数中,如果checkHeight函数返回-1,则表示树不平衡;否则表示平衡。这种方法的时间复杂度为O(n),因为每个节点只被访问一次;空间复杂度为O(h),其中h是树的高度,这是由于递归调用栈的空间开销。4.实现一个函数,找出数组中第k大的元素。要求时间复杂度为O(n)。可以使用快速排序的思想或使用堆来实现。函数原型如下:```cppintfindKthLargest(vector<int>&nums,intk);```答案:```cppintfindKthLargest(vector<int>&nums,intk){returnquickSelect(nums,0,nums.size()-1,nums.size()-k);}intquickSelect(vector<int>&nums,intleft,intright,intk){if(left==right)returnnums[left];intpivotIndex=partition(nums,left,right);if(k==pivotIndex){returnnums[k];}elseif(k<pivotIndex){returnquickSelect(nums,left,pivotIndex-1,k);}else{returnquickSelect(nums,pivotIndex+1,right,k);}}intpartition(vector<int>&nums,intleft,intright){intpivotIndex=left+rand()%(right-left+1);intpivotValue=nums[pivotIndex];//将pivot移到末尾swap(nums[pivotIndex],nums[right]);intstoreIndex=left;for(inti=left;i<right;i++){if(nums[i]<pivotValue){swap(nums[storeIndex],nums[i]);storeIndex++;}}//将pivot移到正确的位置swap(nums[right],nums[storeIndex]);returnstoreIndex;}```解释:这个函数使用快速选择算法(Quickselect)来找出数组中第k大的元素。快速选择算法是快速排序的变种,它通过分区操作将数组分为两部分,然后根据k的值决定在哪一部分继续查找。分区操作选择一个随机pivot,将小于pivot的元素移到左边,大于pivot的元素移到右边。然后根据pivot的位置与k的关系,决定在左半部分还是右半部分继续查找。这种方法的时间复杂度平均为O(n),最坏情况下为O(n²),但通过随机选择pivot可以避免最坏情况。5.实现一个函数,解决旅行商问题(TSP)。给定一个n个城市的距离矩阵,找出一条从城市0出发,访问所有城市一次并返回城市0的最短路径。可以使用动态规划或回溯算法实现。函数原型如下:```cppinttsp(vector<vector<int>>&distances);```答案:```cppinttsp(vector<vector<int>>&distances){intn=distances.size();if(n==0)return0;//dp[mask][i]表示从城市0出发,已经访问过的城市集合为mask,当前在城市i的最短路径vector<vector<int>>dp(1<<n,vector<int>(n,INT_MAX));//初始化:从城市0出发,到达城市0的距离为0dp[1][0]=0;//遍历所有可能的访问状态for(intmask=1;mask<(1<<n);mask++){//遍历所有城市for(inti=0;i<n;i++){//如果当前状态mask包含城市iif(mask&(1<<i)){//遍历所有可能的前一个城市for(intj=0;j<n;j++){//如果前一个城市j在mask中,并且从j到i有路径if((mask&(1<<j))&&distances[j][i]!=0){intprevMask=mask^(1<<i);if(dp[prevMask][j]!=INT_MAX){dp[mask][i]=min(dp[mask][i],dp[prevMask][j]+distances[j][i]);}}}}}}//找出从城市0出发,访问所有城市后返回城市0的最短路径intresult=INT_MAX;intfullMask=(1<<n)-1;for(inti=1;i<n;i++){if(distances[i][0]!=0){result=min(result,dp[fullMask][i]+distances[i][0]);}}returnresult;}```解释:这个函数使用动态规划来解决旅行商问题。状态定义为dp[mask][i],表示从城市0出发,已经访问过的城市集合为mask(用二进制位表示),当前在城市i的最短路径。初始化时,从城市0出发到达城市0的距离为0。然后,对于每个状态,通过遍历所有可能的前一个城市,更新当前状态的最短路径。最后,找出从城市0出发,访问所有城市后返回城市0的最短路径。这种方法的时间复杂度为O(n²2ⁿ),空间复杂度为O(n2ⁿ),其中n是城市的数量。四、简答题(60分)1.解释什么是大O表示法,并分析冒泡排序、快速排序和归并排序的时间复杂度。比较这三种排序算法的优缺点和适用场景。(20分)答案:大O表示法是一种描述算法时间复杂度和空间复杂度的数学表示方法,它描述的是算法运行时间或空间需求随输入规模增长的增长趋势,而不考虑具体的常数因子和低阶项。大O表示法关注的是算法的asymptoticbehavior(渐进行为),即当输入规模趋于无穷大时的性能表现。冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的元素,如果它们的顺序错误就交换它们。冒泡排序的平均时间复杂度和最坏时间复杂度都是O(n²),最好时间复杂度是O(n)(当列表已经有序时)。冒泡排序的空间复杂度是O(1),因为它只需要常数个额外空间。快速排序是一种分治算法,它选择一个元素作为基准(pivot),将数组分为两部分,一部分小于基准,一部分大于基准,然后递归地对这两部分进行排序。快速排序的平均时间复杂度是O(nlogn),最坏时间复杂度是O(n²)(当每次划分都极不平衡时),最好时间复杂度是O(nlogn)。快速排序的空间复杂度是O(logn)(由于递归调用栈),但最坏情况下是O(n)。归并排序也是一种分治算法,它将数组分成两半,递归地对这两半进行排序,然后将排序好的两半合并。归并排序的时间复杂度在最好、平均和最坏情况下都是O(nlogn)。归并排序的空间复杂度是O(n),因为它需要额外的空间来存储合并的结果。比较这三种排序算法的优缺点和适用场景:-冒泡排序的优点是实现简单,空间复杂度低;缺点是时间复杂度高,不适合大规模数据排序。适用于小规模数据或基本有序的数据。-快速排序的优点是平均情况下效率高,常数因子小;缺点是worst-case性能差,且是不稳定的排序算法。适用于大规模随机数据,但在数据已经有序或逆序时性能较差。-归并排序的优点是稳定,且在各种情况下性能一致;缺点是空间复杂度高,且常数因子较大。适用于大规模数据,特别是当需要稳定排序时。在实际应用中,选择排序算法需要考虑数据规模、数据特性、是否需要稳定排序等因素。对于小规模数据,简单的排序算法如冒泡排序可能更高效;对于大规模数据,快速排序和归并排序通常是更好的选择。此外,现代编程语言的标准库通常会使用混合排序算法(如Introsort),结合了快速排序、堆排序和插入排序的优点,以在各种情况下都能保持较好的性能。2.解释什么是动态规划,并举例说明动态规划解决问题的基本步骤。以斐波那契数列为例,说明如何使用动态规划优化递归算法。(20分)答案:动态规划(DynamicProgramming,DP)是一种解决复杂问题的算法设计方法,它将问题分解为相互重叠的子问题,通过存储子问题的解来避免重复计算,从而提高算法的效率。动态规划适用于具有最优子结构和重叠子问题特性的问题。动态规划解决问题的基本步骤如下:1.定义状态:确定如何描述问题的子问题,通常使用一个或多个变量来表示状态。2.找出状态转移方程:确定如何从子问题的解得到更大问题的解,即状态之间的关系。3.确定初始条件:确定最简单的子问题的解,作为递归的基础。4.确定计算顺序:确定子问题的计算顺序,确保在计算一个子问题时,它所依赖的子问题已经被计算过。5.实现算法:根据上述分析,实现动态规划算法,可以使用自底向上的迭代方法或自顶向下的记忆化递归方法。以斐波那契数列为例,斐波那契数列定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)。使用递归方法计算斐波那契数列的代码如下:```cppintfibonacci(intn){if(n<=1)returnn;returnfibonacci(n-1)+fibonacci(n-2);}```这种递归方法的时间复杂度是O(2ⁿ),因为每个函数调用会产生两个新的函数调用,导致大量的重复计算。例如,计算fibonacci(5)时,fibonacci(3)会被计算两次,fibonacci(2)会被计算三次,等等。使用动态规划优化递归算法的方法有两种:记忆化递归和自底向上迭代。记忆化递归的方法如下:```cppintfibonacci(intn,vector<int>&memo){if(n<=1)returnn;//如果已经计算过,直接返回结果if(memo[n]!=-1)returnmemo[n];//计算并存储结果memo[n]=fibonacci(n-1,memo)+fibonacci(n-2,memo);returnmemo[n];}intfibonacciMemo(intn){vector<int>memo(n+1,-1);returnfibonacci(n,memo);}```自底向上迭代的方法如下:```cppintfibonacciDP(intn){if(n<=1)returnn;vector<int>dp(n+1);dp[0]=0;dp[1]=1;for(inti=2;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}returndp[n];}```优化后的动态规划方法的时间复杂度是O(n),空间复杂度也是O(n)。对于斐波那契数列,还可以进一步优化空间复杂度,因为计算fibonacci(n)只需要fibonacci(n-1)和fibonacci(n-2)的值,所以可以只存储这两个值,将空间复杂度降低到O(1):```cppintfibonacciOptimized(intn){if(n<=1)returnn;intprev=0;intcurr=1;for(inti=2;i<=n;i++){intnext=prev+curr;prev=curr;curr=next;}returncurr;}```通过动态规划优化,斐波那契数列的计算效率从O(2ⁿ)提高到了O(n),这是一个显著的改进。这展示了动态规划如何通过避免重复计算来提高算法效率。3.解释什么是多态,并说明C++中实现多态的机制。比较虚函数、纯虚函数和抽象类的区别和联系。(20分)答案:多态(Polymorphism)是面向对象编程的三大特性之一(另外两个是封装和继承),它指的是同一操作作用于不同的对象,可以有不同的解释和执行结果。简单来说,多态允许我们使用基类指针或引用来调用派生类的函数,而具体调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论