《C语言学习与应用》教学课件09字符串操作_第1页
《C语言学习与应用》教学课件09字符串操作_第2页
《C语言学习与应用》教学课件09字符串操作_第3页
《C语言学习与应用》教学课件09字符串操作_第4页
《C语言学习与应用》教学课件09字符串操作_第5页
已阅读5页,还剩69页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

任务说明

C语言中,字符是一个可用ASCII码表示的单个字符,在内存中占一个字节,将若干个字符连起来用字符型数组存储就是字符串。单个字符串可用一维数组表示,二维数组可表示多个字符串,对字符串的各种操作是建立在数组操作基础上的。

这个任务就是学习掌握针对字符串的程序设计。微课任务说明知识要求了解字符与字符串常量。掌握字符的运算及字符与数字之间的转换。掌握字符的加密算法。熟悉字符与字符串的常用函数。掌握字符串的遍历方法。能够编写对单个字符操作的函数。能够编写对字符串操作的函数。能够编写对多个字符串操作的函数。能够排查程序中的错误。能够倾听小组同学的问题并协商解决问题的方法。能力要求字符011.字符与字符串常量

字符常量是用单引号括起来的一个字符或以反斜线开头的转义字符。在内存中占用一个字节,存储的是该字符的ASCII码。字符串常量是用双引号括起来的一串字符,其中隐含一个结束符(‘\0’),因此字符串常量在内存中所占字节数等于有效字符的个数+1,可以用strlen()函数测试有效字符的个数,结束符(‘\0’)不计算在内。例如strlen(“ABC“)的值是3,strlen(“AB\0C”)的值是2,统计至结束符之前的有效字符数。表9-1字符常量对照表字符常量举例注释‘A’普通字符常量,在内存占一个字节,存该字符的ASCII‘\n’转义字符常量‘\101’‘\ddd’由1~3位八进制数构成的转义字符‘\x41’‘\xhh’由1~2位十六进制数构成的转义字符‘\0’ASCII码为0的结束符表9-1字符串常量对照表字符串常量举例注释”A”字符串常量,在内存占2个字节存’A’和’\0’“ABC”在内存占4个字节存’A’,’B’,’C’和’\0’,strlen(“ABC”)的值是3“\101\x42\103”就是用转义字符表示的“ABC”“”字符串常量,是空串,在内存占1个字节,存放的是‘\0’“AB\0C”strlen(“AB\0C”)的值是2,统计结束符之前的字符个数

"AB\061C"strlen("AB\061C")的值是4ˈ,\061ˈ是字符ˈ1ˈ微课字符常量与字符串常量2.字符的运算

由于字符在内存中是以ASCII码形式存储的,因此字符可以参与运算(整型常量或整型变量的值在0~127之间的运算)。例如,ˈCˈ−ˈAˈ的值为2,ˈAˈ+32的值为97或ˈaˈ,9+ˈ0ˈ的值为ˈ9ˈ;ˈ9ˈ−ˈ0ˈ的值为9。说明:

一位数字转换为对应字符的方法为数字+ˈ0ˈ,如6+ˈ0ˈ的值是ˈ6ˈ;一个数字字符转换为对应的数字的方法为数字字符−ˈ0ˈ,如ˈ5ˈ−ˈ0ˈ是数5。3.专用于字符输入/输出的函数(1)scanf函数的%c格式

可以用scanf函数的%c格式输入字符,因为按任意键都可以作为字符接收,所以要使变量获得期望值,须用对输入进行设计,否则得不到正确的输入。问题9-1下面这段程序,欲使c1获得字符A,c2获得字符B,a1为7.29,a2为101.29,如何输入?voidmain(){charc1,c2;floata1,a2;scanf("%f%f",&a1,&a2);scanf("%c%c",&c1,&c2);printf("a1=%f,a2=%f,c1=%c,c2=%c\n",a1,a2,c1,c2);}请思考怎样输入:

除了需要精心设计输入外,还有其他办法吗?

在两条输入语句之间插入“fflush(stdin);”语句,在输入此函数后面的字符时只能按Enter键与前面的输入内容做间隔。看看效果,这是清空标准输入缓冲区的函数,挺管用的!(2)putchar和getchar函数

这是专用于单个字符的输出和输入函数,使用时必须包含头文件stdio.h。使用形式:putchar(ch);//ch可以是字符常量或变量,用于输出一个字符。ch=getchar();//ch是字符变量,等待从键盘输入一个字符,存入字符变量ch中。应用举例9-1:字符加密。

输入若干字符回车结束,将其中的字母均转换为对应的小写字母的后一个字母,其它字符原样输出,就是对字母的加密操作。

分析:对输入的若干字符如果不需要保存,输入后立即按要求输出,只定义一个变量即可。可以有以下两种程序设计形式。第一种:c=getchar()出现在两处…c=getchar();//先输入一个字符赋给变量cwhile(c!=‘\n’)//看c是否是回车换行符,决定程序走向。{…c=getchar();…}…第二种:c=getchar()出现在一处合并两处的c=getchar()语句,并写进while表达式中,其中(c=getchar())一对括号必不可少,否则是“!=”优先,违背了意图,应该是先接收后判断。…while((c=getchar())!=‘\n’){…}加密算法公式“c=(c-‘a’+1)%26+‘a’”中,如“c=‘e’”计算后c为‘f’;如“c=‘z’”计算后c为‘a’。(3)tolower(c)和isalpha(c)。编写字符操作的程序,使用有关字符处理的函数很方便,使用时需包含头文件ctype.h,若c=‘B’,则tolower(c)的函数值为‘b’,isalpha(c)函数判断c是否是字母,若c是字母,则函数值为1,否则为0。#include"stdio.h"#include"ctype.h"voidmain(){charc; while((c=getchar())!='\n') { if(isalpha(c)) { c=tolower(c); c=(c-'a'+1)%26+'a'; } putchar(c);}putchar('\n');}输入:ty67*&Aser输出:uz67*&btfs问题9-2:输入若干字符后按Enter键结束,将其中的字母均转换为后序的第二个字母,其他字符原样输出。如输入:ty67*&Aser,则输出:va67*&Cugt。请思考如何编写程序?字符串021.用一维数组存放字符串C语言无字符串变量,字符串的存储依赖于字符型数组,存放字符串的字符型数组以字符‘\0’作为字符串的结束标志,这是字符型数组当字符串使的一个标志,‘\0’不计入字符串长度但占存储空间,没有结束符的字符型数组不能整体引用,就不能整体引用,只能一个字符一个字符的输出;有结束符的字符型数组就是一个字符串,可以整体输出。

对于字符串常量,C编译系统会自动加结束符,并产生一个指向字符串第一个字符的地址。

如有char*sp,s[10];则sp=“hello”;使用是合法的,理解为将字符串常量的首地址赋给指针变量。而写作s=“hello”;就错了,不能将字符串常量赋给s,因s是数组名,是地址常量,不能被赋值。

给字符型数组赋字符串可以在初始化时进行。字符型数组做字符串,必须有结束符。微课一维数组存放字符串

应用举例2-1

计算表达式的值charstr[10]={‘h’,‘e’,‘l’,‘l’,‘o’};

charstr[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};

str[10]={‘h’,‘e’,‘l’,‘l’,‘o’,0};

charstr[]={‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};

charstr[]={“hello”};charstr[]=“hello”;charstr[10]=“hello”;str[5]=“hello”;

charstr[]={‘h’,‘e’,‘l’,‘l’,‘o’};问题9-3:以下对字符型数组的赋值中,是字符串、字符型数组还是错误?请说明:02

在非定义时给字符数组赋字符串只能通过函数或逐个元素赋值。如charstr[10];str=“hello”;是错误的,数组名是地址常量不能被赋值。charstr1[10]=“hello”,str2[10];str2=str1;也同样错误。

可以逐个为字符型数组元素赋值,并赋结束符达到目的。如charstr[10];str[0]=‘h’;str[1]=‘e’;str[2]=‘l’;str[3]=‘l’;str[4]=‘o’;str[5]=‘\0’;经此赋值后,str数组可以充当字符串使用。

还可以使用函数strcpy,如charstr[10];strcpy(str,“hello”);可以实现将字符串“hello”赋给str数组。022.用指针指向一个字符串

char*ps;ps=“formone”;

定义了一个指针变量,将一个字符串常量的首地址赋给指针变量,也可以将两句合并为一句,成为下面的形式。char*ps=“formone”;

定义了指针变量ps,同时将字符串常量的首地址赋给指针变量。charstr[]=“formone”,*ps;ps=str;

定义一个数组和一个指针变量,指针变量被赋值。注意:charstr[]=“form”;与char*ps=“form”;不同,前者定义了五个变量,后者只定义一个变量;前者的五个变量分别存各个字符,后者的一个变量存放的是字符串的首地址,后者还可通过赋值指向其他字符串。023.字符串的输入与输出(1)用scanf和printf输入/输出字符串。

输入格式:scanf(“%s”,adr);

输入后按Enter键结束,输入的字符依次存入adr地址开始的存储单元中,并自动赋结束符。adr为地址,可以是数组名、数组元素的地址或指针变量。为保证输入正确,若是数组名,应在定义数组时开辟足够大的空间;若是指针,指针应有确切的指向,空间要够。

应用举例2-1

计算表达式的值chars[4];scanf(“%s”,s);chars[3];scanf(“%s”,s);char*ps=“efghi”;scanf(“%s”,ps);char*ps;scanf(“%s”,ps);注意:

用scanf的%s输入字符串时,空格键和Enter键都作为分隔符不能被读入,按Enter键可结束输入。chars[14];scanf(“%s”,s);输入“aboy.”后按Enter键,则s[0]为‘a’,s[1]为‘\0’,只接收了“a”。

输出格式“printf(“%s”,adr);”从adr地址开始依次输出存储单元中的字符,遇结束符止停止输出,结束符不输出,输出不自动换行。问题9-4:想输入abc字符串,判断以下各输入是否正确。请判断:02

(2)gets和puts函数。

输入字符串的函数:gets(adr)adr为地址与scanf中的相同,从终端键盘读入字符串直到读入一个换行符为止,换行符不作为读入内容,自动加结束符,与scanf的区别是可读入空格符。

输出字符串的函数:puts(adr)

从adr地址开始依次输出存储单元中的字符,直到结束符止,并自动输出一个换行符。puts(adr)与printf(“%s\n”,adr)等效。024.用于字符串处理的函数C语言没有提供对字符串进行整体操作的运算符,不能通过运算符对字符串进行赋值、合并和比较运算,但可以通过库函数实现这些操作,下面介绍的这些库函数在使用时,要用命令行包含头文件“string.h”。strcpy(s1,s2)

把s2所指字符串的内容复制到s1所指存储空间中,函数值为s1,使用时s1必须指向一个足够容纳s2的空间。strcat(s1,s2)

把s2所指字符串的内容连接到s1所指字符串的后面并覆盖s1的结束符,函数值为s1。注意s1必须指向一个足够容纳两串连接后的空间。strlen(s)

计算以s为起始地址的字符串长度,不包括结束符,函数值为一个整型数。类似的sizeof是求存储空间的字节数,如sizeof(double)为8,若有doublea[3];则sizeof(a)为24,注意strlen与sizeof的区别。strcmp(s1,s2)

比较s1、s2所指字符串的大小,比较的依据是字符串中第一个字符的ASCII值,当相等时再顺序比较第二个、第三个、第四个…,当s1>s2时,函数值为正数;当串s1<串s2时,函数值为负数;当s1==s2时函数值为0。025.字符串的遍历方法

编写字符串的操作函数一般要遍历字符串,因字符串有结束标志,其值为假,故对字符串搜索一遍可有以下方法。voidfun(char*s){inti=0;while(s[i]!=‘\0’)i++;或while(s[i])i++;或while(*(s+i))i++;或while(*s)s++;............................................................................................................................................................}应用举例9-2编写函数返回s所指字符串的长度。#include"stdio.h"intslength(char*s){inti=0;while(*s)//使用指针搜一遍,指针跑起来{i++;s++;}returni;}应用举例9-2voidmain(){chara[80];gets(a);printf("%d",slength(a));}输入:hkh567868khjk输出:14注意:上题中的遍历采用:while(*s)s++;,用i++计数,输入中含有一个空格。微课应用举例9-2问题9-5:换一种遍历方法统计字符串的长度。#include"stdio.h"intslength(char*s){........................................................................................................}voidmain(){chara[80];gets(a);printf("%d",slength(a));}应用举例9-3:删除字符串中的指定字符。#include"string.h"#include"ctype.h"//包含有关字符操作函数的头文件voidfun(charstr[]){inti,j;for(i=0,j=0;str[i];i++)//用str[i];i++搜索字符串if(isalpha(str[i]))//判断是否为字母的函数str[j++]=str[i];//重新为该数组赋值str[j]='\0';//为新数组赋结束符}voidmain(){charss[80]="Itis!";//定义字符数组,并初始化fun(ss);//调用函数,传递的是数组名printf("%s\n",ss);//输出字符串}输出:Itis注意:如果在if中写上需要保留的字符特征,就可以删除字串中不需要的内容。将if语句修改为:if(str[i]!=‘’)就是删除字串中的空格了,一定要为新字符串赋结束符。微课应用举例9-3应用举例9-4:登陆程序

一些应用程序的使用需要登陆码,而且输入登陆码的次数一般限定3次,编写一个检测登陆码的函数,可以将其嵌入到其它程序中方便使用。

知识链接:getch函数

与getchar函数相仿的还有getch和getche函数。getch函数用于不显示输入的字符,无需按Enter键结束,输入即接收,须包含conio.h头文件。getche函数用于显示输入的字符,无需按Enter键结束,输入即接收,需包含conio.h头文件。

输入登陆码时,不能显示,因此选用getch函数,为了能让使用者清楚自己输入了几个字符,因此每输入一个字符就对应输出一个“*”。应用举例9-4:登陆程序#include"stdio.h"#include"string.h"#include"conio.h"voidid()//登陆函数{intx=0,y,z,jh=0,i=3;charc,id[20];while(i){printf("\n请输入登陆码:\n");while((id[x]=getch())!='\r') {printf(“*”);//输入的内容用输出“*”作为掩饰 x++;}id[x]=0;//赋结束符

if(strcmp(id,"abc")==0)//登陆码为"abc"break; else{i--;x=0;}}if(i==0)printf("\n对不起!不能使用!");elseprintf("\n欢迎使用!");}voidmain(){id();}微课应用举例9-4

运行程序,输入两次错误的登陆码,第三次输入正确的登陆码,运行情况如图9-1所示。

运行程序,输入三次错误的登陆码,运行情况如图9-2所示。图9-1第三次输入正确的登录码图9-2连续三次输入错误的登录码多个字符串031.字符串数组

字符串数组就是数组中的每个元素都是一个存放字符串的数组也就是多个字符串。

如chara0[5]=“ab”,a1[5]=“abca”,a2[5]=“abab”;定义了3个字符型数组。

合并起来就是:chara[3][5]={“ab”,“abca”,“abab”};就是一个字符串数组,数组a共有3个元素,每个元素都是一个字符串,每个字符串最多存储四个有效字符。

数组元素按行占连续、固定的存储单元,每行的第0个元素开始存放一个新字符串,可以通过数组操作的各种办法引用数组元素,字符‘c’是a[1][2]、*(a[1]+2)或*(*(a+1)+2)等。多个字符串032.字符型指针数组

char*p[3]={“ab”,“abca”,“abab”};

定义了一个字符型指针数组,数组的三个元素都是指针变量,分别存放了三个字符串的首地址,字符‘c’是p[1][2]、*(p[1]+2)或*(*(p+1)+2)。

注意:指针变量是变量,可通过重新赋值指向其他字符串,使原字符串丢失。应用举例9-5:字符串数组应用

输入若干行文本,遇空行结束输入,将文本加上行号后输出。#include"stdio.h"#defineMAXLINE40#defineLEN80voidgettext(char(*)[LEN],int*);//函数说明voidputtext(char[][LEN],int);voidmain(){chartext[MAXLINE][LEN];//多个字串,定义二维数组intn;gettext(text,&n);//调用函数获得若干字串和字串的个数puttext(text,n);//输出各字串}应用举例9-5:字符串数组应用

voidgettext(char(*t)[LEN],int*m)//输入若干字符串的函数{intn=0;gets(t[n]);//输入第一个字符串while(t[n][0])/*如字符串的第一个字符就是结束符,结束操作*/ { n++;//记录字符串的个数gets(t[n]);//再输入一个字符串 }*m=n;//获得字符串的个数}voidputtext(char(*t)[LEN],intn)//输出若干字符串的函数{ inti; for(i=0;i<n;i++) printf("%-2d:%s\n",i+1,t[i]);}应用举例9-5:字符串数组应用

在gettext函数中,t可理解为是二维数组的首地址,t[n]就是一个字串的首地址,因以空行结束输入,即当某字符串的第一个字符为结束符时,就结束,所以用t[n][0]作为循环是否继续的依据。输入的行数通过*m带回调用函数。输出时,人为的加以行号。程序执行结果如图9-3所示。图9-3字符串数组应用的执行结果微课应用举例9-5

任务实施

任务一对一个字符串的操作

工作内容及要求:

在计算机应用中,对数据的处理多数是字符型数据,这个任务将要进行对一个字符串的若干操作,借此训练字符型数据的编程技巧,具体任务是输入一个英文句子,删除其中的空格;统计英文句子中的元音字母各自出现的次数;统计a、b、c、d、e等字母出现的次数;统计单词的个数。

将以下程序补充完整,并在VS环境调试,写出当输入“Bestwishforyou.”时的输出内容,实现输入一个英文句子再输出的操作。#include"stdio.h"voidmain(){char.................[80]; puts("请输入一个英文句子:"); .............................. printf("输入的内容是:"); ..............................}

程序执行结果:.......................................编程训练9-1-1字串的输入/输出

依据注释将程序补充完整,调试运行后,写出当输入“Bestwishforyou.”时的输出内容。#include"stdio.h"#include"string.h"//调用strcpy函数需要包含的头文件voidfun1(chars1[],chars2[]){........................//定义变量.......................//将s1复制到s2.............................//对s2搜一遍,删除s2中的空格if(............)...........................; ;s2[j]=0;//为s2串赋结束符}编程训练9-1-2删除字符串中的空格voidmain(){ charstr1[80],str2[80]; puts("请输入一个英文句子:"); gets(str1); printf("输入的内容是:%s\n",str1); fun1(str1,str2);/*将str1复制到str2,并删除str2句子中的空格*/ printf("删除空格后的内容是:%s\n",str2);

}

程序执行结果:.......................................编程训练9-1-2删除字符串中的空格

根据提示编写fun2函数,统计s字串中元音字母各自出现的次数,写出当输入“Bestwishforyou.”时的输出内容。

分析:用fun2函数实现统计句子中元音字母各自出现的次数,实参是字符串数组名,对字符串中的各元素搜一遍,用switch语句统计,统计的数字存放在c数组中。编程训练

9-1-3元音字符统计程序代码:#include"stdio.h"voidfun2(chars[],intc[]){ ..............................//对c数组的5个计数器清零for(i=0;s[i];i++)//对字符串s搜一遍{switch(s[i]){case'a':case'A':c[0]++;break;//遇到元音字母a(A)累计在c[0]中编程训练

9-1-3元音字符统计............................//遇到元音字母e(E)累计在c[1]中....................................................................................}}}编程训练voidmain(){charstr1[80]; intc[5],i; puts("请输入一个英文句子:"); gets(str1); printf("输入的内容是:%s\n",str1); fun2(str1,c);//将元音字母出现的次数存在数组c中 printf("a,e,i,o,u元音字母出现的次数分别是:"); for(i=0;i<5;i++)printf("%d",c[i]);}

程序执行结果:...................................编程训练

编写函数fun3,统计s字符串中a(A)、b(B)、c(C)、d(D)、e(E)等各字母出现的次数,经调试运行后,写出当输入“Bestwishforyou.”时的输出内容。

分析:用fun3函数实现统计句子中各字母各出现的次数,实参是字符串数组名,对字符串数组元素搜一遍,统计各字母出现的次数,存放在a数组中,a[0]放a(A)出现的次数,a[1]放b(B)出现的次数,a[2]放c(C)出现的次数,……,a[25]放z(Z)出现的次数,以下这段代码可借鉴:if(islower(s[i])a[(s[i]-97)]++;

当s[i]=‘a’时,执行a[0]++,当s[i]=‘e’时,执行a[4]++。编程训练

9-1-4字母统计程序代码:#include"stdio.h"#include“ctype.h”//调用字符操作的函数须包含的头文件voidfun3(chars[],inta[]){................................ ................................//为a数组的26个计数器清零................................ ................................ }编程训练

9-1-4字母统计voidmain(){charstr1[80],str2[80]; inti,a[26]; puts("请输入一个英文句子:"); gets(str1); printf("输入的内容是:%s\n",str1); fun3(str1,a); printf("\nabcde...各出现次数分别是:\n"); for(i=0;i<26;i++) {printf("%c:%d次",i+65,a[i]); if((i+1)%5==0)printf("\n"); }}

程序执行结果:.......................................编程训练

9-1-4字母统计

编写fun4函数,统计字符串s中的单词个数作为函数值返回。

分析:借用指针对字符串搜一遍,使用一个记号变量,初值为0代表在单词外,搜索中遇到的是空格或非空格,如指针指向单词中的某个字母非空格,且前一个字符是空格或起始记号为0,则表示遇到一个新词,进行累计且将记号变更为1;若指针指向单词中的某个字母,且前一个字符也是字母记号为1,则无操作;若指针指向的是空格,且前面一个字符是字母,即记号为1,表示前一单词结束,重新将记号置0;如前面一个字符也是空格即记号为0则无操作。

程序流程图如图9-4所示。编程训练

9-1-5统计单词个数图9-4统计单词个数的程序流程图根据流程图写出程序代码:#include"stdio.h"intfun4(char*s){................................................................................................................................................................................................... }编程训练

9-1-5统计单词个数voidmain(){charstr1[80],str2[80]; inti; puts("请输入一个英文句子:"); gets(str1); printf("输入的内容是:%s\n",str1); i=fun4(str1);//统计单词的个数 printf("\n单词个数是:%d\n",i);}程序执行结果:.................................编程训练

9-1-5统计单词个数任务二

多个字符串操作工作内容及要求:

现有学生学号和姓名信息存放在“d:\信息.txt”文件中,如图9-5所示,学号信息的前两位数字是入学年份,“11”表示2011年入学的,“10”表示是2010年入学的,现需要做两件事:根据学号信息排序;将10年入学的学生信息放到b数组中。图9-5学生学号和姓名信息

在d盘根目录下创建“信息.txt”文件,并录入图9-5中的信息,以下这段代码可以将存在d盘的“信息.txt”文件中的数据读入数组,请在VS环境调试运行,理解其中的用意。#include"stdio.h"#include"string.h"#include"stdlib.h"#defineM30#defineN80编程训练

9-2-1程序调试voidfout(chara[M][N],intn)//输出字符串的函数{ inti; for(i=0;i<n;i++) puts(a[i]);}编程训练

9-2-1程序调试voidmain(){chara[M][N]; inti; FILE*fp;//定义文件指针 if((fp=fopen("d:\\信息.txt","r"))==NULL)//打开文件的操作 {printf("打开文件错误!\n"); exit(0); }

编程训练

9-2-1程序调试i=0; while(!feof(fp))//将文件内容读入数组 {fgets(a[i++],80,fp);}//读入一行字符串,学号连同姓名fclose(fp);//关闭文件 fout(a,i);//调用输出函数}编程训练

9-2-1程序调试

编写针对学号的排序函数fun1,可以参考以下代码:if(strcmp(a[i],a[j])>0)//字串比较{ strcpy(c,a[i]);/*以下是两字符串借助c的交换,c是字符型一维数组*/strcpy(a[i],a[j]); strcpy(a[j],c);}编程训练

9-2-2多字符串排序#include"stdio.h"#include"string.h"#include"stdlib.h"#defineM30#defineN80voidfout(chara[M][N],intn)//输出字符串的函数{inti;for(i=0;i<n;i++)puts(a[i]);}编程训练

9-2-2多字符串排序voidfun1(chara[M][N],intn)//针对学号的排序函数{..............................................................................................

温馨提示

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

评论

0/150

提交评论