使用結(jié)構(gòu)體類型處理組合數(shù)據(jù)_第1頁
使用結(jié)構(gòu)體類型處理組合數(shù)據(jù)_第2頁
使用結(jié)構(gòu)體類型處理組合數(shù)據(jù)_第3頁
使用結(jié)構(gòu)體類型處理組合數(shù)據(jù)_第4頁
使用結(jié)構(gòu)體類型處理組合數(shù)據(jù)_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言提供了一些由系統(tǒng)已定義好的數(shù)據(jù)類型,如:整型、實(shí)型、字符型、指針等類型,C語言還允許用戶根據(jù)需要自己建立數(shù)據(jù)類型,用它來定義變量。,第9章 使用結(jié)構(gòu)體類型處理組合數(shù)據(jù)-用戶自定義數(shù)據(jù)類型,P248,9.1 定義和使用結(jié)構(gòu)體變量 9.2 結(jié)構(gòu)體數(shù)組 9.3 結(jié)構(gòu)體指針 9.4 用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作函數(shù)參數(shù) 9.5 用指針處理鏈表 9.6 提高部分,9.1 定義和使用結(jié)構(gòu)體變量,9.1.1 自己建立結(jié)構(gòu)體類型 9.1.2 定義結(jié)構(gòu)體類型變量 9.1.3 結(jié)構(gòu)體變量的初始化和引用,P248,9.1.1 自己建立結(jié)構(gòu)體類型,P248,用戶自己建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),

2、它稱為結(jié)構(gòu)體 例如,一個(gè)學(xué)生的學(xué)號(hào)、姓名、性別、年齡、成績、家庭地址等項(xiàng),是屬于同一個(gè)學(xué)生的,因此組成一個(gè)組合數(shù)據(jù),如student_1的變量,反映它們之間的內(nèi)在聯(lián)系,struct student int num; char name20; char sex; int age; float score; char addr30; ;,由程序設(shè)計(jì)者指定了一個(gè)結(jié)構(gòu)體類型struct Student 它包括num,name,sex,age,score,addr等不同類型的成員,聲明一個(gè)結(jié)構(gòu)體類型的一般形式為: struct 結(jié)構(gòu)體名 成員表列 ;,類型名 成員名;,說明: (1)結(jié)構(gòu)體類型并非只有一

3、種,而是可以設(shè)計(jì)出許多種結(jié)構(gòu)體類型,例如 struct teacher struct worker struct date等結(jié)構(gòu)體類型 各自包含不同的成員,說明: (2) 成員可以屬于另一個(gè)結(jié)構(gòu)體類型。 struct date int month; int day; int year; ; struct student int num;char name20; char sex; int age; struct date birthday; char addr30; ;,說明: (2) 成員可以屬于另一個(gè)結(jié)構(gòu)體類型。,9.1.2 定義結(jié)構(gòu)體類型變量,P250,前面只是建立了一個(gè)結(jié)構(gòu)體類型,它相

4、當(dāng)于一個(gè)模型,并沒有定義變量,其中并無具體數(shù)據(jù),系統(tǒng)對(duì)之也不分配存儲(chǔ)單元。 相當(dāng)于設(shè)計(jì)好了圖紙,但并未建成具體的房屋。為了能在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)當(dāng)定義結(jié)構(gòu)體類型的變量,并在其中存放具體的數(shù)據(jù)。,1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量 聲明結(jié)構(gòu)體類型struct student,可以用它來定義變量 struct student student1,student2;,結(jié)構(gòu)體類型名,結(jié)構(gòu)體變量名,1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量 聲明結(jié)構(gòu)體類型struct student,可以用它來定義變量 struct student student1,student2;,student1,

5、student2,2.在聲明類型的同時(shí)定義變量 struct student int num; char name20; char sex; int age; float score; char addr30; student1,student2;,3. 不指定類型名而直接定義結(jié)構(gòu)體類型變量 其一般形式為: struct 成員表列 變量名表列; 指定了一個(gè)無名的結(jié)構(gòu)體類型 。,說明: (1) 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概念,不要混同。只能對(duì)變量賦值、存取或運(yùn)算,而不能對(duì)一個(gè)類型賦值、存取或運(yùn)算。在編譯時(shí),對(duì)類型是不分配空間的,只對(duì)變量分配空間。,(2) 結(jié)構(gòu)體類型中的成員名可以與程序中的變

6、量名相同,但二者不代表同一對(duì)象。 (3) 對(duì)結(jié)構(gòu)體變量中的成員(即“域”),可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。,9.1.3 結(jié)構(gòu)體變量的初始化和引用,例9.1 把一個(gè)學(xué)生的信息放在一個(gè)結(jié)構(gòu)體變量中,然后輸出這個(gè)學(xué)生的信息。 解題思路: 先在程序中自己建立一個(gè)結(jié)構(gòu)體類型,包括有關(guān)學(xué)生信息的各成員 然后用它來定義結(jié)構(gòu)體變量,同時(shí)賦以初值 最后輸出該結(jié)構(gòu)體變量的各成員,P91,#include void main() struct student int num; char name20; char sex; char addr20; student1=10101,“Li Lin”,M,

7、“123 Beijing Road”; printf(NO.:%dnname:%sn sex:%cnaddress:%sn, student1.num, , student1.sex, student1.addr); ,#include void main() struct student int num; char name20; char sex; char addr20; student1=10101,“Li Lin”,M, “123 Beijing Road”; printf(NO.:%dnname:%sn sex:%cnaddress:%sn, studen

8、t1.num, , student1.sex, student1.addr); ,#include void main() struct student int num; char name20; char sex; char addr20; student1=10101,“Li Lin”,M, “123 Beijing Road”; ,student1.num=10010; 對(duì),printf(“%sn”,student1); 不對(duì),#include void main() struct student int num; char name20; char sex;

9、char addr20; student1=10101,“Li Lin”,M, “123 Beijing Road”; ,struct date birthday;,student1.num=10010; 對(duì),student1.birthday.month=11; 對(duì),#include void main() struct student int num; char name20; char sex; char addr20; student1=10101,“Li Lin”,M, “123 Beijing Road”; ,student2.num=student1.num; 對(duì),sum=stu

10、dent1.num+student2.num; 對(duì),student1.num+; 對(duì),student2;,#include void main() struct student int num; char name20; char sex; char addr20; student1=10101,“Li Lin”,M, “123 Beijing Road”; ,student2=student1; 對(duì),student2;,scanf(“%d”, 對(duì),scanf(“%d”, 錯(cuò),例9.2 輸入兩個(gè)學(xué)生的學(xué)號(hào)、姓名和成績,輸出成績較高學(xué)生的學(xué)號(hào)、姓名和成績 解題思路: (1)定義兩個(gè)結(jié)構(gòu)相同的結(jié)構(gòu)

11、體變量student1和student2; (2)分別輸入兩個(gè)學(xué)生的學(xué)號(hào)、姓名和成績; (3)比較兩個(gè)學(xué)生的成績,如果學(xué)生1的成績高于學(xué)生2,就輸出學(xué)生1的全部信息,如果學(xué)生2的成績高于學(xué)生1,就輸出學(xué)生2的全部信息。如果二者相等,輸出2個(gè)學(xué)生的全部信息,#include void main() struct student int num; char name20; float score; student1,student2; scanf(%d%s%f,不能加 if (student1.scorestudent2.score) printf(%d %s %6.2fn,student1.nu

12、m, ,student1.score); else if (student1.scorestudent2.score) printf(%d %s %6.2fn,student2.num, ,student2.score); else printf(%d %s %6.2fn,student1.num, , student1.score); printf(%d %s %6.2fn,student2.num, ,student2.score); ,9.2 結(jié)構(gòu)體數(shù)組,P255,例9.3 有3個(gè)候選

13、人,每個(gè)選民只能投票選一人,要求編一個(gè)統(tǒng)計(jì)選票的程序,先后輸入被選人的名字,最后輸出各人得票結(jié)果。,解題思路: 設(shè)一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含3個(gè)元素 每個(gè)元素中的信息應(yīng)包括候選人的姓名(字符型)和得票數(shù)(整型) 輸入被選人的姓名,然后與數(shù)組元素中的“姓名”成員比較,如果相同,就給這個(gè)元素中的“得票數(shù)”成員的值加1 輸出所有元素的信息,#include #include struct person char name20; int count; leader3=“Li”,0,“Zhang”,0,“Sun”,0;,全局的結(jié)構(gòu)體數(shù)組,name,count,leader0,Li,0,Zhang,0,S

14、un,0,void main() int i,j; char leader_name20; for (i=1;i=10;i+) scanf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name, )=0) leaderj.count+; for(i=0;i3;i+) printf(%5s:%dn“,, leaderi.count); ,leaderj.count=leaderj.count+1;,void main() int i,j; char leader_name20; for (i

15、=1;i=10;i+) scanf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name, )=0) leaderj.count+; for(i=0;i3;i+) printf(%5s:%dn“,, leaderi.count); ,說明: (1)定義結(jié)構(gòu)體數(shù)組一般形式是 struct 結(jié)構(gòu)體名 成員表列 數(shù)組名數(shù)組長度; 先聲明一個(gè)結(jié)構(gòu)體類型,然后再用此類型定義結(jié)構(gòu)體數(shù)組: 結(jié)構(gòu)體類型 數(shù)組名數(shù)組長度; 如: struct person leader3;,說明: (2)對(duì)結(jié)構(gòu)體數(shù)組初始化

16、的形式是在定義數(shù)組的后面加上: =初值表列; 如: struct person leader3= Li,0,Zhang,0,“Sun,0;,例9.4 有n個(gè)學(xué)生的信息(包括學(xué)號(hào)、姓名、成績),要求按照成績的高低順序輸出各學(xué)生的信息。 解題思路:用結(jié)構(gòu)體數(shù)組存放n個(gè)學(xué)生信息,采用選擇法對(duì)各元素進(jìn)行排序(進(jìn)行比較的是各元素中的成績)。,#include #define N 5 struct student int num; char name20; float score; ; void main() struct student stuN =10101,Zhang,78 , 10103,Wang

17、,98.5, 10106,Li“,86, 10108,“Ling”, 73.5, 10110,“Sun”, 100 ; struct student temp; int i,j,k;,printf(The order is:n); for(i=0;istuk.score) k=j; temp=stuk; stuk=stui; stui=temp; for(i=0;iN;i+) printf(%6d %8s %6.2fn, stui.num,,stui.score); printf(n); ,寫法上與普通變量一致,9.3 結(jié)構(gòu)體指針,P258,指向結(jié)構(gòu)體對(duì)象的指針變量既可以指向

18、結(jié)構(gòu)體變量,也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。但是,指針變量的基類型必須與結(jié)構(gòu)體變量的類型相同。例如: struct student *pt;,例9.5 通過指向結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體變量中成員的信息。 解題思路:在已有的基礎(chǔ)上,本題要解決兩個(gè)問題: 怎樣對(duì)結(jié)構(gòu)體變量成員賦值; 怎樣通過指向結(jié)構(gòu)體變量的指針訪問結(jié)構(gòu)體變量中成員。,#include #include void main() struct student long num; char name20; char sex; float score; ; ,struct student stu_1; struct student

19、 * p; p= ,stu_1,10101 Li Lin M 89.5,p,struct student stu_1; struct student * p; p= ,stu_1,10101 Li Lin M 89.5,p,(*p).score,說明: 為了使用方便和直觀,允許把(*p).num用p-num來代替 (*p).name等價(jià)于p-name 如果p指向一個(gè)結(jié)構(gòu)體變量stu,以下等價(jià): stu.成員名(如stu.num) (*p).成員名(如(*p).num) p-成員名(如p-num),例9.6 有3個(gè)學(xué)生的信息,放在結(jié)構(gòu)體數(shù)組中,要求輸出全部學(xué)生的信息。,解題思路:用指向結(jié)構(gòu)體變量

20、的指針處理 (1)聲明struct student,并定義結(jié)構(gòu)體數(shù)組、初始化 (2)定義指向struct student類型指針p (3)使p指向數(shù)組首元素,輸出元素中各信息 (4)使p指向下一個(gè)元素,輸出元素中各信息 (5)再使p指向結(jié)構(gòu)體數(shù)組的下一個(gè)元素,輸出它指向的元素中的有關(guān)信息,#include struct student int num; char name20; char sex; int age; ; struct student stu3= 10101,Li Lin,M,18, 10102,Zhang Fun,M,19, 10104,Wang Min,F,20 ;,void

21、 main() struct student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); ,stu0,stu1,stu2,void main() struct student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); ,p,stu0,stu1,stu2,void main() struct student *p; printf( No. Name sex agen); for(p=stu;pnum,

22、 p-name, p-sex, p-age); ,p,stu0,stu1,stu2,void main() struct student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); ,p,stu0,stu1,stu2,9.4 用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作函數(shù)參數(shù),P262,將一個(gè)結(jié)構(gòu)體變量的值傳遞給另一個(gè)函數(shù),有3個(gè)方法。,(1) 用結(jié)構(gòu)體變量的成員作參數(shù)。 例如,用stu1.num或作函數(shù)實(shí)參,將實(shí)參值傳給形參。 用法和用普通變量作實(shí)參是一樣的,屬于“值傳遞”方式。 應(yīng)當(dāng)注

23、意實(shí)參與形參的類型保持一致。,(2) 用結(jié)構(gòu)體變量作實(shí)參。 用結(jié)構(gòu)體變量作實(shí)參時(shí),將結(jié)構(gòu)體變量所占的內(nèi)存單元的內(nèi)容全部按順序傳遞給形參,形參也必須是同類型的結(jié)構(gòu)體變量 在函數(shù)調(diào)用期間形參也要占用內(nèi)存單元。這種傳遞方式在空間和時(shí)間上開銷較大 在被調(diào)用函數(shù)期間改變形參(也是結(jié)構(gòu)體變量)的值,不能返回主調(diào)函數(shù) 一般較少用這種方法,(3)用指向結(jié)構(gòu)體變量(或數(shù)組元素)的指針作實(shí)參,將結(jié)構(gòu)體變量(或數(shù)組元素)的地址傳給形參。,例9.7 有N個(gè)結(jié)構(gòu)體變量stu,內(nèi)含學(xué)生學(xué)號(hào)、姓名和3門課程的成績。要求輸出平均成績最高的學(xué)生的信息(包括學(xué)號(hào)、姓名、3門課程成績和平均成績)。,解題思路:按照功能函數(shù)化的思想,

24、分別用3個(gè)函數(shù)來實(shí)現(xiàn)不同的功能: 用input函數(shù)輸入數(shù)據(jù)和求各學(xué)生平均成績 用max函數(shù)找平均成績最高的學(xué)生 用print函數(shù)輸出成績最高學(xué)生的信息 在主函數(shù)中先后調(diào)用這3個(gè)函數(shù),用指向結(jié)構(gòu)體變量的指針作實(shí)參。最后得到結(jié)果。 本程序假設(shè)N=3,#include #define N 3 struct student int num; char name20; float score3; float aver; ;,4個(gè)成員,輸入前3個(gè)成員值,計(jì)算最后成員值,void main() void input(struct student stu); struct student max(struct

25、 student stu); void print(struct student stu); struct student stuN,*p=stu; input(p); print(max(p); ,void input(struct student stu) int i; printf(請(qǐng)輸入各學(xué)生的信息: 學(xué)號(hào)、姓名、三門課成績:n); for(i=0;iN;i+) scanf(%d %s %f %f %f, ,輸入第1個(gè)成員值,輸入第2個(gè)成員值,stu0,stu1,stu2,stu,10101,Li,78 89 98,88.33,i=0,void input(struct student

26、 stu) int i; printf(請(qǐng)輸入各學(xué)生的信息: 學(xué)號(hào)、姓名、三門課成績:n); for(i=0;iN;i+) scanf(%d %s %f %f %f, ,輸入第1個(gè)成員值,輸入第2個(gè)成員值,stu0,stu1,stu2,stu,10101,Li,78 89 98,88.33,10103,Wang,98.5 87 69,84.83,i=1,void input(struct student stu) int i; printf(請(qǐng)輸入各學(xué)生的信息: 學(xué)號(hào)、姓名、三門課成績:n); for(i=0;iN;i+) scanf(%d %s %f %f %f, ,輸入第1個(gè)成員值,輸入第

27、2個(gè)成員值,stu0,stu1,stu2,stu,10101,Li,78 89 98,88.33,10103,Wang,98.5 87 69,84.83,10106,Sun,88 76.5 89,84.5,i=2,struct student max(struct student stu) int i,m=0; for(i=0;istum.aver) m=i; return stum; ,stu0,stu1,stu2,stu,10101,Li,78 89 98,88.33,10103,Wang,98.5 87 69,84.83,10106,Sun,88 76.5 89,84.5,最大,返回,v

28、oid print(struct student stud) printf(n成績最高的學(xué)生是:n); printf(學(xué)號(hào):%dn姓名:%sn 三門課成績:%5.1f,%5.1f,%5.1fn 平均成績:%6.2fn”, stud.num, ,stud.score0, stud.score1,stud.score2,stud.aver); ,stud,10101,Li,78 89 98,88.33,10103,Wang,98.5 87 69,84.83,10106,Sun,88 76.5 89,84.5,num,name,score,aver,stu0,stu1,stu2,以

29、上3個(gè)函數(shù)的調(diào)用,情況各不相同: 調(diào)用input函數(shù)時(shí),實(shí)參是指針變量,形參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函數(shù)無返回值。 調(diào)用max函數(shù)時(shí),實(shí)參是指針變量,形參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函數(shù)的返回值是結(jié)構(gòu)體類型數(shù)據(jù)。 調(diào)用print函數(shù)時(shí),實(shí)參是結(jié)構(gòu)體變量,形參是結(jié)構(gòu)體變量,傳遞的是結(jié)構(gòu)體變量中各成員的值,函數(shù)無返回值。,9.5 用指針處理鏈表,9.5.1 什么是線性鏈表 9.5.2 建立簡單的靜態(tài)鏈表 9.5.3 建立動(dòng)態(tài)鏈表,P265,9.5.1 什么是線性鏈表,P265,鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu) 它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu),head,1249,1249

30、,A,1356,1356,1475,B,1475,C,1021,1021,D,0,頭指針,各結(jié)點(diǎn)地址不連續(xù),各結(jié)點(diǎn)含有兩個(gè)部分,表尾,鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu) 它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu) 鏈表必須利用指針變量才能實(shí)現(xiàn),struct student int num; float score; struct student *next; a,b,c;,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),a.next=,b.next=,num,score,next,9.5.2 建立簡單的靜態(tài)鏈表,P266,例9.8 建立一個(gè)如圖所示的簡單鏈表,它由3個(gè)學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成,要求輸出各結(jié)點(diǎn)中的數(shù)據(jù)。,a結(jié)點(diǎn),b結(jié)點(diǎn),c

31、結(jié)點(diǎn),num,score,next,解題思路:,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),num,score,next,head,head=,a.next=,b.next=,NULL,c.next=NULL;,#include struct student int num; float score; struct student *next; ;,void main() struct student a,b,c,*head,*p; a. num=10101; a.score=89.5; b. num=10103; b.score=90; c. num=10107; c.score=85; head= ,p=he

32、ad; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); ,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),num,score,next,head,NULL,p,相當(dāng)于p=,p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); ,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),num,score,next,head,NULL,p,相當(dāng)于p=,p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NUL

33、L); ,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),num,score,next,head,NULL,p,相當(dāng)于p=,p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); ,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),num,score,next,head,NULL,p,相當(dāng)于p=,p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); ,a結(jié)點(diǎn),b結(jié)點(diǎn),c結(jié)點(diǎn),num,score,next,head,NULL,p,相當(dāng)于p=NULL;,靜態(tài)鏈表,9.5.

34、3 建立動(dòng)態(tài)鏈表,P267,所謂建立動(dòng)態(tài)鏈表是指在程序執(zhí)行過程中從無到有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地開辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)據(jù),并建立起前后相鏈的關(guān)系。,例9.9 建立一個(gè)有2名學(xué)生學(xué)號(hào)和成績數(shù)據(jù)的單向動(dòng)態(tài)鏈表。 解題思路: 定義結(jié)構(gòu)體變量,其成員包括學(xué)號(hào)、成績和指針變量。 動(dòng)態(tài)地開辟一個(gè)新單元(動(dòng)態(tài)開辟內(nèi)存單元用malloc函數(shù))。使指針變量p和head指向此結(jié)點(diǎn)。 向此結(jié)點(diǎn)輸入數(shù)據(jù)。,例9.9 建立一個(gè)有2名學(xué)生學(xué)號(hào)和成績數(shù)據(jù)的單向動(dòng)態(tài)鏈表。 解題思路: 再開辟第2個(gè)新結(jié)點(diǎn),并使指針變量p指向此結(jié)點(diǎn)。 使第2個(gè)結(jié)點(diǎn)中的指針變量的值為NULL,即不指向任何對(duì)象,鏈表到此為止。 輸出兩個(gè)結(jié)點(diǎn)中

35、的數(shù)據(jù)。,#include #include #define LEN sizeof(struct student) struct student int num; float score; struct student *next; ;,struct student類型數(shù)據(jù)的長度,void main() struct student *head,*p; head=p=(struct student*) malloc(LEN); scanf(“%d,%f”,head,p,10101 89.5,void main() struct student *head,*p; head=p=(struct

36、student*) malloc(LEN); scanf(“%d,%f”,head,10101 89.5,p,10102 90,p-next=NULL;,NULL,void main() struct student *head,*p; head=p=(struct student*) malloc(LEN); scanf(“%d,%f”,head,10101 89.5,p,10102 90,p-next=NULL;,NULL,void main() struct student *head,*p; head=p=(struct student*) malloc(LEN); scanf(“%d

37、,%f”,10101 89.5,p,10102 90,NULL,結(jié)點(diǎn)1:10101, 89.50,void main() struct student *head,*p; head=p=(struct student*) malloc(LEN); scanf(“%d,%f”, ,10101 89.5,p,10102 90,NULL,結(jié)點(diǎn)1:10101, 89.50,結(jié)點(diǎn)2:10102, 90.00,9.6 提高部分,9.6.1 共用體類型 9.6.2 枚舉類型,P269,9.6.1 共用體類型,P269,有時(shí)想用同一段內(nèi)存單元存放不同類型的變量。 使幾個(gè)不同的變量共享同一段內(nèi)存的結(jié)構(gòu),稱為 “共用體”類型的結(jié)構(gòu)。,1000,1001,1002,1003,字符ch,整 型 變 量 i,實(shí) 型 變 量 f,定義共用體類型變量的一般形式為: union共用體名 成員表列 變量表列; 例如: union data int i; char ch; float f; a,b,c;,un

溫馨提示

  • 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. 人人文庫網(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)論