C++程序設(shè)計教程結(jié)構(gòu)體.ppt_第1頁
C++程序設(shè)計教程結(jié)構(gòu)體.ppt_第2頁
C++程序設(shè)計教程結(jié)構(gòu)體.ppt_第3頁
C++程序設(shè)計教程結(jié)構(gòu)體.ppt_第4頁
C++程序設(shè)計教程結(jié)構(gòu)體.ppt_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、CC+語言程序設(shè)計,教師:張金蘭 TelEmail: Office:HA301,第十一章 結(jié)構(gòu)體與共用體,主要內(nèi)容,三個定義:結(jié)構(gòu)體、結(jié)構(gòu)體類型、結(jié)構(gòu)體類型變量。 結(jié)構(gòu)體類型變量的靜態(tài)、動態(tài)初始化。 結(jié)構(gòu)體類型的嵌套及其引用。 結(jié)構(gòu)體的自引用的定義。 結(jié)構(gòu)體類型作為函數(shù)參數(shù)。,三個定義,結(jié)構(gòu)體 結(jié)構(gòu)體類型 結(jié)構(gòu)體類型變量,結(jié)構(gòu)體定義,是一種由程序員自行定義的構(gòu)造類型; 是一個或多個類型不一定相同的變量的集合。 如通訊錄-姓名、電話、地址、郵政編碼; 日期-年、月、日; 學(xué)生信息-學(xué)號、姓名、性別、年齡;,結(jié)構(gòu)體類型,語法結(jié)構(gòu): struct 結(jié)構(gòu)體名 數(shù)據(jù)類型 成員名

2、; 數(shù)據(jù)類型 成員名; 數(shù)據(jù)類型 成員名; ; 如果結(jié)構(gòu)體名省略,則被稱為無名結(jié)構(gòu)類型。 意義: (1)劃定了數(shù)據(jù)的界限; (2)確定了該結(jié)構(gòu)體在內(nèi)存所占空間大小。所占內(nèi)存空間大小為各 成員在內(nèi)存所占字節(jié)數(shù)的總和。,請寫出下列程序的運行結(jié)果,main() struct student long num; char name20; char sex; int age; ; printf(%dn,sizeof(struct student); getch();,27,;,三個定義的區(qū)別,結(jié)構(gòu)體-集合(用戶理解) 結(jié)構(gòu)體類型-類型(內(nèi)存空間) 結(jié)構(gòu)體類型變量-變量(編程者使用),結(jié)構(gòu)體類型變量的定義

3、1,傳統(tǒng)的方法: struct 結(jié)構(gòu)體名 結(jié)構(gòu)變量名;,struct student long num; char name20; char sex; int age; ; struct student stu1,stu2;,結(jié)構(gòu)體類型變量的定義,特色: struct 結(jié)構(gòu)類型名 類型一 成員1; 類型二 成員2; 類型三 成員3; 變量表;,struct student long num; char name20; char sex; int age; stu1,stu2;,結(jié)構(gòu)體變量的類型及其靜態(tài)初始化,結(jié)構(gòu)體基本變量; struct student stu1=10001,”章敬”,男,2

4、3, stu2=10002,”趙四”,女,22; 結(jié)構(gòu)體數(shù)組變量; struct student stu2=10001,”章敬”,男,23, 10002,”趙四”,女,22; 結(jié)構(gòu)體指針變量; struct student *p=,結(jié)構(gòu)體類型變量成員的訪問1,結(jié)構(gòu)體基本變量; struct student stu1=10001,”章敬”,男,23, stu2=10002,”趙四”,女,22; 語法格式:結(jié)構(gòu)體變量名.結(jié)構(gòu)成員名 stu1.num=10001; =“章敬”; stu2.sex=女; stu2.age=22;,結(jié)構(gòu)體類型變量成員的訪問2,結(jié)構(gòu)體數(shù)組變量; stru

5、ct student stu1=10001,”章敬”,男,23, stu2=10002,”趙四”,女,22; 語法格式:結(jié)構(gòu)體數(shù)組元素名.結(jié)構(gòu)成員名 stu0.num=10001; =“章敬”; stu1.sex=女; stu1.age=22;,結(jié)構(gòu)體類型變量成員的訪問3,struct student stu1=10001,”章敬”,男,23, stu2=10002,”趙四”,女,22; 結(jié)構(gòu)體指針變量; struct student *p=,結(jié)構(gòu)體基本變量的動態(tài)初始化,struct date int year,month,day;d; scanf(“%d”,結(jié)構(gòu)體數(shù)組變量的

6、動態(tài)初始化,struct student char num6,name8; int score; stu3; for(i=0;i3;i+) printf(“”ninput score of student %dn”,i+1); scanf(“%s”,stui.num,); scanf(“%d”, ,結(jié)構(gòu)體指針變量的動態(tài)初始化,struct date int year,month,day;d,*p; P= -優(yōu)先級高于 int day; int year; ; struct student int num;char name20; char sex;int age; struc

7、t date birthday; char addr30; student1,student2;,birthday,struct date int month; int day; int year; ; struct student int num;char name20; char sex;int age; struct date *p; char addr30; student1,student2;,結(jié)構(gòu)體嵌套的引用,struct date int month,day,year; struct student int num;char name20; char sex;int age; s

8、truct date d1; char addr30; student1=1003,”張三”,m,25,1985,10,15,”廣東珠?!? stu1.num =1003; S=“張三”; stu1.d1.year=1985; stu1.d1.month=10;stu1.d1.day=15;,main() struct date int year,month,day; struct student int num;char name20;char sex;int age; struct date d1; char addr30; stu1=1003,ZHANG SAN,m,25

9、,1985,10,15,GDZHUHAI; printf(xuehao-%dn,stu1.num); printf(name-%sn,); printf(sex-%cn,stu1.sex); printf(age-%dn,stu1.age); printf(birth-%d-%d-%dn,stu1.d1.year,stu1.d1.month,stu1.d1.day); printf(addr-%sn,stu1.addr); getch(); ,結(jié)構(gòu)體的自引用(了解,不做要求),在結(jié)構(gòu)體的定義中包含指向該結(jié)構(gòu)自身的指針。 Struct node int num; struct

10、node *p; ,結(jié)構(gòu)體類型作為函數(shù)參數(shù),#include struct student long num; char name20,sex; int age; void prt(struct student stu) printf(%ldn%sn%cn%dn,stu.num,,stu.sex,stu.age); main() struct student stud; stud.num=200301001; strcpy(,wangtao); stud.sex=M; stud.age=21; prt(stud); getch(); ,練習(xí),第281頁 第4-

11、15題,18題。 第280頁 第4-5題。 第287頁 第24題,共用體,和結(jié)構(gòu)體類型一樣,只是關(guān)鍵字為union 不同的是: 各成員變量共同占用同一段內(nèi)存空間。所占空間大小為占內(nèi)存空間最大的成員變量長度。運行時,不同成員的存放是從其起始地址開始,到自己長度為止。 在任何同一時刻,union內(nèi)存空間中只存放一個當(dāng)前正在操作的成員,原來的成員會被后來的成員值覆蓋。,第279頁 中第1題。 第281頁中低2-3題 第285頁 中第1923題。,結(jié)構(gòu)體的編程,Struct aChar name100,sex; 成員為字符和字符串的輸入: gets(); scanf(“%ls,編程練

12、習(xí)1,職工數(shù)據(jù)包括:職工號、職工姓名、性別、年齡、工資、地址。為其定義一個結(jié)構(gòu)體變量,對該變量,從鍵盤輸入所需的具體數(shù)據(jù),然后通過printf函數(shù)顯示出來。,定義結(jié)構(gòu)體類型及其變量,#define A 20 #define B 80 struct worker long number; char nameA,sex; int age;long money; char addressB; ; struct worker wor1;,動態(tài)初始化,printf(Please input the number, name, sex,age,money and address: n); scanf(%l

13、d,結(jié)構(gòu)體變量的各成員數(shù)值的輸出,printf(“%ld,%s,%c,”,wor1.number,,wor1.sex); printf(“%d,%ld,%s”,wor1.age,wor1.money,wor1.address);,編程練習(xí)2,有10個學(xué)生,每個學(xué)生的數(shù)據(jù)包括學(xué)號、姓名、3門課的成績,從鍵盤輸入10個學(xué)生數(shù)據(jù),要求輸出3門課程總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號、姓名、3門課程成績、平均分?jǐn)?shù))。,結(jié)構(gòu)體類型定義,#define A 20 #define B 80 #define C 10 struct student long number; char

14、nameB; int scores1,scores2,scores3,average; ; 結(jié)構(gòu)體類型數(shù)組變量定義 struct student stuC;,結(jié)構(gòu)體數(shù)組變量動態(tài)初始化,for(i=0;iC;i+) scanf(%ld, ,輸出結(jié)構(gòu)體數(shù)組值,for(i=0;iC;i+) Printf(“%dn”,i) print(“number:%ldn“,stui.number) puts(); prinf(“ncscores:%d,%d,%d“,stui.scores1,stui.scores2,stui.scores3); ,求平均值,for(i=0;iC;i+) stu

15、i.average=(stui.scores1+stui.scores2+stui.scores3)/3;,求最大值,max=0; for(j=1;jC;j+) if(stumax.averagestuj.average) max=j; for(k=0,i=1;kC;k+,i=k+1) /*k是下標(biāo)值,從0開始.i是順序號,從1開始*/ printf(nThe number %d average is %d,i,stuk.average); printf(n The max is student %d: n,max+1); printf(name scores1 scores2 scores3

16、 averagen); printf(%s ,); printf(%d %d %d %d, stumax.scores1,stumax.scores2, stumax.scores3,stumax.average);,編程練習(xí)3,輸入20本書的名稱、單價、作者、出版社,按書名進(jìn)行排序和輸出。,定義結(jié)構(gòu)體類型,struct book char bookname40; float price; char author10; char press40; ;,定義結(jié)構(gòu)體變量,并靜態(tài)初始化,struct book bookarray4= computer fundamental,2

17、4.0,gaolin,higher education, adfr fundamental,24.0,gaolin,higher education, dfcomputer fundamental,24.0,gaolin,higher education, 23computer fundamental,24.0,gaolin,higher education;,定義結(jié)構(gòu)體變量,并動態(tài)初始化,struct book bookarray4; for(i=0;i4;i+) gets(bookarrayi.bookname); scanf(%f, ,使用冒泡法排序,struct book temp; int i,j,n; n=4; for(i=0;i0) temp=bookarrayj-1; bookarrayj-1=bookarr

溫馨提示

  • 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

提交評論