C語言程序設計案例式教程-第9章 結構體_第1頁
C語言程序設計案例式教程-第9章 結構體_第2頁
C語言程序設計案例式教程-第9章 結構體_第3頁
C語言程序設計案例式教程-第9章 結構體_第4頁
C語言程序設計案例式教程-第9章 結構體_第5頁
已閱讀5頁,還剩102頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第9章結構體《C語言程序設計案例式教程(第2版)》學習目標/Target了解結構體的概念,能夠說出結構體類型的特點掌握結構體類型與結構體變量的定義,能夠定義結構體類型與結構體變量掌握結構體變量的初始化,能夠完成結構體變量的初始化了解結構體變量的存儲方式,能夠說出結構體變量的存儲特點學習目標/Target掌握結構體變量的成員訪問,能夠使用“.”運算符和“→”運算符實現(xiàn)結構體變量成員的訪問掌握嵌套結構體變量的成員說,能夠使用“.”運算符和“→”運算符實現(xiàn)嵌套結構體變量成員的訪問了解嵌套結構體的內存管理,能夠說出嵌套結構體的存儲特點掌握結構體數組的定義與初始化,能夠完成結構體數組的定義與初始化學習目標/Target掌握結構體數組的訪問,能夠完成結構體數組的訪問掌握結構體變量、結構體數組、結構體數組作為函數參數的使用,能夠使用結構體變量、結構體數組、結構體指針傳遞數據掌握typedef關鍵字的使用,能夠使用typedef關鍵字簡化構造類型的定義與使用了解共用體的概念,能夠說出共用體構造類型的特點章節(jié)概述/Summary前面章節(jié)所學的數據類型都是分散的、互相獨立的,例如定義inta和charb兩個變量,這兩個變量是毫無內在聯(lián)系的,但在實際生活和工作中,經常需要處理一些關系密切的數據,例如,描述公司員工信息,包括姓名、部門、職位、電話、E-mail地址等數據,由于這些數據的類型各不相同,因此,要想對這些數據進行統(tǒng)一管理,僅靠前面所學的基本類型和數組很難實現(xiàn)。為此,C語言提供了結構體構造類型,它能夠將相同類型或者不同類型的數據組織在一起成為集合,解決更復雜的數據處理問題。本章將圍繞結構體進行詳細地講解。目錄/Contents案例9-1名片制作案例9-2員工生日福利案例9-3計算學生平均成績目錄/Contents案例9-4打漁曬網案例9-5角色與權限案例9-6學生成績管理系統(tǒng)名片制作案例9-1【案例9-1】名片制作(1)了解結構體的概念,能夠說出結構體類型的特點(2)掌握結構體類型與結構體變量的定義,能夠定義結構體類型與結構體變量(3)掌握結構體變量初始化,能夠完成結構體變量的初始化(4)了解結構體變量存儲方式,能夠說出結構體變量存儲特點(5)掌握結構體變量的成員訪問,能夠使用“.”運算符和“→”運算符實現(xiàn)結構體變量成員的訪問學習目標案例描述本案例要求編寫一個程序,從鍵盤輸入個人信息,在控制臺輸出一張名片,名片內容包括姓名、職位、聯(lián)系方式、公司單位、地址,如下圖。知識需求名片不同類型數據統(tǒng)一管理結構體知識講解1.結構體類型定義結構體是一種構造數據類型,可以把相同或者不同類型的數據整合在一起,這些數據稱為該結構體的成員。結構體類型要先定義再使用。struct結構體類型名稱{

數據類型

成員名1;

數據類型

成員名2; ……

數據類型

成員名n;};定義結構體類型的關鍵字結構體成員注意分號必不可少知識講解1.結構體類型定義假設定義一個學生結構體,學生信息包含學號(num)、姓名(name)、性別(sex)、年齡(age)、地址(address),定義如下。structStudent{ intnum; charname[10]; charsex; intage; charaddress[30];};結構體名稱結構體Student的成員知識講解1.結構體類型定義1.結構體類型定義以關鍵字struct開頭,后面的結構體類型名稱命名符合標識符命名規(guī)則。注2.結構體類型與整型、浮點類型、字符類型等類似,只是數據類型,而非變量。3.定義結構體類型不會分配內存,只有通過結構體類型定義了結構體變量,系統(tǒng)才會為變量分配內存。4.定義結構體類型時,末尾的分號不可缺少。項意事知識講解2.結構體變量的定義01先定義結構體類型,再定義結構體變量struct結構體類型名結構體變量名;定義示例。structStudentstu1,stu2;結構體變量stu1與stu2的內存分配知識講解2.結構體變量的定義使用結構體類型定義變量時,struct關鍵字不可少,structStudent作為整體才表示一個結構體類型。Studentstu1;

//錯誤,缺少struct關鍵字知識講解2.結構體變量的定義02在定義結構體類型的同時定義結構體變量struct結構體類型名稱{

數據類型

成員名1;

數據類型

成員名2; …

數據類型

成員名n;}結構體變量名列表;知識講解2.結構體變量的定義02在定義結構體類型的同時定義結構體變量定義示例。structStudent{ intnum; charname[10]; charsex;}stu1,stu2;知識講解3.結構體變量的初始化結構體變量初始化,其實就是為結構體變量中的各個成員賦值。結構體初始化有兩種方式。01在定義結構體類型時定義結構體變量,同時對結構體變量初始化。structPerson{ intID; charname[10]; charsex;}p={0001,"ZhangSan",'M'};知識講解3.結構體變量的初始化02先定義結構體類型,之后定義結構體變量并對結構體變量初始化。structPerson{ intID; charname[10]; charsex;};structPersonp={0001,"ZhangSan",'M'};知識講解3.結構體變量的初始化編譯器在初始化結構體變量時,按照成員聲明順序從前往后匹配,而不是按照數據類型自動匹配。在初始化成員變量時,如果沒有按順序為成員變量賦值,或者只給一部分成員變量賦值,往往會匹配錯誤。structPerson{ intID; charname[10]; charsex;};structPersonp={"ZhangSan",'M'};“ZhangSan“匹配給ID成員,'M'匹配給name成員錯誤示例。知識講解4.結構體變量的存儲方式結構體變量中各成員在內存中的存儲遵循字節(jié)對齊機制。010203結構體變量的首地址能夠被其最大基本類型成員的大小整除。結構體每個成員相對于結構體首地址的偏移量都是該成員大小的整數倍,且能夠被最大基本類型成員的大小整除。如有需要,編譯器會在成員之間加上填充字節(jié)。結構體的總大小為結構體最大基本類型成員大小的整數倍,如有需要,編譯器會在最末一個成員后面加上填充字節(jié)。知識講解4.結構體變量的存儲方式定義一個結構體類型與結構體變量。structNote{ chara; doubleb; intc; shortd;};structNotent;

//定義structNote結構體變量內存分配知識講解5.結構體變量的成員訪問訪問結構體變量成員的方式有兩種:直接訪問、通過指針訪問。01直接訪問結構體變量的成員直接訪問結構體變量的成員可以通過“.”運算符實現(xiàn)。結構體變量名.成員名;知識講解5.結構體變量的成員訪問訪問結構體變量成員的方式有兩種:直接訪問、通過指針訪問。01直接訪問結構體變量的成員應用示例:structPerson{ //定義結構體類型structPerson intID;

charname[10];

charsex;};intmain(){ structPersonp={0001,"ZhangSan",'M'};//定義結結構體變量p printf("name:%s\n",);}知識講解5.結構體變量的成員訪問訪問結構體變量成員的方式有兩種:直接訪問、通過指針訪問。01直接訪問結構體變量的成員通過“.”運算符可以訪問結構體變量成員,那么也可以通過這種方式修改結構體成員變量的值。chararr[20]="lisi"; //定義字符數組p.ID=002; //修改成員ID的值strcpy(,arr); //修改成員name的值p.sex='F'; //修改成員sex的值知識講解5.結構體變量的成員訪問訪問結構體變量成員的方式有兩種:直接訪問、通過指針訪問。01直接訪問結構體變量的成員通過“.”運算符也可以初始化結構體變量,這就解決了未按照順序初始化各成員變量時編譯器匹配錯誤的問題。structPersonp={.name="chenwu",.sex='F',.ID=0006}; //未按順序初始化structPersonp={.name="chenwu",.sex='F'}; //只初始化一部分成員知識講解5.結構體變量的成員訪問訪問結構體變量成員的方式有兩種:直接訪問、通過指針訪問。02通過指針訪問結構體變量的成員定義指向結構體變量的指針后,可以通過“指針名→成員變量名”的方式訪問結構體變量中的成員。知識講解5.結構體變量的成員訪問應用示例。structPerson{ //定義結構體類型structPerson intID;

charname[10];

charsex;};intmain() { structPersonp={0002,"zhouli",'F'};//定義結結構體變量p structPerson*ptr=&p; //定義指向變量p的指針ptr printf("%04d\n",ptr->ID);

//輸出成員ID的值

printf("%s\n",ptr->name); //輸出成員name的值

printf("%c\n",ptr->sex); //輸出成員sex的值 return0;

}案例實現(xiàn)1.案例設計名片內容包括姓名、職位、聯(lián)系方式、公司單位、地址,這些內容都需要使用字符串存儲,可以定義一個結構體structCard,在結構體內定義5個字符數組,分別用于存儲姓名、職位、聯(lián)系方式、公司單位、地址,從鍵盤輸入相應數據,再整理格式以名片形式輸出。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例9-1完整代碼}代碼實現(xiàn)員工生日福利案例9-2【案例9-2】員工生日福利(1)掌握嵌套結構體變量的成員說,能夠使用“.”運算符和“→”運算符實現(xiàn)嵌套結構體變量成員的訪問(2)了解嵌套結構體的內存管理,能夠說出嵌套結構體的存儲特點學習目標案例描述近日,公司為加強員工對企業(yè)的歸屬感與認同感,讓每位員工都感受到公司大家庭的溫暖,同時也為進一步推動公司企業(yè)文化建設,特為員工提供生日福利。在系統(tǒng)中錄入員工的生日信息,當某個員工生日時,系統(tǒng)會自動彈出提示消息。本案例要求編寫一個程序,在員工信息中添加員工生日信息,并在生日時祝福員工生日快樂,通知員工領取生日禮物。知識需求員工信息員工信息結構體員工生日員工生日結構體添加嵌套結構體知識講解1.訪問嵌套結構體變量成員結構體中定義另一個結構作為其成員,這樣的結構體稱為嵌套結構體。訪問嵌套結構體變量成員時,需要使用兩次“.”運算符。嵌套結構體變量成員訪問示例。structA{ intnum;

}; //定義結構體類型structAstructB{

//…;

structAa; }; //嵌套structA類型變量astructBb={10}; //定義structB類型變量bprintf("%d",b.a.num); //訪問嵌套結構體變量a的成員num知識講解1.訪問嵌套結構體變量成員結構體不能嵌套自身結構體類型的變量,因為嵌套自身結構體類型變量時,結構體類型還未定義,編譯器無法確定自身類型的變量需要分配多少內存空間。知識講解1.訪問嵌套結構體變量成員structPerson //定義結構體類型structPerson{ intID; charname[10]; charsex;

structPersonp1;//錯誤,嵌套自身結構體類型的變量};知識講解1.訪問嵌套結構體變量成員雖然結構體不能嵌套自身類型的變量,但可以自身結構體類型的指針變量,因為指針大小是固定的。structPerson //定義結構體類型structPerson{ intID; charname[10]; charsex;

structPerson*ptr; //正確,嵌套自身結構體類型的指針變量};嵌套自身結構體類型的指針變量,定義示例。知識講解1.訪問嵌套結構體變量成員雖然結構體不能嵌套自身類型的變量,但可以自身結構體類型的指針變量,因為指針大小是固定的。structPersonp1={0010,"lisi",'M'};structPersonp2={0007,"wangwu",'F',&p1}; //取變量p1的地址賦值給ptr//通過變量p2中的指針ptr可以訪問到變量p1中的成員p2.ptr->ID; //訪問structPerson結構體變量p1的成員IDp2.ptr->name; //訪問structPerson結構體變量p1的成員namep2.ptr->sex;

//訪問structPerson結構體變量p1的成員sex定義structPerson結構體類型的變量p1和p2,并對它們進行初始化。知識講解2.嵌套結構體內存管理嵌套結構體在內存中的存儲依舊遵循內存對齊機制,此時結構體以其普通成員和結構體成員中的最長數據類型為準,對各成員進行對齊。知識講解2.嵌套結構體內存管理structBirth{intyear;

intmonth;

intday;};structPerson{ intID; charname[10]; charsex;

structBirthbirthDate;

};內存分配案例實現(xiàn)1.案例設計010203定義表示生日的結構體類型structBirth。定義員工結構體類型structEmployee,在structEmployee結構體中定義一個structBirth變量birth。定義兩個int類型變量month、day,從鍵盤輸入變量month和變量day的值,模擬系統(tǒng)日期。如果變量month、day的值與員工生日日期相同,則輸出提示信息。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例9-2完整代碼}代碼實現(xiàn)計算學生平均成績案例9-3【案例9-3】計算學生平均成績(1)掌握結構體數組的定義與初始化,能夠完成結構體數組的定義與初始化(2)掌握結構體數組的訪問,能夠完成結構體數組的訪問學習目標案例描述每次考試結束之后,老師都會對學生成績進行各個維度的評估,以判定學生的學習情況,假設一個小組中有3個學生,每個學生有3門課程的成績需要統(tǒng)計。本案例要求編寫一個程序,對這3個學生的成績進行統(tǒng)計,具體要求如下。(1)從鍵盤輸入學生的學號、姓名和三門課程的成績。(2)計算出每個學生的平均成績,并依次把每個學生的學號、姓名和平均成績打印在屏幕上。知識需求學生信息與學生成績使用結構體存儲。多個學生的信息使用數組存儲。存儲結構體的數組稱為結構體數組。所以,需要學習結構體數組。知識講解1.結構體數組的定義與初始化結構體數組的定義方式有兩種。01先定義結構體類型,后定義結構體數組structStudent{ //定義structStudent結構體類型 intnum; charname[10]; charsex;};structStudentstus[20];

//定義structStudent結構體數組stus知識講解1.結構體數組的定義與初始化結構體數組的定義方式有兩種。02在定義結構體類型的同時定義結構體數組structStudent{ //定義structStudent結構體類型 intnum; charname[10]; charsex;}stus[20];知識講解1.結構體數組的定義與初始化結構體數組中的每個元素都是一個結構體變量,因此,在為結構體數組中的元素賦值時,需要將值依次放到一對大括號{}中。結構體數組初始化有兩種方式:先定義結構體類型,然后定義結構體數組并初始化結構體數組。在定義結構體類型的同時,定義結構體數組并初始化結構體數組。知識講解1.結構體數組的定義與初始化1先定義結構體類型,然后定義結構體數組并初始化結構體數組structStudent{ intnum; charname[10]; charsex;};structStudentstudents[3]={{0001,"ZhangSan",'M'}, {0002,"LiSi",'W'}, {0003,"ZhaoLiu",'M'}};知識講解1.結構體數組的定義與初始化2在定義結構體類型的同時,定義結構體數組并初始化結構體數組structStudent{ intnum; charname[10]; charsex;}students[3]={{0001,"ZhangSan",'M'}, {0002,"LiSi",'W'}, {0003,"ZhaoLiu",'M'}};知識講解1.結構體數組的定義與初始化初始化結構體數組時,也可以不指定數組大小,系統(tǒng)根據元素個數分配內存。structStudent{ intnum; charname[10]; charsex;}students[]={{0001,"ZhangSan",'M'}, {0002,"LiSi",'W'}, {0003,"ZhaoLiu",'M'}};知識講解2.結構體數組的訪問結構體數組的訪問其實是對數組中結構體變量的成員進行訪問,訪問格式如下。結構體數組[索引].成員名知識講解2.結構體數組的訪問結構體數組訪問示例。structStudent{

intnum;

charname[10];

charsex;

};structStudentstudents[3]={{0001,"ZhangSan",'M'}, {0002,"LiSi",'W'}, {0003,"ZhaoLiu",'M'}};for(inti=0;i<3;i++) { printf("%04d%s%c\n",

students[i].num,students[i].name,students[i].sex);}案例實現(xiàn)1.案例設計12定義一個結構體數組,用來存放3個學生的信息;用for循環(huán)依次讀取3個學生的信息,再用for循環(huán)分別計算成績總和并求出平均值。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例9-3完整代碼}代碼實現(xiàn)打漁曬網案例9-4【案例9-4】打漁曬網掌握結構體變量、結構體數組、結構體指針作為函數參數的使用,能夠使用結構體變量、結構體數組、結構體指針傳遞數據學習目標案例描述俗語三天打漁兩天曬網,用來比喻學習或做事時斷時續(xù),沒有恒心,不能堅持下去。但是對于我們來說,學習是一件持之以恒的事情,日積月累,才能有質的飛躍,正所謂不積跬步,無以至千里;不積小流,無以成江海。所以要想在某一方面有所成就,必得經過堅持不懈的努力,不能三天打漁兩天曬網。三天打漁兩天曬網案例描述在本案例中,我們要對三天打漁兩天曬網進行一次深入分析,假設某人從2000年1月1日起開始三天打漁兩天曬網,請編寫一個程序實現(xiàn)如下功能,從鍵盤輸入2000年1月1日開始的任意一天,判斷這一天此人是打漁還是曬網。知識需求打漁曬網的日期使用結構體進行存儲。定義函數計算結構體中的日期距離2000年1月1日有多少天。結構體作為函數參數知識講解1.結構體變量作為函數參數結構體變量作為函數參數的用法與普通變量類似,都需要保證調用函數的實參類型和被調用函數的形參類型相同。結構體變量作為函數參數時,也是值傳遞,被調函數中改變結構體成員變量的值,主調函數中的結構體變量不受影響。知識講解2.結構體數組作為函數參數函數間還可以傳遞結構體數組,結構體數組作為函數參數與普通數組作為函數參數一樣,都是傳遞的數組首地址,在被調函數中改變結構體數組元素的成員變量,主調函數中的結構體數組也會跟著改變。知識講解3.結構體指針作為函數參數結構體指針變量用于存放結構體變量的首地址,將結構體指針作為函數參數傳遞時,其實就是傳遞結構體變量的首地址,在被調函數中改變結構體變量成員的值,那么主調函數中結構體變量成員的值也會被改變。知識講解4.typedeftypedef關鍵字用于為現(xiàn)有數據類型取別名,使用typedef關鍵字可以方便程序的移植,減少對硬件的依賴性。typedef數據類型別名;知識講解4.typedef01為基本類型取別名使用typedef關鍵字為unsignedint類型取別名。typedefunsignedintuint;uinti,j,k;02為數組類型取別名使用typedef關鍵字為數組類型取別名。typedefcharNAME[10];NAMEclass1,class2;知識講解4.typedef03為結構體取別名使用typedef關鍵字為結構體類型structStudent取別名。typdef關鍵字最常用的就是為結構體取別名。typedefstructStudent{intnum; charname[10]; charsex;}STU;STUstu1; //等同于structStudentstu1知識講解4.typedef使用typedef關鍵字只是對已存在的數據類型取別名,而不是定義新的數據類型。案例實現(xiàn)1.案例設計(1)利用循環(huán)求出指定日期距2000年1月1日的天數。(2)注意問題:閏年。閏年二月29天,平年二月28天。(3)怎么判斷閏年?能被4整除且不能被100整除,或者能被400整除,則該年是閏年,否則不是閏年。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例9-4完整代碼}代碼實現(xiàn)角色與權限案例9-5【案例9-5】角色與權限了解共用體的概念,能夠說出共用體構造類型的特點學習目標案例描述假設學校購買一個學生信息管理系統(tǒng),該系統(tǒng)有3個角色,教務員、老師、學生,3個角色的權限分別如下。教務員:管理學生信息,如對姓名、年齡、性別、學號、籍貫、班級、宿舍等信息進行添加、修改、刪除等操作。老師:管理學生成績,如添加成績、修改成績、對成績進行排序等。學生:查看自己的個人信息,并添加、修改手機號。案例描述本案例要求編寫一個程序,模擬用戶登錄,如果是教務員,就提示進入學生信息管理頁面,為學生添加學號;如果是老師,就提示進入學生成績管理頁面,為學生添加成績;如果是學生,就提示進入個人信息查看頁面,添加自己的手機號。知識需求老師教務員學生用戶登錄角色關聯(lián)單選共用體知識講解1.共用體類型共用體也是構造類型,它的定義與結構體類似。union共用體類型名稱{

數據類型

成員名1;

數據類型

成員名2;

……

數據類型

成員名n;};定義共用體的關鍵字共用體成員分號不可少知識講解1.共用體類型共用體類型定義示例。union

data{

intm;

floatx;

charc;};知識講解2.共用體變量的定義共用體類型的變量定義方式有3種。1先定義共用體類型,再定義共用體變量uniondata{intm;

floatx;charc;};uniondataa,b;2在定義共用體類型的同時定義共用體變量uniondata{intm;floatx;charc;}a,b;知識講解2.共用體變量的定義共用體類型的變量定義方式有3種。3直接定義共用體類型變量union{intm;Doublex;charc;}a,b;知識講解共用體內存分配共用體的內存分配必須要符合以下兩項準則。(1)共用體的內存必須大于或等于其成員變量中大數據類型(包括基本數據類型和數組)的大小。(2)共用體的內存必須是最大基本數據類型的整數倍,如果不是,則填充字節(jié)。接下來通過兩個共用體的內存分析來解釋上述準則。知識講解共用體內存分配示例1:成員變量都是基本數據類型的共用體變量。union{intm;floatx;charc;}a;知識講解共用體內存分配示例2:成員變量包含數組的共用體變量。union{intm;floatx;charc;charname[5];}b;知識講解3.共用體變量的初始化和引用在共用體變量定義的同時,只能對其中一個成員的類型值進行初始化,這與它的內存分配也是相應的。union共用體類型名共用體變量={其中一個成員的類型值};共用體變量初始化示例。uniondataa={8};知識講解3.共用體變量的初始化和引用共用體變量的成員訪問也通過“.”運算符與->指針運算符。uniondata{intm;floatx;charc;};uniondataa={12},*p=&a;a.m; //引用共用體變量a中的成員mp->m; //引用共用體指針變量p所指向的變量成員m知識講解3.共用體變量的初始化和引用VS結構體在程序執(zhí)行的任何時刻,結構體變量中的所有成員是同時駐留在該結構體變量所占用的內存空間中共用體在程序執(zhí)行的任何時刻,共用體變量僅有一個成員駐留在共用體變量所占用的內存空間中。案例實現(xiàn)1.案例設計聲明登錄結構體,在結構體中定義登錄需要的數據,姓名、角色,需要進行的操作以共用體形式存儲。第1步第2步從鍵盤輸入登錄用戶姓名、角色,根據角色判斷要執(zhí)行的操作。案例實現(xiàn)2.完整代碼本案例中可以實現(xiàn)的效果圖如下。intmain(){請參考案例9-5完整代碼}代碼實現(xiàn)學生成績管理系統(tǒng)案例9-6【案例9-6】學生成績管理系統(tǒng)鞏固前面所學知識,能夠利用前面所學知識實現(xiàn)案例9-6。學習目標案例描述本案例就要求讀者模擬開發(fā)一個學生成績管理系統(tǒng),該系統(tǒng)的功能需求如下所示。(1)添加學生信息,包括學號、姓名、語文、數學成績。(2)顯示學生信息,將所有學生信息打印輸出。(3)修改學生信息,可以根據姓名查找到學生,然后可以修改學生姓名、成績項。(4)刪除學生信息,根據學號查找到學生,將其信息刪除。(5)查找學生信息,根據學生姓名,將其信息打印輸出。(6)按學生總成績進行從高到低排序。案例實現(xiàn)1.案例設計學生信息可以使用結構體數組進行存儲,學生成績

溫馨提示

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

評論

0/150

提交評論