第10章-結(jié)構(gòu)體與共用體課件_第1頁
第10章-結(jié)構(gòu)體與共用體課件_第2頁
第10章-結(jié)構(gòu)體與共用體課件_第3頁
第10章-結(jié)構(gòu)體與共用體課件_第4頁
第10章-結(jié)構(gòu)體與共用體課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、內(nèi)容回顧基本類型構(gòu)造類型指針類型空類型數(shù)組結(jié)構(gòu)體共用體數(shù)據(jù)類型上述數(shù)據(jù)類型名不符合書寫習(xí)慣怎么辦?存放相同類型的數(shù)據(jù)C程序要求每個變量都要有自己的數(shù)據(jù)類型。但是自己定義類型名(標(biāo)識符)一組類型不同的數(shù)據(jù),怎么辦?第10章 結(jié)構(gòu)體與共用體自定義類型標(biāo)識符結(jié)構(gòu)體的定義與引用共用體的定義與引用10.1 自定義類型標(biāo)識符 C 語言可以通過 typedef 語句,定義自己的數(shù)據(jù)類型。實際上是給 C 現(xiàn)有類型重新起個名字,即自定義類型標(biāo)識符。typedef語句的格式:typedef 現(xiàn)有類型名 新類型名;C語言的類型符用戶定義的類型符例如:基本類型 typedef int INTEGER; typedef

2、 float REAL;數(shù)組 typedef int ARRAY100;typedef char * POINTER;int i;float x;INTEGER i ;REAL x;就可以寫成int a100,b100;char *pa,*pb;ARRAY a,b ;POINTER pa,pb;就可以寫成1、先按定義變量的方法寫出定義語句; 如: int a10;2、將變量名用新類型名替換; 如: int ARRAY10;3、再在最前面加typedef; 如: typedef int ARRAY10;4、然后就可以用新類型名定義變量。 如: ARRAY a,b,c; 用typedef定義新類型

3、的步驟注意: typedef 并不創(chuàng)建新的類型 結(jié)構(gòu)體導(dǎo)入 一組相同類型的數(shù)據(jù)我們可以用數(shù)組來處理,但是在實際應(yīng)用中,經(jīng)常有一些既有聯(lián)系,類型又不同的數(shù)據(jù)需要一起處理。如:學(xué)生的基本信息 字段: 學(xué)號 姓名 性別 地址 成績類型: long char char char float C語言允許用戶按自己的需要將不同的基本類型構(gòu)造成一種特殊類型,即結(jié)構(gòu)體。結(jié)構(gòu)體的操作分為4步:根據(jù)需要先定義結(jié)構(gòu)體類型;然后通過定義的類型定義結(jié)構(gòu)體變量(數(shù)組、指針);結(jié)構(gòu)體變量(數(shù)組、指針)賦值(址);引用結(jié)構(gòu)體變量(數(shù)組、指針) 。11.2 結(jié) 構(gòu) 體 定義結(jié)構(gòu)體類型格式:struct 結(jié)構(gòu)名 數(shù)據(jù)類型 成員1

4、 ; 數(shù)據(jù)類型 成員2 ; 數(shù)據(jù)類型 成員n ; ;結(jié)構(gòu)體標(biāo)志。用標(biāo)識符命名的結(jié)構(gòu)類型名。結(jié)構(gòu)類型中所含的成員及其類型。再如定義學(xué)生結(jié)構(gòu)體:struct student long num ;/*學(xué)號*/ char name20 ; /*姓名*/ char sex ; /*性別*/ int age ; /*年齡*/ float score ; /*成績*/ ;如:日期結(jié)構(gòu)體類型struct date int month; int day; int year;或:struct date int month, day, year ;此處分號不能省略;結(jié)構(gòu)體的內(nèi)存結(jié)構(gòu)long num;char nam

5、e20 ;char sex;int age;float score;20B1B4B4B4B 為了加快cpu的存取速度,VC+編譯器在處理數(shù)據(jù)時經(jīng)常把結(jié)構(gòu)體成員的大小按照4或8的倍數(shù)計算,此即數(shù)據(jù)對齊?;镜脑瓌t:按成員類型大小從小到大聲明。 經(jīng)上面定義之后:struct student 和int , float 等標(biāo)準(zhǔn)類型標(biāo)識符一樣可用來定義變量、數(shù)組、指針變量等如: 學(xué)生基本情況 struct student long num;char name20;char sex; int age; struct date birthday;float score; ;struct student lo

6、ng num;char name10;char sex; int age; struct date int year; int month; int day; birthday;float score; ;結(jié)構(gòu)體嵌套:一個結(jié)構(gòu)體成員可以又是一個結(jié)構(gòu)體變量。 定義結(jié)構(gòu)變量 定義結(jié)構(gòu)只是確定該結(jié)構(gòu)體類型的名稱、成員及成員的類型。必須通過結(jié)構(gòu)體類型定義變量,才能賦值并使用。結(jié)構(gòu)體變量的4種定義方式:先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。struct student long num ; char name20 ; int age ; char add30 ; float score ; ;struct

7、 student std1, *pst, pers3;用struct student 類型說明3個變量。定義結(jié)構(gòu)類型的同時定義結(jié)構(gòu)體變量。 struct student long num;char name20;char sex;int age;float score; std1, *pst, pers3;直接定義結(jié)構(gòu)體變量。struct long num;char name20;char sex;int age;float score; std, *pstd, pers3;說明: 無結(jié)構(gòu)體名。 注意類型和變量的區(qū)別。 成員可單獨使用。如:std.age=20用typedef將結(jié)構(gòu)體類型定義新

8、類型,再定義變量。typedef struct student long num;char name20;char sex;int age;float score; STREC;此處分號不能省略STREC std,*pstd, pers3 ;定義變量定義新類型1、結(jié)構(gòu)體變量的初始化例如:結(jié)構(gòu)體變量名=初值;注意:初值的個數(shù)、順序、類型應(yīng)與成員說明一致 結(jié)構(gòu)體變量(數(shù)組、指針)的初始化結(jié)構(gòu)變量(數(shù)組、指針)可以在說明時賦初值,稱為初始化。格式:struct student std=20001,Li Li,M,19,85;2、結(jié)構(gòu)體數(shù)組的初始化struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體數(shù)組名 =初始數(shù)據(jù);s

9、truct student pers3= 20001, Sun Lin, M, 19 ,85, 20002, Li Si, W, 19, 85, 20003, John, M, 19, 85 ;格式:例如:前面4種定義形式均可在定義時對結(jié)構(gòu)體進行初始化。多項數(shù)據(jù)之間用逗號隔開。 結(jié)構(gòu)體數(shù)組相當(dāng)于一個廣義的二維數(shù)組,結(jié)構(gòu)體數(shù)組的初始化與二維數(shù)組的初始化類似。 3、結(jié)構(gòu)體指針的初始化struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體指針變量名=&同類結(jié)構(gòu)體變量名 struct student std, *sp=&std ;格式1:例如:struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體指針變量名=同類結(jié)構(gòu)體數(shù)組名 格式2:struc

10、t student pers3,sp=pers;例如:舉例:定義結(jié)構(gòu)體時初始化#include stdio.hmain() struct student long num; char name20; char *sex; int age ; char addr30 ; wang = 200989001,“王五,女,20,上海 ; printf(num=%ld, name=%s, sex=%s, age=%d, addr=%s n, wang.num , , wang.sex , wang.age , wang.addr);源代碼 結(jié)構(gòu)體變量的引用 方式1:結(jié)構(gòu)體變量名.成員

11、名方式2:(*指針變量名).成員名方式3:指針變量名-成員名1、結(jié)構(gòu)體成員的引用(3種方式)若有:struct student std,pers3,*sp=&std;則 std.num=10101;等價于 sp-num=10101;std.sex=M;等價于 (*sp).sex=M;std.score=75+8;等價于 (*sp).score=75+8;std.age+;等價于 sp-age+;. 成員引用運算符-指向成員運算符(1)對于結(jié)構(gòu)體類型數(shù)組,要遵循數(shù)組元素的引用原則( 或*)和結(jié)構(gòu)體成員的引用原則(.或-)。引用結(jié)構(gòu)體成員時的注意事項:pers2.age或(pers+2)-age或

12、(*(pers+2).2或sp-name2或(*sp).如:pers數(shù)組的第2個元素的成員age如:成員name數(shù)組的第2個元素(2)對于結(jié)構(gòu)體嵌套,只能引用最低層的成員。 引用結(jié)構(gòu)體成員時的注意事項:struct student long num;char name10;char sex; int age; struct date int year; int month; int day; birthday;float score; std;如:引用結(jié)構(gòu)體變量std中的出生月份std.birthday.monthsp-birth

13、day.month(*sp).birthday.month注意:由外向內(nèi)逐層引用,每層之間用點號“.”分隔。(3)可以對變量、數(shù)組元素及其成員進行取地址運算取結(jié)構(gòu)體變量的地址為: &結(jié)構(gòu)體變量名 如:&std取結(jié)構(gòu)體成員的地址為: &結(jié)構(gòu)體變量名.成員 如:&std.age(4)成員運算符“.”和指向運算符“-”的優(yōu)先級最高,結(jié)合性自右向左。+sp-num等價于+(sp-num)sp-num+等價于(sp-num)+即成員num的值自增(+sp)-num sp指向下一個元素,再取出該元素成員num的值 (sp+)-num 先取出sp所指元素成員num的值,再指向下一個元素。(5)成員運算符的優(yōu)

14、先級高于地址運算符(*sp).name 不同于*、*sp-name若有struct student std=20001,John,M,19,85,*sp=&std;則*(*sp).name)值為John 而* 錯誤但*sp-name值為c(6)結(jié)構(gòu)體指針只能指向同類結(jié)構(gòu)體,不能指向結(jié)構(gòu)體成員若有STREC std,*pstd, pers3; 則sp=&pers2.num 錯誤#include stdio.hmain( ) struct studentlong num;char name20;char sex;float score; s1=20001,Li Li,M

15、,85;struct student s2;float sum, ave;scanf(%ld %s %c %f,&s2.num,,&s2.sex,&s2.score);sum=s1.score+s2.score;ave=sum/2;printf(NOtNAMEtSEXtSCOREn);printf(%ldt%st%ct%5.1fn,s1.num,,s1.sex,s1.score);printf(%ldt%st%ct%5.1fn,s2.num,,s2.sex,s2.score);printf(sum=%5.1ftave=%5.1fn,sum,ave);定

16、義結(jié)構(gòu)體student,并初始化變量s1即第1個學(xué)生信息。定義變量s2、sum、ave【例10.1】 結(jié)構(gòu)體類型變量的引用示例:求兩個學(xué)生總成績及平均成績輸入第2個學(xué)生信息計算這兩個學(xué)生的總成績、平均成績輸出標(biāo)題信息輸出這兩個學(xué)生信息輸出其總成績、平均成績例10.1(源代碼)#include stdio.h#define N 10main( ) struct student int num; float score; studN;float ave=0,max;int i, k=0;printf(input: num, name, score);for(i=0; iN; i+) scanf(%

17、ld,%f,&studi.num,&studi.score);ave=ave+studi.score; ave=ave/N;max=stud0.score;for (i=1; iN; i+)if(maxnum);printf(%st%st%sn,,(*sp).name, sp-name); printf(%5.2ft%5.2ft%5.2fn,stu1.score,(*sp).score ,sp-score);【例10.3】結(jié)構(gòu)體指針變量的應(yīng)用:求N個學(xué)生最高分及平均成績例10.3(源代碼)勘誤:P235 sp前加星號#include stdio.hstruct student

18、long num;char name20;float score;struct student stu3= 20001,Li Li,85,20002,Wu an,78,20003,Ma Lin,69;main( )struct student *p;printf(學(xué)號t姓名t成績n);for(p=stu;pnum,p-name,p-score);【例10.4】結(jié)構(gòu)體指針變量的應(yīng)用:求N個學(xué)生最高分及平均成績例10.4(源代碼)學(xué)號姓名成績20001Li Li85.00000020002Wu an78.00000020003Ma Lin69.000000輸出結(jié)果:2. 對結(jié)構(gòu)體類型變量的整體賦值

19、同種類型的結(jié)構(gòu)體變量之間可以進行整體賦值操作。例如:struct studentlong num; char name20: char sex; int age; float score; std1, std2=11011, Yang Lin, M, 18, 89;std1=std2; 實際上是將std2的成員分別賦給std1中對應(yīng)的同名成員。 函數(shù)之間結(jié)構(gòu)體變量的數(shù)據(jù)傳遞3種傳遞方式: 用結(jié)構(gòu)體變量的成員作參數(shù) 結(jié)構(gòu)體變量的成員可以看做普通變量。 用指向結(jié)構(gòu)體的指針作參數(shù) 結(jié)構(gòu)體變量的整體雙向傳遞,形參的改變會影響到實參。 用結(jié)構(gòu)體變量的整體作參數(shù) 結(jié)構(gòu)體變量的整體單向傳遞,形參的改變不會影

20、響到實參。 例題10.5例題10.6例題10.7傳遞整體傳遞成員6. 用指針處理鏈表 鏈表作為一種常用的、能夠?qū)崿F(xiàn)動態(tài)存儲分配的數(shù)據(jù)結(jié)構(gòu),是二級公共基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)部分的要點之一。 鏈即用指針連接數(shù)據(jù)結(jié)點。本節(jié)重點講述單鏈表,其模型如下: a1anhead(1)頭指針head指向鏈表的首結(jié)點。(2)每個結(jié)點由2個域組成:數(shù)據(jù)域存儲結(jié)點本身的信息。指針域指向后繼結(jié)點的指針。(3)尾結(jié)點的指針域置空( NULL ),作為鏈表結(jié)束的標(biāo)志數(shù)據(jù)域 指針域1鏈表概述a1a2anhead語言對鏈表結(jié)點的結(jié)構(gòu)描述 在語言中,用結(jié)構(gòu)類型來描述結(jié)點結(jié)構(gòu)。例如: struct slist int data;/*數(shù)據(jù)域

21、*/ struct slist *next;/*指針域*/ ;typedef struct slist SLIST;用于動態(tài)分配空間的3個標(biāo)準(zhǔn)函數(shù)(stdlib.h)malloc(size); 在內(nèi)存的動態(tài)區(qū)申請1個長度為size的存儲單元calloc(n,size); 在內(nèi)存的動態(tài)區(qū)申請n個長度為size的存儲單元free(*ptr); 釋放由ptr指向的存儲單元2. 鏈表的建立例10.8 編寫一個creat( )函數(shù)用于建立一個有5名學(xué)生基本數(shù)據(jù)的單向鏈表。其算法步驟為:(1) 定義一個描述學(xué)生基本數(shù)據(jù)的結(jié)構(gòu)體類型。(2) 定義三個指向結(jié)構(gòu)體的指針p,q和head。其中head為頭指針;p

22、為當(dāng)前結(jié)點的指針;q為當(dāng)前鏈表的表尾結(jié)點指針。(3) 建立第一個結(jié)點(4) 建立其它節(jié)點并完成與當(dāng)前鏈表的鏈接。重復(fù)步驟(4)就可以完成鏈表的建立。#define N 5#define LEN sizeof(STUD)struct studentint num; float score; struct student *next;typedef struct student STUD ; /* 第(1)步 */STUD *creat( )STUD *head,*p,*q;/* 第(2)步 */ int i; p=( STUD *)malloc(LEN); scanf(%d,%f,&p-num,

23、&p-score); p-next=NULL; head=p; q=p; /* 第(3)步 */ for(i=1;inext=NULL; scanf(%d,%f,&p-num,&p-score); q-next=p; q=p; /* 第(4)步 */ return(head);3. 鏈表的輸出例10.9 編寫輸出鏈表的函數(shù)print( ) 通過單鏈表的頭指針,首先找到鏈表的第一個結(jié)點;然后順著結(jié)點的指針域?qū)⑺阉鞯降拿總€節(jié)點的數(shù)據(jù)域的值輸出void print(STUD *head) STUD *p; p=head; while(p!=NULL) printf(%d,%fn,p-num,p-sc

24、ore); p=p-next; /*指針移向下一個結(jié)點*/ 4. 鏈表的刪除例10.10 編寫函數(shù)delete( )實現(xiàn)鏈表的刪除操作基本思路: 通過單鏈表的頭指針,首先找到鏈表的第一個結(jié)點;然后順著結(jié)點的指針域找到學(xué)號為num的結(jié)點,修改其前一個節(jié)點的指針域的值,使他指向他的下一個結(jié)點。q-next=p-next;free(p);STUD *delete(STUD *head,int num)STUD *p,*q; if(head=NULL) printf(list null!);return(0); p=head; while(num!=p-num & p-next!=NULL)* p指向

25、的不是要找的結(jié)點,并且后面還有結(jié)點* q=p;p=p-next; *向后移一個結(jié)點* if(num=p-num) *找到了待刪結(jié)點* if(p=head) head=p-next;* 待刪的是第一個結(jié)點 * else q-next=p-next;* 待刪的不是第一個結(jié)點 * printf(delete :%dn,p-num); free(p); else *沒有找到待刪結(jié)點* printf(%ld not been found!n,num); return(head);5. 鏈表的插入例10.11 編寫插入結(jié)點的函數(shù)insert( ),實現(xiàn)在有序鏈表中結(jié)點的插入操作(假設(shè)鏈表按照num(學(xué)號)

26、從小到大順序排列)?;舅悸罚?通過單鏈表的頭指針,首先找到鏈表的第1個結(jié)點;然后順著結(jié)點的指針域找到值為x的節(jié)點,然后將新結(jié)點y插入。q-next=p;r-next=q;STUD *insert(STUD *head,STUD *stud) STUD *p,*q,*p0; p=head; /* 設(shè)置掃描指針p */ p0=stud; *p0指向要插入的結(jié)點* if(head=NULL) *原來是空表* head=p0;p0-next=NULL; else while(p0-nump-num) & (p-next!=NULL) q=p;pp-next; if(p0-numnum) if(hea

27、d=p)headp0;*插到原來第一個結(jié)點之前* else q-next=p0; *插到q指向的結(jié)點之后* p0-next=p; else p-next=p0;p0-next=NULL;*插到最后的結(jié)點之后* return(head);例10.12 編寫主函數(shù)調(diào)用以上各函數(shù)STUD *creat( );void print(STUD *head);STUD *delete(STUD *head,int num);STUD *insert(STUD *head,STUD *stud);main( ) STUD *head ,*stu; int del_num; printf(input reco

28、rds :n); head=creat( ); * 建立單鏈表,返回頭指針 * print(head); *輸出鏈表中全部結(jié)點數(shù)據(jù)域的值* printf(input the deleted number:); scanf(%d,&del_num);*輸入要刪除的學(xué)號* while(del_num!=0) head=delete(head,del_num);* 返回刪除結(jié)點后鏈表的頭指針 * print(head); printf(input the deleted number:); scanf(%d,&del_num);*輸入要刪除的學(xué)號* printf(input the inserted

29、 record:n); stu=(STUD *)malloc(LEN); scanf(%d,%f,&stu-num,&stu-score);*輸人要插入的記錄* while(stu-num!=0) head=insert(head,stu);*返回插入新結(jié)點后的鏈表頭指針* print(head); printf(input the inserted record:n); stu=( STUD *)malloc(LEN); scanf(%d,%f,&stu-num,&stu-score);*輸人要插入的記錄* 共用體是指不同類型的數(shù)據(jù)可以在不同的時間內(nèi)使用共同的內(nèi)存單元。盡管這些在內(nèi)存中占的字

30、節(jié)數(shù)不同,但都從同一起始地址開始存放。而且是在不同的時間內(nèi)去使用該內(nèi)存單元。 共用體實際上是C語言提供的一種覆蓋技術(shù)。10.3 共 用 體 char sexshort num float score 共用體的定義、使用形式同結(jié)構(gòu)體相似。 union 共用體名 類型名1 共用體成員名表1; 類型名2 共用體成員名表2; 類型名n 共用體成員名表n;;1. 共用體類型的定義 union student int num; char sex; float score; union student stu1,stu2; typedef union int num; char sex; float sco

31、re; UN; UN s1,s2; union int num; char sex; float score; stu1,stu2; union student int num; char sex; float score; stu1,stu2;2. 共用體變量的定義3. 共用體變量的引用方式共用體的使用也與結(jié)構(gòu)體相同,用&取共用體的地址,用“. ” 或“-”訪問共用體成員。例如: stu1.num(引用共用體變量中的整型變量num) stu1.sex (引用共用體變量中的字符變量sex) stu1.score(引用共用體變量中的實型變量score) 1、同一個內(nèi)存段可以用來存放幾種不同類型的

32、成員,但在每一瞬時只能存放其中一種。 2、共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用。如有以下賦值語句: stu1.num=101; stu1.sex=F; stu1.score=89.5;在完成以上三個賦值運算以后,只有stu1.score是有效的,stu1.num和stu1.sex已經(jīng)無意義了。共 用 體 使 用 說 明3、共用體變量的地址和它的各成員的地址都是同一地址4、不能對共用體變量名賦值,也不能企圖引用變量名來得到成員的值,也不能在定義共用體變量時對它初始化。5、不能把共用體變量作為函數(shù)參數(shù),也不能使函數(shù)帶回共用體變量,但可以使用指向共用

33、體變量的指針(與結(jié)構(gòu)體變量這種用法相仿)。6、共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定義共用體數(shù)組。反之,結(jié)構(gòu)體也可以出現(xiàn)在共用體類型定義中,數(shù)組也可以作為共用體的成員。例如: struct date int day; int month; int year; union int sh1; float sh2;sh; a;舉 例例 10.13 分析下列程序的運行結(jié)果 main() union char c2; int k;r; r.c0=2; r.c1=0; r.k=20; printf(%d,%d,%dn,r.k,r.c0,r.c1);20,20,0【例10.14】分析下列程序的輸出結(jié)

34、果 union as int a; int b; s3,*p;main() int n=1,k; for(k=0;ka,+p-a);3,3+p-a, p-a);3,2+p-a, +p-a);4,3共用體與結(jié)構(gòu)體的區(qū)別struct exam int a ; float b ; char c ; x ;xabcunion exam int a ; float b ; char c ; x ;xb ac 結(jié)構(gòu)變量的每個成員有獨立的內(nèi)存單元,而共用體變量的成員以最大的成員開辟單元后,所有成員共用該單元。sizeof (struct exam)10.4 枚 舉 類 型枚舉類型的定義格式:enum 枚舉類型標(biāo)識符 枚舉元素表列;例如:enum daysun,mon,tue,wed,thu,fri,sat; 以上定義了一個枚舉類型enum day,有個枚舉元素??梢杂么祟愋蛠矶x變量。enum day workday; workday被定義為枚舉變量,它的值只能是sun到sat之一??梢杂猛ǔ=o變量賦值的方法給枚舉變量賦值。 例如:workday=mon;當(dāng)然,也可以直接定義枚舉變量,如:enum sun,mon,tue,wed,thu,fri,satworkday;說 明(1)對枚舉類型的定義和枚舉變量的使用,其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論