作业7基本内容(含答案)_第1页
作业7基本内容(含答案)_第2页
作业7基本内容(含答案)_第3页
作业7基本内容(含答案)_第4页
作业7基本内容(含答案)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、作业7基本内容:要求:(最后的压缩文件rar提交到精品课程网站中)1 独立完成,作业雷同不予计算平时成绩;2 书面作业提交word文档,文件名为:班级+姓名+学号+(7).doc;3上机作业要上机调试通过,且写出测试数据及运行结果,放到2.的文档中;4提交上机作业的源程序cpp文件,标明题号; 5全部内容完成后,将上述内容压缩在一起,压缩文件名为:班级+姓名+学号+(7).rar 。一、书面作业:完成第六章教材练习与思考题6-5,6-6,6-7,6-8,6-96习题与习题解答6-1请说明以下语句的区别:(1)声明int* ptr;语句 *ptr = 2400; 与语句 ptr = 2400;

2、的区别。(2)声明int m = 10;语句int* mptr = &m; 与语句 int* mptr; *mptr = m; 的区别。(3)语句 char name = Computer; 与语句 char name = C, o, m, p, u, t, e, r ; 的区别。【解答】(1)声明int* ptr时,语句*ptr = 2400使指针ptr所指向的变量赋值为2400。而语句ptr = 2400使指针ptr本身赋值为2400,即使得该指针指向内存地址为2400的变量。(2)声明int m = 10时,语句int *mptr = &m使指针ptr的赋值为变量m的地址,使得指针mpt

3、r指向m。而语句*mptr = m表示使指针mptr所指向的变量(这时不一定是m)赋值为m的值,使得mptr所指向的变量的值与m的值相同。(3)声明char name = Computer声明一个字符数组,其内容初始化为Computer,该字符串有8个字符,再加上结束符0,数组name共有9个元素,且因为有结束符所以可看作字符串。声明char name = C, o, m, p, u, t, e, r声明一个字符数组,每个元素被分别初始化为C, o, m, p, u, t, e, r,该数组共有8个元素,因为没有结束符,该字符数组不可看作字符串。6-2请完成以下变量的声明(1)指向字符的指针变

4、量char_ptr;(2)10个字符的数组char_array;(3)指向字符串的指针变量 string_ptr;(4)10个字符串的数组string_array;(5)指向字符串数组的指针变量string_array_ptr;【分析】对于此题中复杂的变量声明可利用类型解析式进行解答。【解答】(1)声明为:char* char_ptr;(2)声明为:char char_array10;(3)首先该声明的类型解析式为:string_ptr-*-*-char,即string_ptr是指针,指向一个字符串,字符串通常声明为基类型是char类型的指针。从而本题相应的类型表达式是char*,其声明是:c

5、har* string_ptr;(4)首先该声明的类型解析式为:string_array-*-char,即string_ptr是有10个元素的数组,每个元素是字符串,字符串通常声明为基类型是char类型的指针。从而本题相应的类型表达式为char*,其声明是:char* string_ptr10;(5)首先该声明的类型解析式为:string_array_ptr-*-*-char,即string_array_ptr是指针,指向一个数组,该数组的每个元素是字符串。因此本题相应的类型表达式为:char*(*),其声明是:char* (*string_array_ptr);6-3请详细说明以下使用数组或

6、指针的程序片段有什么编译错误(1)int* age_ptr, test_ptr;int m = 3;*age_ptr = &m; test_ptr = &m;(2)int* salary_ptr;float* work_hours_ptr = 300.0;salary_ptr = work_hours_ptr;(3)int int_array10;int* int_ptr = new int10;int_array+; int_ptr+int_array = int_ptr;(4)extern int test_func(int);int (*func)(int);func = &test_f

7、unc;(*func)+;(5)char* depart;char name30;int int_array3;depart = Computer;name = Department;int_array = 1, 2, 3 ;(6)char name4 = Computer, Depart, Software, Engineer;int scores = 1, 2, 3, 4, 5, 6;float salary2 = 1, 2, 3, 4, 5, 6;int max_number = 4;double amountmax_number;【解答】(1)语句*age_ptr = &m产生语法错误

8、,*age_ptr代表指针age_ptr指向的变量,其类型为int,而&m取m的地址,其结果类型是int*,不能将int*类型的值转换为int类型。语句test_ptr = &m也产生语法错误,题中所声明的test_ptr实际上是int类型的变量,不是指针。(2)语句float* work_hours_ptr = 300.0产生语法错误,声明变量时的赋值运算符是分隔符,其右边的初始化表达式的结果要能赋值给左边的变量,这时*代表work_hours_ptr是指针,与类型名float结合,而不是与变量名结合,不能将double类型的常量转换为float*类型的数据。语句salary_ptr = w

9、ork_hours_ptr也产生错误,两个基类型不同的指针不能赋值。(3)语句int_array+和语句int_array = int_ptr产生语法错误,因为数组名被看作指针常量,其值不能改变,不能指向其它变量。这两个语句都试图改变指针常量int_array,因此产生语法错误。(4)语句(*func)+产生语法错误,函数指针同样被看作指针常量。实际上,(*func)相当于函数名字,不能做+运算。(5)语句name = Liu Bing产生语法错误,数组名被看作指针常量,该语句的含义是将name再指向字符串Liu Bing,这需要改变name的值。语句int_array = 1, 2, 3 也

10、产生错误,因为int_array被看作指针常量。注意语句depart = Computer Science并不产生语法错误,它使得指针depart指向字符串常量Computer Science,即使得depart的值为该字符串所在的存储空间的起始位置。(6)C+语言规定声明数组时只能最左边一维的长度可缺省,其它维必须使用常量表达式指定长度。因此本小题的name, scores和amount三个数组的声明都产生语法错误。6-4以下程序片段都没有任何语法错误,甚至连警告错误也没有(假设这些程序片段都正确地包含了头文件iostream.h和string.h),但它们在运行时都可能产生致命的错误,请指

11、出这些错误,并说明为什么(1)int* age_ptr;int age = 30;*age_ptr = age;(2)const int student_number = 20;int scoresstudent_number;for (int i = 1; i = student_number; i+) scoresi = 0;(3)const int name_len = 8;char namename_len = Computer;char departname_len = C, o, m, p, u, t, e, r;if (strcmp(name, depart) = 0) cout

12、 nDepart is equal to name?!;(4)const int row = 2, col = 2;float matrixrow, col;for (int j = 0; j row; j+)for (int k = 0; k col; k+) *(*(matrix+row*j)+k) = 0.0;(5)char *depart = Computer Science;char *univ = Zhongshan University;strcpy(depart, univ);cout Department of depart n;delete depart;delete un

13、iv;(6)const int msg_len = 80;char *error_msg = new charmsg_len+1;char *prompt_msg = new charmsg_len+1;strcpy(error_msg, Use character pointer error!);prompt_msg = error_msg;cout prompt_msg n;delete prompt_msg;delete error_msg;【解答】(1)语句*age_ptr = age;发生运行错误,声明指针age_ptr后,没有为之分配存储空间,则age_ptr的值是随机的,*age

14、_ptr引用的存储区域也是随机的,将age的值赋给该存储区域,将破坏未知存储区域的值而产生运行错误。(2)程序片段的for语句使用数组scores越界,引用数组元素的有效下标范围是从0到student_number-1。(3)语句char namename_len = Computer将产生运行错误,用于初始化数组的字符串共占9个字节的存储空间,而数组长度只有8个字节,不能容下该字符串。另外程序片段中的if语句也将产生运行错误,因为depart只是一个字符数组,没有结束符,不能看成字符串,函数strcmp()只能比较两个字符串,它根据字符串的结束符来结束比较。(4)数组matrix的使用越界,

15、按照二维数组与指针的关系知道,*(*(matrix + row * j) + k) 相当于matrixrow * jk,这当然越界。(5)语句strcpy(depart, univ)产生运行错误,因为指针depart指向的字符串占用17(即字符串Computer Science的长度加1)字节的存储空间,而指针univ所指向的字符串需要更多的内存,使用strcpy()函数进行拷贝将会破坏未知存储区域。语句delete depart和delete univ也会发生运行错误,因为上述程序片段使这两个指针分别指向两个字符串常量,没有为两个指针分配内存,因此不能释放其指向的内存。(6)语句delete

16、 error_msg将产生运行错误,因为语句prompt_msg = error_msg使得这两个指针互为别名而指向同一存储区域,释放prompt_msg所指向的存储区域也就释放了error_msg所指向的存储区域,但同一存储区域不能释放两次。该程序片段存在的另一问题是原先为prompt_msg分配的存储区域无法再访问,从而产生存储垃圾。【讨论】使用指针和数组容易产生的运行错误通常有以下几个方面:1.数组访问越界。特别注意将数组名字当做指针常量时,引用数组的元素不要越界。2.指针分配内存和释放内存不匹配。指针的初始化通常有两种方式,一是使其指向已存在的变量,此时该变量的内存不是通过指针动态分配

17、,也就不应该通过指针动态释放;二是为该指针动态分配内存,实际上是使该指针指向匿名的变量,此时该匿名变量的存储空间通过该指针动态分配,在该指针超出生存期前要释放该匿名变量占用的存储空间。在下述情况下要特别注意指针的存储分配和释放的匹配:a.指针的存储分配在条件语句(如if语句)中,这时要保证在同样条件下释放。b.函数参数是指针,且该指针必须分配存储空间,并在函数中要改变它所指向的变量的值时,作为实际参数的指针的内存分配和释放应由函数调用者负责,不应在函数中分配而由函数调用者负责释放。当函数调用者不知道函数需要多少存储空间时,可估计一个最大值,按最大值为实际参数分配存储空间。c.类有指针类型的成员

18、时,该成员的存储分配和释放往往不会在同一个成员函数进行,这时必须通过类的界面说明提醒类的使用者保证既调用分配该成员存储空间的成员函数,又调用释放该成员存储空间的成员函数。3.两个指针互为别名。两个指针互为别名容易产生运行错误,既可能产生存储垃圾,又可能重复释放存储空间,所以应尽量避免使两个指针互为别名,或尽量避免使两个指针长期指向同一变量,保证将一个指针的值赋给另一指针总是临时的,例如遍历链表的结点时,使用临时指针指向链表的每个结点通常不看作是指针别名的情况。6-5 请改正以下程序中的错误,使其能连续五次输出字符串string#include main()char string30 = Zho

19、ngshan Universityn;char* ptr = string;/ 连续五次输出字符串for (int loop = 0; loop = 4; loop = loop + 1)while (*ptr) cout *ptr;ptr = ptr + 1;return 0;【分析】仔细检查该程序可发现内层的while循环在第一次执行结束后,*ptr为0,即0,这样试图第二次打印字符串时,while循环的条件已不满足,从而第二次不会再执行循环,结果只能打印字符串string一次。因此该程序可修改为:【解答】打印字符串string五次#include main()char string30

20、= Zhongshan Universityn;char* ptr = string;/ 连续五次输出字符串for (int loop = 0; loop = 4; loop = loop + 1) while (*ptr) cout *ptr;ptr = ptr + 1;ptr = string;return 0;【讨论】有多重循环时,忘记对内层循环所需的变量进行初始化是初学者常犯的错误。虽然C+语言可在声明变量时初始化,但我们提倡将变量的使用尽量集中,变量的初始化是变量使用的一种特殊情况,所以应与变量的其他使用尽量放在一起,例如上述程序对ptr的初始化最好作为for循环体的第一句,因为pt

21、r的使用集中在for循环中。同样为遵循变量使用集中的原则,程序中不应随时引入变量的声明,而要将变量声明集中在函数的最前面。6-6 假定下面的各个函数function()都由以下的main()函数调用,试给出每次的输出。#include / 函数function()的适当原型说明int main()int x = 5;int y = 18;function(x, y);cout X is x , Y is y n;return 0;(1)void function(int a, int b)a = a + 1;b = b - 2;cout A is a , B is b n;return; (2

22、)void function(int a, int &b)a = a + 1;b = b - 2;cout A is a , B is b n;return; (3)void function(float &a, int &b)a = a + 1;b = b - 2;cout A is a , B is b n;return; 【分析】此题考察读者对参数传递方式的理解。C+语言有两种参数传递,一是按值传递,这时函数体对形式参数的修改不会影响实际参数;二是按引用传递,这时形式参数实际参数的别名,对形式参数的修改会影响实际参数。但在按引用传递时,如果实际参数的类型与形式参数类型不相同,就需要作隐式

23、类型转换,这种情况下,形式参数是实际参数作类型转换后得到的临时变量的别名,从而对形式参数的修改将影响到该临时变量,不会影响实际参数。【解答】程序片段的输出结果如下:(1)A is 6, B is 16X is 5, Y is 18(2)A is 6, B is 16X is 5, Y is 16(3)A is 6, B is 16X is 5, Y is 18/ 由于发生隐式类型转换而不会修改x的值6-7试改正下面使用枚举类型程序的语法错误:int main()enum COLOR_TYPE CtWHITE = 2, CtBLACK = 1, CtBLUE color;color = CtBL

24、ACK;switch (color) case CtWHITE: cout nThe color is white!; break;case CtBLACK: cout nThe color is black!; break;case CtBLUE: cout nThe color is blue!; break;return 0;【解答】声明枚举类型时,按枚举常量初始化规则,CtBLUE将初始化2,其值与CtWHITE相同,从而在switch语句中造成两个case后面的常量表达式的值相同,发生语法错误,改正是将CtBLUE显式初始化为除1和2之外的值。6-8(略)6-9下面程序用来生成n阶的

25、魔方阵(这里的n为奇数)。所谓n阶魔方阵是指这样一种方阵,它的每一行和每一列以及两个对角线上的n个自然数的和都相等,如下面就是一个3阶的魔方阵816357492试填写下面程序中的空格,使其能运行得到正确结果。#include #include const int MAX_LEN = 17+1;static int fill_magic(int magicMAX_LEN, int magic_len);static int print_magic(int magicMAX_LEN, int magic_len);int main()int magicMAX_LENMAX_LEN;int magi

26、c_len;do cout nPlease input an odd possitive integer;cout (= (MAX_LEN-1) magic_len; while (magic_len MAX_LEN | magic_len % 2 = 0);fill_magic(magic, magic_len);print_magic(magic, magic_len);return 0;int fill_magic(int magicMAX_LEN, int magic_len)int i, j, row, col, count;count = 1;row = 1;col = ;for

27、(i = 1; i = magic_len; i+) for (j = 1; j = magic_len; j+) magicrowcol = ; count+;if (-row magic_len) col = ;row += 2; if (row magic_len) row -= magic_len;col-; if (col 1) col += magic_len;return 1;int print_magic(int magicMAX_LEN, int magic_len)int row, col, count;cout nThe magic_len * ;cout magic_l

28、en magic matrix:n;for (count = 1; count = 4 * magic_len + 1; count+) cout -;for (row = 1; row = magic_len; row+) cout n;for (col = 1; col = magic_len; col+) cout setw(3) magicrowcol;cout n;for (count = 1; count = 4 * magic_len + 1; count+) cout -;return 1;【分析】求解程序填空题的关键是理解程序变量的作用。本题在不知道魔方填写规则的情况下也可根

29、据程序中变量的名字和使用猜出变量的作用,并填出程序的空。首先可看到与程序的空有关的变量主要是row和col,根据其名字容易猜出它们是魔方的行和列。它们当然应在魔方的有效范围内,从而第三和第四个空应该是将其维持在魔方的有效范围内,这样第三个空应将row设回为1,第四个空应将col设回为magic_len,从外层循环中知道魔方的有效范围是从1到magic_len。循环外面对col的初始化应该是数字1所填写的地方,从3阶魔方看,它应该是2,当然可想到它不可能对于其它魔方来说也是2,不难发现,对于n阶魔方发现该位置应该是第一行的中间,这样第一空可确定为(magic_len+1)/2。第二空不难猜它应该

30、是将当前数填至magicrowcol,而哪个变量记住了当前要填的数呢,显然是count,所以第二个空也解决了。在猜出所有空的解答后,应手工跟踪执行程序,检查是否能正确得到3阶魔方。【解答】(magic_len + 1) / 2count1magic_len6-10一般来说,C+语言编译系统都会提供一个函数int atoi(char *s)(该函数的原型一般在stdlib.h中)将一个字符串转换为对应的整数,如将串123转换为整数123。但该函数都有如下的缺陷,首先它不支持八进制和十六进制表示,其次当传入的串不能转换为整数时,函数输出结果为0,不能区别是否真的发生了错误。请自己实现一个函数改进该

31、函数,从而消除以上两个缺陷,例如新函数可这样声明int str_to_int(char *str, int &result),其中函数返回值来表示是否发生错误,在没有错误的情况下,result传回转换的结果。注意八进制和十六进制的处理。【分析】对此问题可使用自顶向下分解的办法得到程序。题目所要解决的问题是将一个字符串转换为整数,该字符串可以是整数的十进制、八进制或十六进制表示,若转换成功则使用result存放该整数的值(也就是转换的结果),并返回1,否则返回0。题目没有规定整数的八进制、十六进制的具体表示方式,这需要程序员自己确定,并作为该函数设计的一部分,以约束函数的调用者。可作出许多不同的

32、约定,但如果遵循C+语言的表示方式则更容易接受,所以我们决定,当字符串的第一个字符是0时,该字符串是整数的八进制表示,而头两个字符是0x或0X则是十六进制表示。确定这一点后,可将问题分解为两个步骤:1.确定字符串是整数的几进制表示。2.将字符串转换为整数。对于第二步,设字符串为a0a1a2.an-1,是整数的radius进制表示,转换结果要放在result中,转换算法可如下:1.设置初值,即令result = 0, i = 02.如果ai合法,将ai转换为相应的整数bit,否则转换失败。3.令result = result * radius + bit4.判断i是否大于n-1(即判断是否转换完

33、毕),成立则转换成功,否则转2上述算法的步骤2还可分解为两个问题,一怎样判断字符在某个进制下是否合法,二是将合法的字符转换为整数。通过这种分解,为实现函数str_to_int(),可引入下列函数:int get_radius(char* str);/ 判断一个字符串是几进制表示int check_bit(char bit_char, int radius);/ 判断某字符是否是某进制下合法的一位int get_bit(char bit_char, int radius);/ 转换用字符表示的一位为整数以下程序体现了上述思路:【解答】实现函数str_to_int()将字符串转换为整数,并演示其用

34、法:#include #include int get_radius(char* str)int radius;char first_char, second_char;first_char = str0; second_char = str1;radius = 10;if (first_char = 0) if (second_char = x | second_char = X) radius = 16;/ str以0x或0X开头else if (second_char = 1 & second_char = 7) radius = 8;/ str只以0开头else radius = 0;

35、 else if (first_char 9) radius = 0;/ 发现非法字符return radius;int check_bit(char bit, int radius)if (radius = 10) if (bit 9) return 0; else if (radius = 8) if (bit 7) return 0; else / 这里假定有radius = 16if (bit 9) & (bit F) &(bit f) return 0;return 1;int get_bit(char bit, int radius)if (radius = 10 | radius

36、 = 8) return (bit - 0);/ 假定bit已经合法if (bit = 0 & bit = A & bit = a & bit = f) return (bit - a + 10);return 0;int str2int(char *str, int &result)int radius;int bit;int begin_pos;int i;radius = get_radius(str);if (radius = 0) return 0;if (radius = 10) begin_pos = 0;/ 十进制时从第0个字符开始转换else if (radius = 8)

37、begin_pos = 1;/ 八进制时从第1个字符开始转换else begin_pos = 2;/ 十六进制时从第2个字符开始转换result = 0;for (i = begin_pos; stri != 0; i+) if (check_bit(stri, radius) = 0) return 0;bit = get_bit(stri, radius);result = result * radius + bit;return 1;int main()char intstring80;int result;int is_right;while (1) cout intstring;if

38、 (stricmp(intstring, quit) = 0) return 1;/ 输入quit表示结束转换is_right = str2int(intstring, result);if (is_right = 1) / 转换成功 cout nThe result is result of intstring ; else cout nHave error for intstring ;该程序的一个运行实例如下:Please input a string for transferring, input quit for quit: 3456The result is 3456 of 345

39、6Please input a string for transferring, input quit for quit: 03456The result is 1838 of 03456Please input a string for transferring, input quit for quit: 0x3456The result is 13398 of 0x3456Please input a string for transferring, input quit for quit: quit6-11第四章有一个练习要求编写一个函数将整数转换为对应的字符串输出,试改进该函数,以支持

40、将一个整数转换为任意进制表示的字符串,转换的结果不输出而放入参数传回调用程序。例如新函数可这样声明char* int_to_str(int num, int radius, char* result),其中num是待转换的整数,radius指明转换后的结果串使用多少进制表示法,result是转换后的结果字符串,该参数由上层调用程序负责分配足够的内存。该函数最后使用return result语句返回指向结果字符串的指针,以支持在表达式中直接引用结果串。【分析】本题实际是上题的逆问题。这里也需要确定转换后的字符串的表示方法。因为要支持任意进制,所以我们约定转换后的结果字符串不用在前面加上任何特殊的

41、字符表明是何种进制。因此本题得到的字符串如果是整数的十六进制表示,那么将该字符串用于上题函数以得到该整数时,须在该字符串前加0x或0X。具体算法的关键在于要将整数的最高位作为结果字符串的第一个字符,因此需要从整数的最高位开始转换,若number = (a0a1a2.an)radius,即它在radius进制下的每一位是a0, a1, a2, . ,an-1, an等,那么根据如下公式可得到ai:ai = (number / radiusn-i) % radius其中n是使得radiusn小于等于number的最大值,根据该公式,转换算法分两个步骤:1.求max_power = radiusn

42、其中n满足上述条件。 2.转换number的每一位放入字符串str中。第二步可继续分解为:1.设置初值,即令temp_num = number, i = 0, bit_power = max_power2.如果bit_power = 0,则转换完毕,结果在字符串str中,否则转33.令stri = (number / bit_power) % radius4.令i = i + 1, bit_power = bit_power / radius,转2根据上述思路可得到如下程序:【解答】实现函数int_to_str()将整数转换为字符串,并演示其用法:#include #include char

43、*int2str(int number, unsigned int radius, char *result)int left_num, left_char, num_idx;int max_power, left_power;max_power = 1;while (number / max_power) = radius) max_power = max_power * radius;left_power = max_power;num_idx = 0;while (left_power 0) left_num = (number / left_power) % radius;if (le

44、ft_num = 9) left_char = char(0 + left_num);else left_char = char(A + left_num - 10);resultnum_idx = left_char;num_idx = num_idx + 1;left_power = left_power / radius;resultnum_idx = 0;return result;int main()char intstring80;int number;while (1) cout number;if (number = 0) return 1;cout nThe 10 syste

45、m: number the 2 system: ;cout int2str(number, 2, intstring) the 16 system: ;cout int2str(number, 16, intstring);该程序的一个运行实例如下:Please input a number, input 0 for quit: 3456The 10 system: 3456 the 2 system: 110110000000 the 16 system: D80Please input a number, input 0 for quit: 06-12编写一个函数get_scores()接

46、受用户输入的语文、数学、物理、化学和英语五科成绩,在main()中利用get_scores()接受输入,然后计算总成绩与平均成绩。要求main()和get_scores()之间不得使用全局变量通信。【分析】题目要求主函数与函数get_scores()之间不能通过全局变量通信,那么可设计函数get_scores()有五个参数,分别代表各种分数,也可将这五个分数放入一个数组中,不过最好的设计还是定义一个结构存放这五个分数。【解答】输入分数并计算总成绩与平均成绩struct SCORES float literal;float math;float physics;float checmistry;

47、float english;void get_scores(SCORES *scores)cout scores-literal;cout scores-math;cout scores-physics;cout scores-checmistry;cout scores-english;return;int main()float total_score;float avg_score;SCORES scores;get_scores(&scores);total_score = scores.literal + scores.math + scores.physics;total_scor

48、e = total_score + scores.checmistry + scores.english;avg_score = total_score / 5;cout The total scores is total_score , ;cout And the average score is avg_score n;return 1;程序的一个运行实例如下:Please input the score of literal: 86Please input the score of math: 82Please input the score of physics: 88Please input the score of checmistry: 92Please input the score of english: 76The total scores is 424, And the average score is 84.8000036-13单向链表与本章的堆栈

温馨提示

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

评论

0/150

提交评论