![第9章用戶自己建立數(shù)據(jù)類型PPT課件_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/5b65e0b2-2753-47c1-8a93-5fcf2bf3a650/5b65e0b2-2753-47c1-8a93-5fcf2bf3a6501.gif)
![第9章用戶自己建立數(shù)據(jù)類型PPT課件_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/5b65e0b2-2753-47c1-8a93-5fcf2bf3a650/5b65e0b2-2753-47c1-8a93-5fcf2bf3a6502.gif)
![第9章用戶自己建立數(shù)據(jù)類型PPT課件_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/5b65e0b2-2753-47c1-8a93-5fcf2bf3a650/5b65e0b2-2753-47c1-8a93-5fcf2bf3a6503.gif)
![第9章用戶自己建立數(shù)據(jù)類型PPT課件_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/5b65e0b2-2753-47c1-8a93-5fcf2bf3a650/5b65e0b2-2753-47c1-8a93-5fcf2bf3a6504.gif)
![第9章用戶自己建立數(shù)據(jù)類型PPT課件_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/5b65e0b2-2753-47c1-8a93-5fcf2bf3a650/5b65e0b2-2753-47c1-8a93-5fcf2bf3a6505.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、9.1 定義和使用結(jié)構(gòu)體變量9.2 使用結(jié)構(gòu)體數(shù)組9.3 結(jié)構(gòu)體指針9.4 用指針處理鏈表9.5 共用體類型9.6 使用枚舉類型第第9章章 用戶自己建立數(shù)據(jù)類型用戶自己建立數(shù)據(jù)類型19.1 定義和使用結(jié)構(gòu)體變量定義和使用結(jié)構(gòu)體變量9.1.1 自己建立結(jié)構(gòu)體類型9.1.2 定義結(jié)構(gòu)體類型變量9.1.3 結(jié)構(gòu)體變量的初始化和引用2數(shù)字字符+數(shù)字字符串多種不同類型數(shù)據(jù)的混合結(jié)構(gòu)結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu)體數(shù)據(jù)3乘客信息系統(tǒng),混合結(jié)構(gòu)大數(shù)據(jù)管理結(jié)構(gòu)體的概念結(jié)構(gòu)體的概念l結(jié)構(gòu)體結(jié)構(gòu)體將不同類型的數(shù)據(jù)有序組合在一起是用戶的自定義數(shù)據(jù)類型需要先定義再使用4l用戶自己建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體
2、;l例如,一個學(xué)生的學(xué)號、姓名、性別、年齡、成績、家庭地址等項,是屬于同一個學(xué)生的,因此組成一個組合數(shù)據(jù),如student_1的變量,反映它們之間的內(nèi)在聯(lián)系;9.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型5登機乘客信息管理登機乘客信息管理NoNameAgeSexWeightLuggageMeal1David21M89.9495.2A2Kate14F54.2376.3B3John70M74.2469.6B4Mary46F62.7412.7A編號姓名年齡性別體重行李重量所選套餐登機乘客信息6例例1:1:定義結(jié)構(gòu)體定義結(jié)構(gòu)體struct passenger int no; char name20;
3、 int age; char sex; float weight; float luggage; char meal;編號姓名年齡性別體重行李重量所選套餐7struct Student int num; char name20; char sex; int age; float score; char addr30; ;9.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型 由程序設(shè)計者指定了一個結(jié)構(gòu)體類型struct Student 它包括num,name,sex,age,score,addr等不同類型的成員8結(jié)構(gòu)體的定義結(jié)構(gòu)體的定義自定義的結(jié)自定義的結(jié)構(gòu)體類型名構(gòu)體類型名結(jié)構(gòu)體類型中結(jié)構(gòu)體類型中
4、成員的名字成員的名字struct是結(jié)構(gòu)是結(jié)構(gòu)體類型的標識體類型的標識分號不能缺!分號不能缺! struct 結(jié)構(gòu)體名 類型標識符1 成員名1; 類型標識符n 成員名n; ;結(jié)構(gòu)體的定義格式:結(jié)構(gòu)體的定義格式:9l說明:(1) 結(jié)構(gòu)體類型并非只有一種,而是可以設(shè)計出許多種結(jié)構(gòu)體類型,例如struct Teacherstruct Workerstruct Date 等結(jié)構(gòu)體類型。 各自包含不同的成員9.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型10l說明:(2) 成員可以屬于另一個結(jié)構(gòu)體類型。 9.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型 struct Date int month; int
5、 day; int year; ;struct Stu int num;char name20; char sex;int age; struct Date birthday; char addr30; ;11l說明:(3) 成員可以屬于另一個結(jié)構(gòu)體類型。 numnamesexagebirthdayaddrmonthdayyear9.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型129.1.2 定義結(jié)構(gòu)體類型變量定義結(jié)構(gòu)體類型變量l前面只是建立了一個結(jié)構(gòu)體類型,它相當于一個模型,并沒有定義變量,其中并無具體數(shù)據(jù),系統(tǒng)對之也不分配存儲單元。l相當于設(shè)計好了圖紙,但并未建成具體的房屋。為了能在程序中
6、使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)當定義結(jié)構(gòu)體類型的變量,并在其中存放具體的數(shù)據(jù)。13結(jié)構(gòu)體變量結(jié)構(gòu)體變量l結(jié)構(gòu)體變量結(jié)構(gòu)體變量為自定義結(jié)構(gòu)體數(shù)據(jù)類型的變量定義結(jié)構(gòu)體類型變量時開辟內(nèi)存空間在內(nèi)存所占的存儲空間等于各成員存儲空間的總和結(jié)構(gòu)體變量定義方式1.先定義結(jié)構(gòu)體類型再定義變量名2.在定義結(jié)構(gòu)體類型的同時定義變量名3.不定義結(jié)構(gòu)體類型名,只定義結(jié)構(gòu)體變量名1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量l聲明結(jié)構(gòu)體類型struct Student,可以用它來定義變量 struct Student student1,student2;9.1.2 定義結(jié)構(gòu)體類型變量定義結(jié)構(gòu)體類型變量結(jié)構(gòu)體類型名結(jié)構(gòu)體類型名結(jié)構(gòu)體
7、變量名結(jié)構(gòu)體變量名15 student1 student29.1.2 定義結(jié)構(gòu)體類型變量定義結(jié)構(gòu)體類型變量1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量l聲明結(jié)構(gòu)體類型struct Student,可以用它來定義變量 struct Student student1,student2;10001Zhang XinM 1990.5Shanghai10002Wang LiF2098Beijing161. 先定義結(jié)構(gòu)體類型再定義變量名結(jié)構(gòu)體變量的定義結(jié)構(gòu)體變量的定義struct student student1, student2;結(jié)構(gòu)體類型名結(jié)構(gòu)體類型名變量變量1 1變量變量2 2struct stude
8、nt int num; char name20; char sex; int age; float score; char addr30;先定義結(jié)構(gòu)先定義結(jié)構(gòu)體類型體類型例例1struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員列表成員列表; 結(jié)構(gòu)體名結(jié)構(gòu)體名 變量名列表變量名列表struct date int day; int month; int year; ; struct student char name20; struct date birthday; struct student stu;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法一個結(jié)構(gòu)體中一個結(jié)構(gòu)體中可包含其他結(jié)可包含其他結(jié)構(gòu)體的變量!構(gòu)體的變
9、量!1. 先定義結(jié)構(gòu)體類型再定義變量名例例2 # define STUDENT struct student STUDENT int num; char name20; char sex; char addr30; ; STUDENT student1, student2;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法1. 先定義結(jié)構(gòu)體類型再定義變量名例例3利用宏簡化程序!利用宏簡化程序!凡是凡是STUDENT的地方都用的地方都用struct student機械替換機械替換 struct student int num; char name20; char sex; int age; float s
10、core; char addr30; student1, student2;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法2.在定義結(jié)構(gòu)體類型的同時定義變量名例例1 struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員列表成員列表 變量名列表變量名列表; 在定義結(jié)構(gòu)體類型在定義結(jié)構(gòu)體類型的同時定義變量的同時定義變量struct int num; char name20; char sex; int age; float score; char addr30; student1, student2;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法3.不定義結(jié)構(gòu)體類型名,只定義結(jié)構(gòu)體變量名例例1 struct 成員列表成員列表
11、 變量名列表;變量名列表; 不出現(xiàn)結(jié)構(gòu)體名不出現(xiàn)結(jié)構(gòu)體名結(jié)構(gòu)體變量定義結(jié)構(gòu)體變量定義l結(jié)構(gòu)體變量變量的定義例22void main(void) struct date int year, month, day; today; printf(“%dn”, sizeof(struct date); 12定義結(jié)構(gòu)體類型變量時開辟內(nèi)存空間結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化l直接在結(jié)構(gòu)體變量之后通過賦值語句完成初始化void main(void) struct student long int num; char name20; char sex; char addr30; student1=9010
12、31, “Li Lin”, M, “123 Beijing Road”;printf(“%sn”, );輸出:輸出: Li Lin對變量初始化,一一賦值對變量初始化,一一賦值結(jié)構(gòu)體變量的使用結(jié)構(gòu)體變量的使用l結(jié)構(gòu)體變量的使用格式 結(jié)構(gòu)體變量名結(jié)構(gòu)體變量不能作為一個整體進行輸入或輸結(jié)構(gòu)體變量不能作為一個整體進行輸入或輸出,只能分別使用變量的各個成員出,只能分別使用變量的各個成員。成員運算符成員運算符成員名. scanf(“%d”, &student1);scanf(“%d”, &student1.num); student1.num=100;錯誤錯誤必須
13、用成員名引用必須用成員名引用結(jié)構(gòu)體變量的使用結(jié)構(gòu)體變量的使用l使用結(jié)構(gòu)體變量成員格式嵌套的結(jié)構(gòu)體變量必須逐層引用。25student1.student1.birthday.birthday.dayday=25;=25;如果結(jié)構(gòu)體變量的成員本身又是一個結(jié)構(gòu)體如果結(jié)構(gòu)體變量的成員本身又是一個結(jié)構(gòu)體類型,則要用若干個成員運算符,由外向內(nèi)類型,則要用若干個成員運算符,由外向內(nèi)逐層找到最內(nèi)層的一級成員,而且只能對最逐層找到最內(nèi)層的一級成員,而且只能對最內(nèi)層的成員進行訪問。內(nèi)層的成員進行訪問。結(jié)構(gòu)體變量的使用結(jié)構(gòu)體變量的使用l使用結(jié)構(gòu)體變量成員格式結(jié)構(gòu)體變量中的成員可以同一般變量一樣進行運算。26結(jié)構(gòu)體變
14、量的成員同普通變量一樣,都可以結(jié)構(gòu)體變量的成員同普通變量一樣,都可以進行同類型普通變量所允許的各種運算。進行同類型普通變量所允許的各種運算。student1.birthday.day+; student1.score+=60; 例9.1 把一個學(xué)生的信息(包括學(xué)號、姓名、性別、住址)放在一個結(jié)構(gòu)體變量中,然后輸出這個學(xué)生的信息。l解題思路:自己建立一個結(jié)構(gòu)體類型,包括有關(guān)學(xué)生信息的各成員。用它定義結(jié)構(gòu)體變量,同時賦以初值。輸出該結(jié)構(gòu)體變量的各成員。9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用27#include int main()struct Student long int
15、 num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123 Beijing Road”; printf(NO.:%ldnname:%sn sex:%cnaddress:%sn, a.num,,a.sex,a.addr); return 0; 9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用28#include int main()struct Student long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M,
16、“123 Beijing Road”; printf(NO.:%ldnname:%sn sex:%cnaddress:%sn, a.num,,a.sex,a.addr); return 0; 9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用29#include int main()struct Student long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123 Beijing Road”; a.num=10010; 對對printf(“%sn”,a); 不對不對9.1.3
17、結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用30#include int main()struct Student long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123 Beijing Road”; b=a; 對對struct Student b;b.num+; 對對9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用31#include int main()struct Student long int num; char name20; char sex; char addr20;
18、a=10101,“Li Lin”,M, “123 Beijing Road”; scanf(%ld,&a.num); 對對scanf(“%ld,%s,%c,%sn”,&a); 錯錯9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用32#include int main() struct Date int month; int day; int year; ;struct Stu int num;char name20; char sex;int age; struct Date birthday; char addr30; a,b;a.birthday.month=1
19、2; 對對a.age=10; b.age=9; 對對sum=a.age+b.age; 對對9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用33 例9.2 輸入兩個學(xué)生的學(xué)號、姓名和成績,輸出成績較高學(xué)生的學(xué)號、姓名和成績l解題思路: 定義兩個結(jié)構(gòu)相同的結(jié)構(gòu)體變量student1和student2 分別輸入兩個學(xué)生的學(xué)號、姓名和成績; 比較兩個學(xué)生的成績,如果學(xué)生1的成績高于學(xué)生2,就輸出學(xué)生1的全部信息,如果學(xué)生2的成績高于學(xué)生1,就輸出學(xué)生2的全部信息。如果二者相等,輸出2個學(xué)生的全部信息。9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用34#include int
20、main() struct Student int num; char name20; float score; student1,student2; 9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用 scanf(%d%s%f,&student1.num, , &student1.score); scanf(“%d%s%f”,&student2.num, , &student2.score); 35 printf(The higher score is:n); if (student1.scores
21、tudent2.score) printf(%d %s %6.2fn,student1.num, , student1.score); else if (student1.scorestudent2.score) printf(%d %s %6.2fn,student2.num, , student2.score); else 9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用printf(%d %s %6.2fn,student1.num, , student1.score); printf(%d %s
22、%6.2fn,student2.num, , student2.score); return 0;36結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體數(shù)組定義結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組:結(jié)構(gòu)體數(shù)組中的每個元素都是一個結(jié)構(gòu)體類型的變量,其中包括該類型的各個成員。數(shù)組各元素在內(nèi)存中連續(xù)存放。struct student 成員列表; ; student std5;37結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組38struct student int num; char name20; char sex; int age; float score; char addr30; ;struct student stu30;st
23、ruct student int num; char name20; char sex; int age; float score; char addr30; stu30;直接定義直接定義結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體數(shù)組初始化與數(shù)值型數(shù)組的初始化方式類似,只需將數(shù)組的各個元素用花括號分隔開。39struct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體數(shù)組的使用 結(jié)構(gòu)體數(shù)組的引用與普通數(shù)組類似,同樣通過下標來訪問。數(shù)組元素
24、是結(jié)構(gòu)體類型,所以只能對成員進行訪問。40結(jié)構(gòu)體數(shù)組名下標.成員名例:結(jié)構(gòu)體變量的定義例:結(jié)構(gòu)體變量的定義struct passenger person1, person2, person3, person4;struct passenger person4;變量名變量類型用數(shù)組替代具體變量用數(shù)組替代具體變量41例例3 3:結(jié)構(gòu)體變量的初始化:結(jié)構(gòu)體變量的初始化struct passenger person4= 1, “David”, 21, M, 89.9, 495.2, A, 2, “Kate”, 14, F, 54.2, 376.3, B, 3, “John”, 70, M, 74.2,
25、 469.6, B, 4, “Mary”, 46, F, 62.7, 412.7, A; ;42例:例:43struct person char name9; int age; ;struct person bme10= “Jone”,17, “Paul”,19, “Mary”,18, “Adam”,16 ;A) printf(“%sn”, );B) printf(“%cn”, 1);C) printf(“%cn”, 1);D) printf(“%cn”, 0);輸出:輸出:Adam輸出:輸出:d輸出:輸出:a輸出:輸出:
26、M結(jié)構(gòu)體變量的使用結(jié)構(gòu)體變量的使用for(i=0, select_B=0; inum來代替(*p).name等價于p-name如果p指向一個結(jié)構(gòu)體變量stu,以下等價: stu.成員名(如stu.num) (*p).成員名(如(*p).num) p-成員名(如p-num)9.3.1指向指向結(jié)構(gòu)體結(jié)構(gòu)體變量的指針變量的指針48結(jié)構(gòu)體與指針結(jié)構(gòu)體與指針l結(jié)構(gòu)體指針變量的使用格式: 結(jié)構(gòu)體指針變量名-結(jié)構(gòu)體成員名 (*結(jié)構(gòu)體指針變量名).結(jié)構(gòu)體成員名例如:student stu; student *p=&stu; printf(“%s, %s”, p-num, (*p).num);49必須加
27、圓括號,因為必須加圓括號,因為“.”運算符優(yōu)先級更高運算符優(yōu)先級更高。 例9.5 通過指向結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體變量中成員的信息。l解題思路:在已有的基礎(chǔ)上,本題要解決兩個問題: 怎樣對結(jié)構(gòu)體變量成員賦值; 怎樣通過指向結(jié)構(gòu)體變量的指針訪問結(jié)構(gòu)體變量中成員。9.3.1指向指向結(jié)構(gòu)體結(jié)構(gòu)體變量的指針變量的指針50#include #include int main() struct Student long num; char name20; char sex; float score; ;9.3.1指向指向結(jié)構(gòu)體結(jié)構(gòu)體變量的指針變量的指針51 struct Student stu_1;
28、 struct Student * p; p=&stu_1; stu_1.num=10101; strcpy(stu_1.name,“Li Lin”); stu_1.sex=M; stu_1.score=89.5; printf(No.:%ldn”,stu_1.num); printf(name:%sn,stu_1.name); printf(sex:%cn”,stu_1.sex); printf(”score:%5.1fn”,stu_1.score); return 0;stu_110101Li LinM89.5p9.3.1指向指向結(jié)構(gòu)體結(jié)構(gòu)體變量的指針變量的指針52 struct
29、Student stu_1; struct Student * p; p=&stu_1; stu_1.num=10101; strcpy(stu_1.name,“Li Lin”); stu_1.sex=M; stu_1.score=89.5; printf(No.:%ldn”,stu_1.num); printf(name:%sn,stu_1.name); printf(sex:%cn”,stu_1.sex); printf(”score:%5.1fn”,stu_1.score); return 0;stu_110101Li LinM89.5p(*p).num(*p).name(*p)
30、.sex(*p).score9.3.1指向指向結(jié)構(gòu)體結(jié)構(gòu)體變量的指針變量的指針53第第7講講 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體547.1 結(jié)構(gòu)體7.2 共用體7.2 共用體共用體6.2.1 結(jié)構(gòu)體與共用體變量的定義6.2.2 共用體變量的使用6.2.3 共用體與指針557.2.1 共用體與共用體變量定義共用體與共用體變量定義l共用體類型定義格式union 共用體類型名共用體類型名 類型標識符類型標識符1 成員名成員名1; 類型標識符類型標識符n 成員名成員名n;56共用體類型定義的標識符共用體類型定義的標識符7.2.1 共用體與共用體變量定義共用體與共用體變量定義l共用體類型定義格式union d
31、ata char a; int b; float c; ;577.2.1 共用體與共用體變量定義共用體與共用體變量定義l所謂“共用”是指多種不同數(shù)據(jù)類型的變量從同一地址開始存放,共同占用同一段內(nèi)存單元。l但是在某一時刻有且僅有一個變量占用這一段內(nèi)存單元。l這種由不同類型的數(shù)據(jù)共用同一段內(nèi)存單元的用戶自定義類型成為共用體。587.2.1 共用體與共用體變量定義共用體與共用體變量定義l可以把一個char型變量a,一個short型變量b和一個long型變量c存放在起始地址為2000的同一段內(nèi)存單元中。592000abc7.2 共用體共用體7.2.1 結(jié)構(gòu)體與共用體變量的定義7.2.2 共用體變量的使
32、用7.2.3 共用體與指針60共用體變量的使用共用體變量的使用l共用體變量的使用不能對共用體變量初始化和賦值 61union data char a; int b; float c; u1=A, 25, 3.5; /錯誤的! u1.a /只能直接使用變量中的成員 u1.b u1.c共用體變量的使用共用體變量的使用l共用體變量的使用不能對共用體變量初始化和賦值 62 共用體變量雖然可以存放幾種不同類型的成員,但在同一時刻只能有一個成員起作用,其它成員不起作用。 共用體變量中起作用的成員是最后一次存放的成員。共用體變量的使用共用體變量的使用63union un int i; double y;st
33、ruct st char a10; union un b;printf(“%dn”, sizeof(struct st);1864void main(void) union EXAMPLE struct int x, int y; in; int a,b; e; e.a=1; e.b=2; e.in.x=e.a*e.a; e.in.y=e.b+e.b; printf(“%dt%dn”, e.in.x, e.in.y);inxyabb1 2 48輸出:輸出:4 8共用體共用體7.2.1 結(jié)構(gòu)體與共用體變量的定義7.2.2 共用體變量的使用7.2.3 共用體與指針657.2 共用體共用體l共用體與
34、指針共用體指針變量的定義與對共用體的引用形式與結(jié)構(gòu)體類似。66#include union data char a; short b; long c; ;void main() union data un,*p; p=&un; un.a=s; printf(“%cn”, p-a); un.b=6; printf(“%dn”, p-b); un.c=18; printf(“%ldn”, p-c); 例9.11 有若干個人員的數(shù)據(jù),其中有學(xué)生和教師。學(xué)生的數(shù)據(jù)中包括:姓名、號碼、性別、職業(yè)、班級。教師的數(shù)據(jù)包括:姓名、號碼、性別、職業(yè)、職務(wù)。要求用同一個表格來處理。9.5.3 共用體類型數(shù)
35、據(jù)的特點共用體類型數(shù)據(jù)的特點 67l解題思路:學(xué)生和教師的數(shù)據(jù)項目多數(shù)是相同的,但有一項不同?,F(xiàn)要求把它們放在同一表格中例:例:68l解題思路:如果job項為s,則第5項為class。即Li是501班的。如果job項是t,則第5項為position。Wang是prof(教授)。例:例:69l解題思路:對第5項可以用共用體來處理(將class和position放在同一段存儲單元中)例:例:70#include struct int num; char name10; char sex; char job; union int clas; char position10; category; pe
36、rson2; 外部的結(jié)構(gòu)體數(shù)組外部的結(jié)構(gòu)體數(shù)組共用體變量共用體變量例:例:71#include union Categ int clas; char position10; ; struct 聲明共用體類型聲明共用體類型定義共用體類型變量定義共用體類型變量例:例: int num; char name10; char sex; char job; union Categ category person2; 72int main()int i; for(i=0;i2;i+) scanf(%d %s %c %c“,&personi.num, &, &personi.sex,&personi.job); if(personi.job = s) 例:例:73 scanf(%d“,&personi.category.clas); else if(personi.job = t) scanf(“%s”,personi.category.position); else printf(“Input error!”); printf(n); for(i=0;isun) 枚舉元素的比較規(guī)則是
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鹽酸毛果蕓香堿行業(yè)調(diào)研及趨勢分析報告
- 2025服務(wù)器托管合同書模板
- 綠色供應(yīng)鏈一體化管理合同
- 2025關(guān)于醫(yī)藥采購合同
- 品牌服務(wù)協(xié)議書合同范本
- 濱海新區(qū)應(yīng)急管理局
- 房屋租賃權(quán)轉(zhuǎn)讓合同范文
- 建筑材料居間合同
- 藥品購銷標準合同
- 企業(yè)間借款擔保合同
- 《近現(xiàn)代史》義和團運動
- 輔導(dǎo)員素質(zhì)能力大賽基礎(chǔ)知識試題題庫
- 時間的重要性英文版
- 2024老舊小區(qū)停車設(shè)施改造案例
- 醫(yī)院智慧病房信息化建設(shè)
- 灰壩施工組織設(shè)計
- 韓國《寄生蟲》電影鑒賞解讀
- 三對三籃球賽記錄表
- 礦山電工知識點講解
- 物業(yè)公司服務(wù)質(zhì)量檢查流程
- 中國心胸外科的歷史和現(xiàn)狀
評論
0/150
提交評論