語言教程結(jié)構(gòu)體實(shí)用教案_第1頁
語言教程結(jié)構(gòu)體實(shí)用教案_第2頁
語言教程結(jié)構(gòu)體實(shí)用教案_第3頁
語言教程結(jié)構(gòu)體實(shí)用教案_第4頁
語言教程結(jié)構(gòu)體實(shí)用教案_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、會(huì)計(jì)學(xué)1語言教程語言教程(jiochng)結(jié)構(gòu)體結(jié)構(gòu)體第一頁,共65頁。表8-1 某學(xué)校(xuxio)學(xué)生成績(jī)管理表學(xué)學(xué)號(hào)號(hào)姓名姓名性性別別入學(xué)時(shí)間入學(xué)時(shí)間計(jì)算機(jī)原計(jì)算機(jī)原理理英英 語語數(shù)數(shù) 學(xué)學(xué)音音 樂樂1令狐沖令狐沖男男1999908372822林平之林平之男男1999789288783岳靈珊岳靈珊女女1999897298664任瑩瑩任瑩瑩女女1999789587905 6 第1頁/共65頁第二頁,共65頁。第2頁/共65頁第三頁,共65頁。int scoreComputer30 = 90,78,89,78;int scoreEnglish30 = 83,92,72,95;int scor

2、eMath30 = 72,88,98,87;int scoreMusic30 = 82,78,66,90; 第3頁/共65頁第四頁,共65頁。907889788392729572889887827866901234令狐沖林平之岳靈珊任瑩瑩男男女女1999199919991999第4頁/共65頁第五頁,共65頁。第5頁/共65頁第六頁,共65頁。1令狐沖男1999908372822林平之男1999789288783岳靈珊女1999897298664任瑩瑩女199978958790第6頁/共65頁第七頁,共65頁。struct STUDENT是一個(gè)類型struct STUDENT students

3、4;students0.studentNamestudents0.Sex它們都是變量,一般稱為(chn wi)結(jié)構(gòu)的成員變量第7頁/共65頁第八頁,共65頁。8.1 結(jié)構(gòu)(jigu)體的定義 結(jié)構(gòu)體類型的定義 結(jié)構(gòu)體類型變量(binling)的引用 結(jié)構(gòu)體變量(binling)的初始化第8頁/共65頁第九頁,共65頁。struct studentint num; char name20; char sex; int age; char addr30;;是數(shù)據(jù)類型,不是(b shi)變量名對(duì)各成員都要進(jìn)行類型(lixng)說明;成員名定名規(guī)則與變量名同。一、結(jié)構(gòu)(jigu)體類型的定義 一般形式

4、為:struct 結(jié)構(gòu)體名 成員表列 ;第9頁/共65頁第十頁,共65頁。struct student student1, student2;定義(dngy)studet1和sudent2為struct student類型變量結(jié)構(gòu)(jigu)體類型變量的定義 第10頁/共65頁第十一頁,共65頁。這樣(zhyng),可直接用STUDENT定義變量,如:STUDENT student1, student2;此時(shí),不必再寫關(guān)鍵字struct第11頁/共65頁第十二頁,共65頁。一般形式是:struct 結(jié)構(gòu)(jigu)體名 成員列表 變量名列表;第12頁/共65頁第十三頁,共65頁。其一般(ybn

5、)形式是:struct 成員表列 變量名表列;此時(shí),不出現(xiàn)(chxin)結(jié)構(gòu)體名第13頁/共65頁第十四頁,共65頁。typedef 的用法(yn f) 功能:定義新類型,即為C語言中已有的數(shù)據(jù)類型 名定義一個(gè)(y )新名字。定義(dngy)格式: typedef 標(biāo)識(shí)符1 標(biāo)識(shí)符2第14頁/共65頁第十五頁,共65頁。struct student int num; char name20; char sex; int age; float score; char addr30; ;typedef struct student STUD;STUD student1,student2;用STUD

6、代替(dit) struct student類型;第15頁/共65頁第十六頁,共65頁。幾點(diǎn)說明(shumng):1. 類型與變量是不同概念,不要混淆(hnxio);2. 結(jié)構(gòu)體中的成員,可以單獨(dú)使用,其作 用與地位相當(dāng)于普通變量;3. 成員名可以與程序中的變量名相同,二 者不代表同一對(duì)象。第16頁/共65頁第十七頁,共65頁。struct date int month; int day; int year; ;Struct studentint num;char name20;int age;struct date birthday;student1,student2;4. 成員(chngy

7、un)也可以是一個(gè)結(jié)構(gòu)體變量;例如(lr):第17頁/共65頁第十八頁,共65頁。錯(cuò)!正確(zhngqu)! 引用形式為:結(jié)構(gòu)(jigu)體變量名.成員名 第18頁/共65頁第十九頁,共65頁。 scanf(“%d”,& student1.num); printf(“%x”,&student1);scanf(“%d,%s,%c,%d,%s”,&student1);輸入(shr)student1.num的值輸出(shch)student1的首地址2 .若成員本身又屬一個(gè)結(jié)構(gòu)體類型,只能對(duì)最低級(jí)的 成員進(jìn)行賦值或存取以及運(yùn)算。 如:student1.birthday.yea

8、r 第19頁/共65頁第二十頁,共65頁。運(yùn)行(ynxng)結(jié)果為:No.:9801name:Wang hongsex:Waddress:2 Linggong Road第20頁/共65頁第二十一頁,共65頁。第21頁/共65頁第二十二頁,共65頁。也可直接(zhji)定義,如struct student int num; stu3;或struct int num; stu3; 8.2 結(jié)構(gòu)體數(shù)組(每個(gè)數(shù)組元素都是一個(gè)(y )結(jié)構(gòu)體類型的數(shù)據(jù))第22頁/共65頁第二十三頁,共65頁。結(jié)構(gòu)體數(shù)組 初始化的一般(ybn)形式是在定義數(shù)組后面加上:=初值表列;也可采用(ciyng):struct st

9、udent int num; ; struct student stu=,;第23頁/共65頁第二十四頁,共65頁。例題:設(shè)有三個(gè)候選人,每次輸入一個(gè)得票的候選人的名字,要求最后輸出(shch)各人得票結(jié)果。第24頁/共65頁第二十五頁,共65頁。struct student *p;p=&stu_1;Stu_1.num=9901;strcpy(stu_1.name, “Li Min”);stu_1.sex=W;printf(“No.:%ldnname%snsex:%cn”,stu_1.num,stu_1.name,stu_1.sex);printf(“nNo.:%ldnname%sns

10、ex:%cn”,(*p).num,(*p).name, (*p).sex);結(jié)構(gòu)體變量的指針:是該結(jié)構(gòu)體變量所占居的內(nèi)存(ni cn)段的起始地址。第25頁/共65頁第二十六頁,共65頁。指向(zh xin)運(yùn)算符。其優(yōu)先級(jí)高于自增、自減運(yùn)算符試分析(fnx)以下運(yùn)算:成員運(yùn)算符得到p指向的結(jié)構(gòu)體變量中的成員n的值使其先加1+ ( p-n)得到p指向的結(jié)構(gòu)體變量中的成員n的值,用完后使它加1;(p-n)+得到p指向的結(jié)構(gòu)體變量中的成員n的值p-n第26頁/共65頁第二十七頁,共65頁。for (pt=stu; ptscoreComputer; sum1 = sum1 + pt-scoreEng

11、lish; sum2 = sum2 + pt-scoreMath; sum3 = sum3 + pt-scoreMusic; for (i=0; i4; i+) averagei = sumi/4; printf(%20s : %4.2fn, namei, *(average+i); 學(xué)號(hào)姓名性別入學(xué)時(shí)間計(jì)算機(jī)原理年月日英語數(shù)學(xué)音樂第27頁/共65頁第二十八頁,共65頁。main()struct STUDENT *pt;float sum4 = 0.0,average4 = 0.0;int i;char *name=score of Computer,score of English, sco

12、re of Math,score of Music;pt = stu; /*pt指向結(jié)構(gòu)(jigu)體數(shù)組的第一個(gè)元素*/for (pt=stu; ptscoreComputer; sum1 = sum1 + pt-scoreEnglish; sum2 = sum2 + pt-scoreMath; sum3 = sum3 + pt-scoreMusic; for (i=0; idata!=x) p=p-next ; return(p); struct Link int data; Struct Link *next; ;第52頁/共65頁第五十三頁,共65頁。3 、單鏈表的插入(ch r)運(yùn)算

13、(后插) void dlbhcr (struct Link *p, int x) struct Link *s ; s=(struct Link *)malloc(sizeof(struct Link); if(s!=NULL)s-data=x;s-next=p-next;p-next=s; else printf(“unsucess!”);baPbaxPSanaia1a2ai-1xheadSP第53頁/共65頁第五十四頁,共65頁。ai-1a1aiai+1LpqVoid dlbsc (struct Link *p) struct Link *q ; if( p-next !=NULL) q=

14、p-next ; p-next=q-next ; free(q); 4、單鏈表的刪除運(yùn)算(yn sun) (在單鏈表中刪除 p 結(jié)點(diǎn)的直接后繼結(jié)點(diǎn) q )第54頁/共65頁第五十五頁,共65頁。5、單鏈表中直接插入或刪除某個(gè)(mu )結(jié)點(diǎn)p插入某個(gè)結(jié)點(diǎn)p時(shí)需考慮:1. 插入點(diǎn)p在第一個(gè)結(jié)點(diǎn)之前,應(yīng)修改頭指針head及其指向(zh xin) 即:p - next=head; head=p;2. 插入點(diǎn)p在鏈表中間,應(yīng)修改插入點(diǎn)前pr結(jié)點(diǎn)的指向(zh xin) 即: p - next=pr - next; pr - next =p;3. 插入點(diǎn)p在鏈尾,應(yīng)修改原鏈表最后一個(gè)結(jié)點(diǎn)pr指針域的指向(z

15、h xin),并將新插入的結(jié)點(diǎn)p的指針域賦為NULL. 即: p - next=NULL; pr - next =p;第55頁/共65頁第五十六頁,共65頁。刪除某個(gè)結(jié)點(diǎn)p時(shí)需考慮:1. 欲刪除的結(jié)點(diǎn)p是第一個(gè)結(jié)點(diǎn),應(yīng)修改頭指針(zhzhn)head及其指向 即: head = p - next; free(p);2. 欲刪除的結(jié)點(diǎn)p在鏈表中間或鏈尾,應(yīng)修改欲刪除的結(jié)點(diǎn)p之前pr結(jié)點(diǎn)的指向 即: pr - next = p - next; free(p); 第56頁/共65頁第五十七頁,共65頁。動(dòng)態(tài)數(shù)組(一般了解) 用calloc(n, size)函數(shù)開辟的存儲(chǔ)單元(cn ch dn yun

16、)相當(dāng)于一個(gè)一維數(shù)組 第一個(gè)參數(shù)n決定了一維數(shù)組的大小 第二個(gè)參數(shù)size決定了數(shù)組元素的類型 函數(shù)的返回值就是數(shù)組的首地址第57頁/共65頁第五十八頁,共65頁。 8.7 共 用 體(聯(lián)合體)一、共用(n yn)體類型的定義 一般(ybn)形式為:union 共用(n yn)體名 成員表列 ;例: union number int x ; float y ; ;第58頁/共65頁第五十九頁,共65頁。二、共用體變量(binling)的定義例: union number int x ; float y ; s1, s2 ;變量(binling)s1的存儲(chǔ)空間為: S1.yS1. x第59頁/共65頁第六十頁,共65頁。三、共用(n yn)體變量的引用注意(zh y):不能引用共用體變量,僅能引用共用體變量中的成員。 如:printf(“%d”,s1); 錯(cuò) printf(“%d,%d”,s1.x,s1.y); 對(duì)第60頁/共65頁第六十一頁,共65頁。1. 同一段內(nèi)存允許有多種類型的成員,某一時(shí)刻僅 一個(gè)成員起作用。2.共用體使用覆蓋技術(shù),起作用的是最后一次存放的成員。 如: s1.x=1;s1.y=3.5;s1.y有效3. 變量及各成員的地址相同。4. 不能對(duì)共用體變量名賦值。5. 共用體變量初始化時(shí),只能(zh nn

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論