C++程序設(shè)計第7章_第1頁
C++程序設(shè)計第7章_第2頁
C++程序設(shè)計第7章_第3頁
C++程序設(shè)計第7章_第4頁
C++程序設(shè)計第7章_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章自定義數(shù)據(jù)類型7.1結(jié)構(gòu)體類型7.2共用體7.3枚舉類型7.4用typedef聲明類型有時需要將不同類型的數(shù)據(jù)組合成一個有機(jī)的整體,以供用戶方便地使用。這些組合在一個整體中的數(shù)據(jù)是互相聯(lián)系的。例如,一個學(xué)生的學(xué)號、姓名、性別、年齡、成績、家庭地址等項,都是這個學(xué)生的屬性。見圖7.1。圖7.17.1結(jié)構(gòu)體類型

7.1.1結(jié)構(gòu)體概述在一個組合項中包含若干個類型不同(當(dāng)然也可以相同)的數(shù)據(jù)項。這樣一種數(shù)據(jù)類型稱為結(jié)構(gòu)體。它相當(dāng)于其他高級語言中的記錄(record)。例如,可以通過下面的聲明來建立如圖7.1所示的數(shù)據(jù)類型。structStudent//聲明一個結(jié)構(gòu)體類型Student{intnum;//包括一個整型變量numcharname[20];//包括一個字符數(shù)組name,可以容納20個字符charsex;//包括一個字符變量sexintage;//包括一個整型變量agefloatscore;//包括一個單精度型變量charaddr[30];//包括一個字符數(shù)組addr,可以容納30個字符};//最后有一個分號聲明一個結(jié)構(gòu)體類型的一般形式為struct結(jié)構(gòu)體類型名{成員表列};struct是聲明結(jié)構(gòu)體類型時所必須使用的關(guān)鍵字,不能省略。Student是結(jié)構(gòu)體類型名,它向編譯系統(tǒng)聲明:這是一種結(jié)構(gòu)體類型,它包括num,name,sex,age,score,addr等不同類型的數(shù)據(jù)項。應(yīng)當(dāng)說明Student是一個類型名,它和系統(tǒng)提供的標(biāo)準(zhǔn)類型(如int、char、float、double等)一樣,都可以用來定義變量,只不過結(jié)構(gòu)體類型需要事先由用戶自己聲明而已。大括號內(nèi)是該結(jié)構(gòu)體中的全部成員(member),由它們組成一個特定的結(jié)構(gòu)體。上例中的num,name,sex,score等都是結(jié)構(gòu)體中的成員。在聲明一個結(jié)構(gòu)體類型時必須對各成員都進(jìn)行類型聲明,即類型名成員名;前面只是指定了一種結(jié)構(gòu)體類型,它相當(dāng)于一個模型,但其中并無具體數(shù)據(jù),系統(tǒng)也不為之分配實(shí)際的內(nèi)存單元。為了能在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)當(dāng)定義結(jié)構(gòu)體類型的變量,并在其中存放具體的數(shù)據(jù)。1.定義結(jié)構(gòu)體類型變量的方法可以采取以下3種方法定義結(jié)構(gòu)體類型的變量。(1)先聲明結(jié)構(gòu)體類型再定義變量名如上面已定義了一個結(jié)構(gòu)體類型Student,可以用它來定義結(jié)構(gòu)體變量。如Studentstudent1,student2;7.1.2結(jié)構(gòu)體類型變量的定義方法及其初始化以上定義了student1和student2為結(jié)構(gòu)體類型Student的變量,即它們具有Student類型的結(jié)構(gòu)。如圖7.2所示。圖7.2在定義了結(jié)構(gòu)體變量后,系統(tǒng)會為之分配內(nèi)存單元。例如student1和student2在內(nèi)存中各占63個字節(jié)(4+20+1+4+4+30=63)。(2)在聲明類型的同時定義變量例如:structStudent//聲明結(jié)構(gòu)體類型Student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;//定義兩個結(jié)構(gòu)體類型Student的變量student1,student2這種形式的定義的一般形式為struct結(jié)構(gòu)體名{成員表列}變量名表列;(3)直接定義結(jié)構(gòu)體類型變量其一般形式為struct//注意沒有結(jié)構(gòu)體類型名{成員表列}變量名表列;這種方法雖然合法,但很少使用。提倡先定義類型后定義變量的第(1)種方法。在程序比較簡單,結(jié)構(gòu)體類型只在本文件中使用的情況下,也可以用第(2)種方法。關(guān)于結(jié)構(gòu)體類型,有幾點(diǎn)要說明:(1)不要誤認(rèn)為凡是結(jié)構(gòu)體類型都有相同的結(jié)構(gòu)。實(shí)際上,每一種結(jié)構(gòu)體類型都有自己的結(jié)構(gòu),可以定義出許多種具體的結(jié)構(gòu)體類型。(2)類型與變量是不同的概念,不要混淆。只能對結(jié)構(gòu)體變量中的成員賦值,而不能對結(jié)構(gòu)體類型賦值。在編譯時,是不會為類型分配空間的,只為變量分配空間。(3)成員也可以是一個結(jié)構(gòu)體變量。注意structDate//聲明一個結(jié)構(gòu)體類型Date{intmonth;intday;intyear;};structStudent//聲明一個結(jié)構(gòu)體類型Student{intnum;charname[20];charsex;intage;Datebirthday;//Date是結(jié)構(gòu)體類型,birthday是Date類型的成員charaddr[30];}student1,student2;//定義student1和student2為結(jié)構(gòu)體類型Student的變量Student的結(jié)構(gòu)見圖7.3所示。圖7.3(4)結(jié)構(gòu)體中的成員名可以與程序中的變量名相同,但二者沒有關(guān)系。例如,程序中可以另定義一個整型變量num,它與student中的num是兩回事,互不影響。2.結(jié)構(gòu)體變量的初始化和其他類型變量一樣,對結(jié)構(gòu)體變量可以在定義時指定初始值。如structStudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1={10001,″ZhangXin″,′M′,19,90.5,″Shanghai″};這樣,變量student1中的數(shù)據(jù)如圖7.2中所示。也可以采取聲明類型與定義變量分開的形式,在定義變量時進(jìn)行初始化:Studentstudent2={10002,″WangLi″,′F′,20,98,″Beijing″};//Student是已聲明的結(jié)構(gòu)體類型在定義了結(jié)構(gòu)體變量以后,當(dāng)然可以引用這個變量。(1)可以將一個結(jié)構(gòu)體變量的值賦給另一個具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量。如上面的student1和student2都是student類型的變量,可以這樣賦值:student1=student2;(2)可以引用一個結(jié)構(gòu)體變量中的一個成員的值。例如,student1.num表示結(jié)構(gòu)體變量student1中的成員的值,如果student1的值如圖7.2所示,則student1.num的值為10001。引用結(jié)構(gòu)體變量中成員的一般方式為結(jié)構(gòu)體變量名.成員名7.1.3結(jié)構(gòu)體變量的引用例如可以這樣對變量的成員賦值:student1.num=10010;(3)如果成員本身也是一個結(jié)構(gòu)體類型,則要用若干個成員運(yùn)算符,一級一級地找到最低一級的成員。例如,對上面定義的結(jié)構(gòu)體變量student1,可以這樣訪問各成員:student1.num(引用結(jié)構(gòu)體變量student1中的num成員)如果想引用student1變量中的birthday成員中的month成員,不能寫成student1.month,必須逐級引用,即student1.birthday.month(引用結(jié)構(gòu)體變量student1中的birthday成員中的month成員)(4)不能將一個結(jié)構(gòu)體變量作為一個整體進(jìn)行輸入和輸出。例如,已定義student1和student2為結(jié)構(gòu)體變量,并且它們已有值。不能企圖這樣輸出結(jié)構(gòu)體變量中的各成員的值:cout<<student1;只能對結(jié)構(gòu)體變量中的各個成員分別進(jìn)行輸入和輸出。(5)對結(jié)構(gòu)體變量的成員可以像普通變量一樣進(jìn)行各種運(yùn)算(根據(jù)其類型決定可以進(jìn)行的運(yùn)算種類)。例如student2.score=student1.score;sum=student1.score+student2.score;student1.age++;++student1.age;由于“.”運(yùn)算符的優(yōu)先級最高,因此student1.age++相當(dāng)于(student1.age)++。++是對student1.age進(jìn)行自加運(yùn)算,而不是先對age進(jìn)行自加運(yùn)算。(6)可以引用結(jié)構(gòu)體變量成員的地址,也可以引用結(jié)構(gòu)體變量的地址。如cout<<&student1;//輸出student1的首地址cout<<&student1.age;//輸出student1.age的地址結(jié)構(gòu)體變量的地址主要用作函數(shù)參數(shù),將結(jié)構(gòu)體變量的地址傳遞給形參。例7.1引用結(jié)構(gòu)體變量中的成員。#include<iostream>usingnamespacestd;structDate//聲明結(jié)構(gòu)體類型Date{intmonth;intday;intyear;};structStudent//聲明結(jié)構(gòu)體類型Student{intnum;charname[20];charsex;Datebirthday;//聲明birthday為Date類型的成員floatscore;}student1,student2={10002,″WangLi″,′f′,5,23,1982,89.5};//定義Student類型的變量student1,student2,并對student2初始化intmain(){student1=student2;//將student2各成員的值賦予student1的相應(yīng)成員cout<<student1.num<<endl;//輸出student1中的num成員的值cout<<<<endl;//輸出student1中的name成員的值cout<<student1.sex<<endl;//輸出student1中的sex成員的值cout<<student1.birthday.month<<′/′<<student1.birthday.day<<′/′<<student1.birthday.year<<endl;//輸出student1中的birthday各成員的值cout<<student1.score<<endl;return0;}運(yùn)行結(jié)果如下:10002WangLif5/23/198289.5一個結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個學(xué)生的學(xué)號、姓名、成績等數(shù)據(jù))。如果有10個學(xué)生的數(shù)據(jù)需要參加運(yùn)算,顯然應(yīng)該用數(shù)組,這就是結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組與以前介紹過的數(shù)值型數(shù)組的不同之處在于:每個數(shù)組元素都是一個結(jié)構(gòu)體類型的數(shù)據(jù),它們都分別包括各個成員項。7.1.4結(jié)構(gòu)體數(shù)組1.定義結(jié)構(gòu)體數(shù)組和定義結(jié)構(gòu)體變量的方法相仿,定義結(jié)構(gòu)體數(shù)組時只需聲明其為數(shù)組即可。如structStudent//聲明結(jié)構(gòu)體類型Student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};Studentstu[3];//定義Student類型的數(shù)組stu也可以直接定義一個結(jié)構(gòu)體數(shù)組,如structStudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3];

或struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3];見圖7.4。數(shù)組各元素在內(nèi)存中連續(xù)存放,見圖7.5示意。圖7.4圖7.52.結(jié)構(gòu)體數(shù)組的初始化與其他類型的數(shù)組一樣,對結(jié)構(gòu)體數(shù)組可以初始化。如structStudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}sty[3]={{10101,″LiLin″,′M′,18,87.5,″103BeijingRoad″},{10102,″ZhangFun″,′M′,19,99,″130ShanghaiRoad″},{10104,″WangMin″,′F′,20,78.5,″1010,ZhongshanRoad″}};定義數(shù)組stu時,也可以不指定元素個數(shù),即寫成以下形式:stu[]={{…},{…},{…}};編譯時,系統(tǒng)會根據(jù)給出初值的結(jié)構(gòu)體常量的個數(shù)來確定數(shù)組元素的個數(shù)。一個結(jié)構(gòu)體常量應(yīng)包括結(jié)構(gòu)體中全部成員的值。當(dāng)然,數(shù)組的初始化也可以用以下形式:Studentstu[]={{…},{…},{…}};//已事先聲明了結(jié)構(gòu)體類型Student由上可以看到,結(jié)構(gòu)體數(shù)組初始化的一般形式是在所定義的數(shù)組名的后面加上={初值表列};3.結(jié)構(gòu)體數(shù)組應(yīng)用舉例下面舉一個簡單的例子來說明結(jié)構(gòu)體數(shù)組的定義和引用。例7.2對候選人得票的統(tǒng)計程序。設(shè)有3個候選人,最終只能有1人當(dāng)選為領(lǐng)導(dǎo)。今有10個人參加投票,從鍵盤先后輸入這10個人所投的候選人的名字,要求最后輸出這3個候選人的得票結(jié)果??梢远x一個候選人結(jié)構(gòu)體數(shù)組,包括3個元素,在每個元素中存放有關(guān)的數(shù)據(jù)。程序如下:#include<iostream>structPerson//聲明結(jié)構(gòu)體類型Person{charname[20];intcount;};intmain(){Personleader[3]={″Li″,0,″Zhang″,0,″Fun″,0};//定義Person類型的數(shù)組,內(nèi)容為3個候選人的姓名和當(dāng)前的得票數(shù)inti,j;charleader_name[20];//leader_name為投票人所選的人的姓名for(i=0;i<10;i++){cin>>leader_name;//先后輸入10張票上所寫的姓名

for(j=0;j<3;j++)//將票上姓名與3個候選人的姓名比較if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;//如果與某一候選人的姓名相同,就給他加一票}cout<<endl;for(i=0;i<3;i++)//輸出3個候選人的姓名與最后得票數(shù){cout<<leader[i].name<<″:″<<leader[i].count<<endl;}return0;}運(yùn)行情況如下:Zhang↙(每次輸入一個候選人的姓名)Li↙Fun↙Li↙Zhang↙Li↙Zhang↙Li↙Fun↙Wang↙Li:4(輸出3個候選人的姓名與最后得票數(shù))Zhang:3Fun:2程序定義一個全局的結(jié)構(gòu)體數(shù)組leader,它有3個元素,每一元素包含兩個成員,即name(姓名)和count(得票數(shù))。在定義數(shù)組時使之初始化,使3位候選人的票數(shù)都先置零。見圖7.6。圖7.6一個結(jié)構(gòu)體變量的指針(地址)就是該變量所占據(jù)的內(nèi)存段的起始地址。可以設(shè)一個指針變量,用來指向一個結(jié)構(gòu)體變量,此時該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。1.通過指向結(jié)構(gòu)體變量的指針引用結(jié)構(gòu)體變量中的成員下面通過一個簡單例子來說明指向結(jié)構(gòu)體變量的指針變量的應(yīng)用。7.1.5指向結(jié)構(gòu)體變量的指針例7.3指向結(jié)構(gòu)體變量的指針的應(yīng)用。#include<iostream>#include<string>usingnamespacestd;intmain(){structStudent//聲明結(jié)構(gòu)體類型student{intnum;stringname;charsex;floatscore;};Studentstu;//定義Student類型的變量stuStudent*p=&stu;//定義p為指向Student類型數(shù)據(jù)的指針變量并指向stustu.num=10301;//對stu中的成員賦值=″WangFun″;//對string變量可以直接賦值stu.sex=′f′;stu.score=89.5;cot<<stu.num<<″″<<<<″″<<stu.sex<<″″<<stu.score<<endl;cout<<(*p)->num<<″″<<(*p).name<<″″<<(*p).sex<<″″<<(*p).score<<endl;return0;}圖7.7程序運(yùn)行結(jié)果如下:10301WangFunf89.5(通過結(jié)構(gòu)體變量名引用成員)10301WangFunf89.5(通過指針引用結(jié)構(gòu)體變量中的成員)兩個cout語句輸出的結(jié)果是相同的。為了使用方便和使之直觀,C++提供了指向結(jié)構(gòu)體變量的運(yùn)算符->,例如p->num表示指針p當(dāng)前指向的結(jié)構(gòu)體變量中的成員num。p->num和(*p).num等價。同樣,p->name等價于(*p).name。也就是說,以下3種形式等價:①結(jié)構(gòu)體變量.成員名。如stu.num。②(*p).成員名。如(*p).num。③p->成員名。如p->num?!?>”稱為指向運(yùn)算符。請分析以下幾種運(yùn)算:p->n得到p指向的結(jié)構(gòu)體變量中的成員n的值。p->n++得到p指向的結(jié)構(gòu)體變量中的成員n的值,用完該值后使它加1。++p->n得到p指向的結(jié)構(gòu)體變量中的成員n的值,并使之加1,然后再使用它。2.用結(jié)構(gòu)體變量和指向結(jié)構(gòu)體變量的指針構(gòu)成鏈表鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。圖7.8表示最簡單的一種鏈表(單向鏈表)的結(jié)構(gòu)。圖7.8鏈表有一個“頭指針”變量,圖中以head表示,它存放一個地址。該地址指向一個元素。鏈表中的每一個元素稱為“結(jié)點(diǎn)”,每個結(jié)點(diǎn)都應(yīng)包括兩個部分:一是用戶需要用的實(shí)際數(shù)據(jù),二是下一個結(jié)點(diǎn)的地址??梢钥吹芥湵碇懈髟卦趦?nèi)存中的存儲單元可以是不連續(xù)的。要找某一元素,可以先找到上一個元素,根據(jù)它提供的下一元素地址找到下一個元素??梢钥吹?,這種鏈表的數(shù)據(jù)結(jié)構(gòu),必須利用結(jié)構(gòu)體變量和指針才能實(shí)現(xiàn)。可以聲明一個結(jié)構(gòu)體類型,包含兩種成員,一種是用戶需要用的實(shí)際數(shù)據(jù),另一種是用來存放下一結(jié)點(diǎn)地址的指針變量。例如,可以設(shè)計這樣一個結(jié)構(gòu)體類型:structStudent{intnum;floatscore;Student*next;//next指向Student結(jié)構(gòu)體變量};其中成員num和score是用戶需要用到的數(shù)據(jù),相當(dāng)于圖7.8結(jié)點(diǎn)中的A,B,C,D。next是指針類型的成員,它指向Student類型數(shù)據(jù)(就是next所在的結(jié)構(gòu)體類型)。用這種方法就可以建立鏈表。見圖7.9。圖7.9圖中每一個結(jié)點(diǎn)都屬于Student類型,在它的成員next中存放下一個結(jié)點(diǎn)的地址,程序設(shè)計者不必知道各結(jié)點(diǎn)的具體地址,只要保證能將下一個結(jié)點(diǎn)的地址放到前一結(jié)點(diǎn)的成員next中即可。下面通過一個例子來說明如何建立和輸出一個簡單鏈表。例7.4建立一個如圖7.9所示的簡單鏈表,它由3個學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成。輸出各結(jié)點(diǎn)中的數(shù)據(jù)。#defineNULL0#include<iostream>structStudent{longnum;floatscore;structStudent*next;};intmain(){Studenta,b,c,*head,*p;a.num=31001;a.score=89.5;//對結(jié)點(diǎn)a的num和score成員賦值b.num=31003;b.score=90;//對結(jié)點(diǎn)b的num和score成員賦值c.num=31007;c.score=85;//對結(jié)點(diǎn)c的num和score成員賦值head=&a;//將結(jié)點(diǎn)a的起始地址賦給頭指針heada.next=&b;//將結(jié)點(diǎn)b的起始地址賦給a結(jié)點(diǎn)的next成員b.next=&c;//將結(jié)點(diǎn)c的起始地址賦給b結(jié)點(diǎn)的next成員c.next=NULL;//結(jié)點(diǎn)的next成員不存放其他結(jié)點(diǎn)地址p=head;//使p指針指向a結(jié)點(diǎn)do{cout<<p->num<<″″<<p->score<<endl;//輸出p指向的結(jié)點(diǎn)的數(shù)據(jù)p=p->next;//使p指向下一個結(jié)點(diǎn)}while(p!=NULL);//輸出完c結(jié)點(diǎn)后p的值為NULLreturn0;}請讀者考慮:①各個結(jié)點(diǎn)是怎樣構(gòu)成鏈表的。②p起什么作用?本例是比較簡單的,所有結(jié)點(diǎn)(結(jié)構(gòu)體變量)都是在程序中定義的,不是臨時開辟的,也不能用完后釋放,這種鏈表稱為靜態(tài)鏈表。對各結(jié)點(diǎn)既可以通過上一個結(jié)點(diǎn)的next指針去訪問,也可以直接通過結(jié)構(gòu)體變量名a,b,c去訪問。動態(tài)鏈表則是指各結(jié)點(diǎn)是可以隨時插入和刪除的,這些結(jié)點(diǎn)并沒有變量名,只能先找到上一個結(jié)點(diǎn),才能根據(jù)它提供的下一結(jié)點(diǎn)的地址找到下一個結(jié)點(diǎn)。只有提供第一個結(jié)點(diǎn)的地址,即頭指針head,才能訪問整個鏈表。如同一條鐵鏈一樣,一環(huán)扣一環(huán),中間是不能斷開的。建立動態(tài)鏈表,要用到下面7.1.7小節(jié)介紹的動態(tài)分配內(nèi)存的運(yùn)算符new和動態(tài)撤銷內(nèi)存的運(yùn)算符delete。將一個結(jié)構(gòu)體變量中的數(shù)據(jù)傳遞給另一個函數(shù),有下列3種方法:(1)用結(jié)構(gòu)體變量名作參數(shù)。一般較少用這種方法。(2)用指向結(jié)構(gòu)體變量的指針作實(shí)參,將結(jié)構(gòu)體變量的地址傳給形參。(3)用結(jié)構(gòu)體變量的引用變量作函數(shù)參數(shù)。下面通過一個簡單的例子來說明,并對它們進(jìn)行比較。例7.5有一個結(jié)構(gòu)體變量stu,內(nèi)含學(xué)生學(xué)號、姓名和3門課的成績。要求在main函數(shù)中為各成員賦值,在另一函數(shù)print中將它們的值輸出。7.1.6結(jié)構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù)(1)用結(jié)構(gòu)體變量作函數(shù)參數(shù)#include<iostream>#include<string>usingnamespacestd;structStudent//聲明結(jié)構(gòu)體類型Student{intnum;charname[20];floatscore[3];};intmain(){voidprint(Student);//函數(shù)聲明,形參類型為結(jié)構(gòu)體StudentStudentstu;//定義結(jié)構(gòu)體變量stu.num=12345;//以下5行對結(jié)構(gòu)體變量各成員賦值=″LiFung″;stu.score[0]=67.5;stu.score[1]=89;stu.score[2]=78.5;print(stu);//調(diào)用print函數(shù),輸出stu各成員的

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論