![C程序設(shè)計第四Chap9(新)譚浩強(qiáng)_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/9/b0cfd269-2935-4247-9e19-0288141f5e52/b0cfd269-2935-4247-9e19-0288141f5e521.gif)
![C程序設(shè)計第四Chap9(新)譚浩強(qiáng)_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/9/b0cfd269-2935-4247-9e19-0288141f5e52/b0cfd269-2935-4247-9e19-0288141f5e522.gif)
![C程序設(shè)計第四Chap9(新)譚浩強(qiáng)_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/9/b0cfd269-2935-4247-9e19-0288141f5e52/b0cfd269-2935-4247-9e19-0288141f5e523.gif)
![C程序設(shè)計第四Chap9(新)譚浩強(qiáng)_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/9/b0cfd269-2935-4247-9e19-0288141f5e52/b0cfd269-2935-4247-9e19-0288141f5e524.gif)
![C程序設(shè)計第四Chap9(新)譚浩強(qiáng)_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/9/b0cfd269-2935-4247-9e19-0288141f5e52/b0cfd269-2935-4247-9e19-0288141f5e525.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第9 9章章 結(jié)構(gòu)體結(jié)構(gòu)體第第9章章 結(jié)構(gòu)體結(jié)構(gòu)體9.1 9.1 結(jié)構(gòu)體類型結(jié)構(gòu)體類型9.2 9.2 結(jié)構(gòu)體變量定義及成員引用結(jié)構(gòu)體變量定義及成員引用9.3 9.3 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化9.4 9.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組9.5 9.5 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.6 9.6 單向鏈表概念單向鏈表概念9.7 9.7 單向鏈表建立、查找、遍歷、插入、刪除單向鏈表建立、查找、遍歷、插入、刪除9.8 typedef9.8 typedef定義類型別名定義類型別名第第9章章 結(jié)構(gòu)體結(jié)構(gòu)體9.1 9.1 結(jié)構(gòu)體類型結(jié)構(gòu)體類型9.2 9.2 結(jié)構(gòu)體變量定義及成員引用結(jié)構(gòu)體變量定義及成員引用9.
2、3 9.3 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化9.4 9.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組9.5 9.5 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.6 9.6 單向鏈表概念單向鏈表概念9.7 9.7 單向鏈表建立、查找、遍歷、插入、刪除單向鏈表建立、查找、遍歷、插入、刪除9.8 typedef9.8 typedef定義類型別名定義類型別名結(jié)構(gòu)體類型結(jié)構(gòu)體類型 例:學(xué)生名冊中一個學(xué)生包括學(xué)號、姓名、性別、年齡、例:學(xué)生名冊中一個學(xué)生包括學(xué)號、姓名、性別、年齡、家庭住址、電話號碼等信息。家庭住址、電話號碼等信息。 long long no; char name10; int age; char gender3; char
3、 addr50; long long tel; 如果將學(xué)號、姓名、性別、年齡、家庭住址、電話號碼如果將學(xué)號、姓名、性別、年齡、家庭住址、電話號碼分別定義為相互獨立的變量,難以反映出它們之間的內(nèi)分別定義為相互獨立的變量,難以反映出它們之間的內(nèi)在聯(lián)系。在聯(lián)系。結(jié)構(gòu)體類型結(jié)構(gòu)體類型 結(jié)構(gòu)體是由不同數(shù)據(jù)類型的數(shù)據(jù)組結(jié)構(gòu)體是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的集合。成的集合。 例如:學(xué)生名冊中包括學(xué)號、姓名、性別、年齡、家庭住址、電話號碼等信息。 可以構(gòu)成一個“學(xué)生名冊”結(jié)構(gòu)體。 構(gòu)成結(jié)構(gòu)體的數(shù)據(jù)稱為結(jié)構(gòu)體成員(域),例如“學(xué)號”、“姓名”、“年齡”、“住址”和“電話”都是“學(xué)生名冊”結(jié)構(gòu)體的成員。 結(jié)構(gòu)體類型結(jié)
4、構(gòu)體類型 結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型的定義struct 結(jié)構(gòu)體名 成員表 ; 其中【struct 結(jié)構(gòu)體名】是數(shù)據(jù)類型名; 【成員表】對每個成員進(jìn)行類型說明。 成員類型可以是任何類型(也可以是另一結(jié)構(gòu)類型)。結(jié)構(gòu)體類型結(jié)構(gòu)體類型 例例 struct Date struct Date int year,month,day; ; ; struct student struct student long long num; char name10; int age; char gender3; char addr50; long long tel; struct Date birthday; ; ;
5、結(jié)構(gòu)體類型結(jié)構(gòu)體類型 結(jié)構(gòu)體類型的定義建立的是一個類型名,結(jié)構(gòu)體類型的定義建立的是一個類型名,不是變量,不分配存貯空間。不是變量,不分配存貯空間。 其用處與一般類型名(如其用處與一般類型名(如intint)相同,用)相同,用于定義變量、做函數(shù)參數(shù)類型、指針的于定義變量、做函數(shù)參數(shù)類型、指針的基類型等。基類型等。第第9章章 結(jié)構(gòu)體結(jié)構(gòu)體9.1 9.1 結(jié)構(gòu)體類型結(jié)構(gòu)體類型9.2 9.2 結(jié)構(gòu)體變量定義及成員引用結(jié)構(gòu)體變量定義及成員引用9.3 9.3 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化9.4 9.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組9.5 9.5 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.6 9.6 單向鏈表概念單向鏈表概念
6、9.7 9.7 單向鏈表建立、查找、遍歷、插入、刪除單向鏈表建立、查找、遍歷、插入、刪除9.8 typedef9.8 typedef定義類型別名定義類型別名結(jié)構(gòu)體變量定義結(jié)構(gòu)體變量定義 與一般類型變量的定義相同。其類型名是“struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名”。例如:先定義類型名,再定義變量。 struct Date struct Date int year,month,day; int year,month,day; ; ; struct student struct student long long num; long long num; char name10; char n
7、ame10; int age; int age; char gender3; char gender3; char addr50; char addr50; long long tel; long long tel; struct Date birthday; struct Date birthday; ; ; struct student struct student student1,student2student1,student2; ;結(jié)構(gòu)體變量結(jié)構(gòu)體變量 結(jié)構(gòu)體變量的大?。?定義變量時分配存儲空間的大小是: sizeof(struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名) sizeof(
8、struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名) sizeof(成員成員)重要提示重要提示 不要混淆結(jié)構(gòu)體類型與結(jié)構(gòu)體變量不要混淆結(jié)構(gòu)體類型與結(jié)構(gòu)體變量之間的區(qū)別!之間的區(qū)別!結(jié)構(gòu)體變量的成員引用結(jié)構(gòu)體變量的成員引用 使用結(jié)構(gòu)體變量時,一般對其成員進(jìn)行引用,而不對結(jié)構(gòu)體變量進(jìn)行整體引用。有兩種方法引用結(jié)構(gòu)體成員: 結(jié)構(gòu)體變量. .成員名 結(jié)構(gòu)體指針變量-成員名 其中“.”是結(jié)構(gòu)體成員運算符;“-”是指向結(jié)構(gòu)體成員運算符。表達(dá)式類型是成員的類型。 例如: student1.num = 10001001; +student1.age;結(jié)構(gòu)體變量的成員引用結(jié)構(gòu)體變量的成員引用 若成員本身的類型是另一個
9、結(jié)構(gòu)體,則要用若干個“.”運算符,對最低一級的成員進(jìn)行引用。 例如: student1.birthday.year=1995; printf(%d年%d月%d日, student1.birthday.year, student1.birthday.month, student1.birthday.day);第第9章章 結(jié)構(gòu)體結(jié)構(gòu)體9.1 9.1 結(jié)構(gòu)體類型結(jié)構(gòu)體類型9.2 9.2 結(jié)構(gòu)體變量定義及成員引用結(jié)構(gòu)體變量定義及成員引用9.3 9.3 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化9.4 9.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組9.5 9.5 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.6 9.6 單向鏈表概念單向鏈表概念9.
10、7 9.7 單向鏈表建立、查找、遍歷、插入、刪除單向鏈表建立、查找、遍歷、插入、刪除9.8 typedef9.8 typedef定義類型別名定義類型別名結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化 struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 結(jié)構(gòu)體變量結(jié)構(gòu)體變量 = = 每個成員的初值每個成員的初值 ;結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化 例例 struct studentstruct student long long num; long long num; char name10; char name10; int age; int age; char gender3; char gender3
11、; struct date birthday; struct date birthday; char addr50; char addr50; long long tel; long long tel;結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化 例例int main()int main() struct student s1=10001001,struct student s1=10001001,張三張三,20, M,20, M, 1995,1,1,XXX,123456 ; 1995,1,1,XXX,123456 ; printf(No.:%I64d Name:%s Age:%d Gender:%s
12、 printf(No.:%I64d Name:%s Age:%d Gender:%s Birthday:%d-%d-%d Address:%s Birthday:%d-%d-%d Address:%s Tel.:%I64dn,s1.num,, Tel.:%I64dn,s1.num,, s1.age,s1.gender,s1.birthday.year, s1.age,s1.gender,s1.birthday.year, s1.birthday.month,s1.birthday.day, s1.birthday.month,s1.birthday.day, s1.
13、addr,s1.tel); s1.addr,s1.tel); return 0; return 0; 第第9章章 結(jié)構(gòu)體結(jié)構(gòu)體9.1 9.1 結(jié)構(gòu)體類型結(jié)構(gòu)體類型9.2 9.2 結(jié)構(gòu)體變量定義及成員引用結(jié)構(gòu)體變量定義及成員引用9.3 9.3 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化9.4 9.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組9.5 9.5 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.6 9.6 單向鏈表概念單向鏈表概念9.7 9.7 單向鏈表建立、查找、遍歷、插入、刪除單向鏈表建立、查找、遍歷、插入、刪除9.8 typedef9.8 typedef定義類型別名定義類型別名結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組 數(shù)組的元素類型是一個結(jié)構(gòu)體類型。
14、 例如: struct student students10; struct student s3 = 10001001,張三,20, M,1985,1,1,XXX,123456 , , ;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組 struct student s = 10001001,張三,20, M,1985,1,1,XXX,123456 , , ;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組 例例例例 對候選人得票進(jìn)行統(tǒng)計。 設(shè)有3個候選人,每次輸入一個得票的候選人名字,最后輸出每人得票數(shù)。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組 例例 struct person char name20; int count; ;struct person char
15、 name20; int count; ;int main()int main() struct person candidate=Li,0,zhang,0,Fun,0;struct person candidate=Li,0,zhang,0,Fun,0; int i,j; char election20; int i,j; char election20; for(i=1;i=10;i+) for(i=1;i=10;i+) scanf(%s,election); scanf(%s,election); for(j=0;j3;j+) for(j=0;j3;j+) if (strcmp(elec
16、tion, if (strcmp(election,)=0) )=0) candidatej.countcandidatej.count+;+; for(i=0;i3;i+) for(i=0;inumps-num, ,ps-nameps-name, , ps-gender ps-gender, ,ps-scoreps-score);); return 0; return 0; 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 - -的優(yōu)先級高的優(yōu)先級高 ps-num+ps-num+ +ps-num +ps-num (+ps)-num (+ps)-num 結(jié)構(gòu)體指
17、針結(jié)構(gòu)體指針 指向結(jié)構(gòu)體數(shù)組的指針指向結(jié)構(gòu)體數(shù)組的指針: : struct student s10; struct student *ps = s; 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 例例struct studentstruct student long long num; long long num; char name20; char name20; char gender3; char gender3; double score; double score; 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 例例int main()int main() struct student s3= struct student s3=
18、 , ; ; struct student struct student * *ps;ps; printf(No. Name Gender Score printf(No. Name Gender Score for ( for (ps=s;pss+3;ps+ps=s;psnumps-num, , ps-name ps-name, ,ps-genderps-gender, ,ps-scoreps-score);); return 0; return 0; 結(jié)構(gòu)體函數(shù)參數(shù)結(jié)構(gòu)體函數(shù)參數(shù) 結(jié)構(gòu)體作為函數(shù)參數(shù)結(jié)構(gòu)體作為函數(shù)參數(shù): : void f(struct student); struct st
19、udent s; f(s); 函數(shù)調(diào)用時,實參整體作為形參的初值。 結(jié)構(gòu)體函數(shù)參數(shù)結(jié)構(gòu)體函數(shù)參數(shù) 例例 有一個結(jié)構(gòu)體變量s,內(nèi)含學(xué)號、姓名和3門課程的成績,要求在main函數(shù)中賦值,在print函數(shù)中輸出相關(guān)信息。 結(jié)構(gòu)體函數(shù)參數(shù)結(jié)構(gòu)體函數(shù)參數(shù) 例例struct studentstruct student long long num; long long num; char name20; char name20; double score3; double score3; 結(jié)構(gòu)體函數(shù)參數(shù)結(jié)構(gòu)體函數(shù)參數(shù) 例例void print(void print(struct student sstruc
20、t student s) ) printf(%I64d%-20s%7.2f%7.2f%7.2fn, printf(%I64d%-20s%7.2f%7.2f%7.2fn, s.nums.num, ,, , s.score0 s.score0, ,s.score1s.score1, ,s.score2s.score2);); 結(jié)構(gòu)體函數(shù)參數(shù)結(jié)構(gòu)體函數(shù)參數(shù) 例例int main()int main() struct student s; struct student s; s.num=1001000; s.num=1001000; strcpy(,Li); str
21、cpy(,Li); s.score0=90; s.score0=90; s.score1=77.5; s.score1=77.5; s.score2=95.5; s.score2=95.5; print( print(s s);); return 0; return 0; 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 例例 有一個結(jié)構(gòu)體變量s,內(nèi)含學(xué)號、姓名和3門課程的成績,要求在main函數(shù)中賦值,在print函數(shù)中輸出相關(guān)信息。使用結(jié)構(gòu)體指針作為函數(shù)參數(shù)。 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 例例struct studentstruct student long long num; long long num; c
22、har name20; char name20; double score3; double score3; 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 例例void print(void print(struct studentstruct student* * ps ps) ) printf(%I64d%-20s%7.2f%7.2f%7.2fn, printf(%I64d%-20s%7.2f%7.2f%7.2fn, ps-numps-num, , ps-name ps-name, , ps-score0 ps-score0, , ps-score1 ps-score1, , ps-score2 ps-score
23、2);); 結(jié)構(gòu)體指針結(jié)構(gòu)體指針 例例int main()int main() struct student s;struct student s; scanf(%I64d%s%lf%lf%lf,&s.num,, scanf(%I64d%s%lf%lf%lf,&s.num,, &s.score0,&s.score1,&s.score2); &s.score0,&s.score1,&s.score2); print(&s); print(&s); return 0;return 0; 第第9章章 結(jié)構(gòu)體結(jié)構(gòu)體9.1 9.1 結(jié)構(gòu)體類型結(jié)構(gòu)體類型9.2 9.2 結(jié)構(gòu)體變量定義及成員引用結(jié)構(gòu)體變量定義及成員引用9.3 9.3 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化9.4 9.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組9.5 9.5 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.6 9.6 單向鏈表概念單向鏈表概念9.7 9.7 單向鏈表建立、查找、遍歷、插入、刪除單向鏈表建立、查找、遍歷、插入、刪除9.8 typedef9.8 typedef定義類型別名定義類型別名typedeftypedef定義類型別名定義類型別名 使用typedef 定義已有類型的別名(不是定義新的類型
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版數(shù)學(xué)八年級下冊16.2《二次根式的乘除》聽評課記錄4
- 岳麓版歷史八年級下冊第16課《“一國兩制”與香港、澳門回歸祖國》聽課評課記錄
- 蘇教版三年級第五冊整百數(shù)乘一位數(shù)的口算教學(xué)設(shè)計
- 小學(xué)二年級語文教學(xué)計劃范文
- 廠房物業(yè)管理服務(wù)合同范本
- 五年級上冊數(shù)學(xué)聽評課記錄《第5單元:第3課時 用字母表示稍復(fù)雜的數(shù)量關(guān)系》人教新課標(biāo)
- 2025年度互聯(lián)網(wǎng)金融服務(wù)連帶責(zé)任保證擔(dān)保協(xié)議范文
- 2025年度蔬菜種植基地病蟲害防治合作協(xié)議
- 二零二五年度XX裝修公司員工崗位責(zé)任合同協(xié)議書
- 2025年度電商團(tuán)隊數(shù)據(jù)安全合作協(xié)議
- 詩詞寫作入門課件
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫含答案解析
- 2023年高一物理期末考試卷(人教版)
- 2023版押品考試題庫必考點含答案
- 植物之歌觀后感
- 空氣能熱泵安裝示意圖
- 建筑工程施工質(zhì)量驗收規(guī)范檢驗批填寫全套表格示范填寫與說明
- 2020年中秋國慶假日文化旅游市場安全生產(chǎn)檢查表
- 辦公家具項目實施方案、供貨方案
- 七年級英語下冊閱讀理解10篇
- 節(jié)后開工收心會
評論
0/150
提交評論