C語言程序設(shè)計-第9章--結(jié)構(gòu)體與共用體_第1頁
C語言程序設(shè)計-第9章--結(jié)構(gòu)體與共用體_第2頁
C語言程序設(shè)計-第9章--結(jié)構(gòu)體與共用體_第3頁
C語言程序設(shè)計-第9章--結(jié)構(gòu)體與共用體_第4頁
C語言程序設(shè)計-第9章--結(jié)構(gòu)體與共用體_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 程序設(shè)計技術(shù)基礎(chǔ)第九章 結(jié)構(gòu)體與共用體2022/7/2329.1.1 結(jié)構(gòu)體類型的定義9.1.2 結(jié)構(gòu)體變量的定義9.1.3 結(jié)構(gòu)體變量的初始化和引用9.1 結(jié)構(gòu)體類型9.1.1 結(jié)構(gòu)體類型的定義結(jié)構(gòu)體是一種自定義的數(shù)據(jù)類型,需要先定義才能使用。定義一個結(jié)構(gòu)體類型的一般形式為:struct 結(jié)構(gòu)體名 成員說明表列 ;2022/7/233其中,成員說明表列是組成該結(jié)構(gòu)體類型的所有數(shù)據(jù)的說明,若有n個成員,則每個成員均需作數(shù)據(jù)類型說明,可表示為: 數(shù)據(jù)類型 成員標(biāo)識符1; 數(shù)據(jù)類型 成員標(biāo)識符2; 數(shù)據(jù)類型 成員標(biāo)識符n;2022/7/234【例9-1】 有一個學(xué)生成績表,如表9-1所示,定義一

2、個結(jié)構(gòu)體類型表示此結(jié)構(gòu)。2022/7/235 numbernamesexmathcomputer10001Lifunm788810002 Lilinf8789 學(xué)生成績表第九章 結(jié)構(gòu)體與共用體2022/7/236struct student long number; char name20; char sex; float math; float computer; ;定義如下:說明:(1) 結(jié)構(gòu)體名和結(jié)構(gòu)體成員名遵循C語言標(biāo)識符的命名規(guī)則,建議用具有一定意義的單詞來命名。如【例9-1】中的student。(2) 結(jié)構(gòu)體成員的類型定義形式與簡單變量的定義形式相同。2022/7/237(3) s

3、truct是關(guān)鍵字,不能省略。(4)“struct student”作為一個整體表示類型名,和普通數(shù)據(jù)類型一樣都可用來定義變量的類型。(5) 一對外面最后的分號是結(jié)構(gòu)體定義的結(jié)束標(biāo)志,不能省略。2022/7/2389.1.2 結(jié)構(gòu)體變量的定義1. 先定義結(jié)構(gòu)體類型,再定義其變量 一般形式為: struct 結(jié)構(gòu)體名 成員說明表列 ; struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量列表;2022/7/239例如,前面已經(jīng)定義了一個結(jié)構(gòu)體類型struct student,可以用它來定義具有該類型的結(jié)構(gòu)體變量stu1,如下: struct student stu1;2022/7/23102. 定義結(jié)構(gòu)體類型的同

4、時定義結(jié)構(gòu)體變量一般形式為: struct 結(jié)構(gòu)體名 成員說明表列 變量名表列;例如,在定義struct student的同時,定義與它具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量stu2。2022/7/2311第九章 結(jié)構(gòu)體與共用體2022/7/2312struct student long number; char name20; char sex; float math; float computer; stu2;3. 不出現(xiàn)結(jié)構(gòu)體名,直接定義結(jié)構(gòu)體變量一般形式為:struct 成員說明表列 變量名表列;例如, 2022/7/2313第九章 結(jié)構(gòu)體與共用體2022/7/2314struct student

5、long number; char name20; char sex; float math; float computer; stu3;第三種方法只定義了結(jié)構(gòu)體變量stu3,沒有出現(xiàn)結(jié)構(gòu)體名,因此,該方法不能再用來定義其他同類型的結(jié)構(gòu)體變量。說明:在一個結(jié)構(gòu)體中也可以包含另一個結(jié)構(gòu)體。如:2022/7/2315第九章 結(jié)構(gòu)體與共用體2022/7/2316struct date /*定義結(jié)構(gòu)體date */ int month; int day; int year;struct student long number; char name20; struct date birthday; /*

6、birthday是struct date類型*/ char sex; float math; float computer;這里定義了一個結(jié)構(gòu)體類型struct date,代表“日期”,包含3個成員:month、day、year。在定義struct student類型時,成員birthday的類型定義為struct date類型。struct student的結(jié)構(gòu)如表9-2所示。2022/7/2317numbernamebirthdaysexmathcomputer struct student結(jié)構(gòu)9.1.3 結(jié)構(gòu)體變量的初始化和引用1. 結(jié)構(gòu)體變量的初始化對結(jié)構(gòu)體變量進(jìn)行初始化,也就是給結(jié)構(gòu)

7、體變量的各個成員賦初值。(1)對已經(jīng)定義的結(jié)構(gòu)體變量初始化例如,在【例9-1】中已經(jīng)定義了結(jié)構(gòu)體類型struct student,再定義一個結(jié)構(gòu)體變量stu1并進(jìn)行初始化。struct student stu1=10001, Lifun , m,78, 88;。2022/7/2318(2)同時完成結(jié)構(gòu)體類型定義、結(jié)構(gòu)體變量定義和初始化 struct student long number; char name20; char sex; float math; float computer; stu2=10002, Lilin ,f, 87, 89;2022/7/23192. 結(jié)構(gòu)體變量的引用(

8、1)引用結(jié)構(gòu)體變量的成員訪問結(jié)構(gòu)體變量的成員必須用成員運(yùn)算符。其一般形式為:結(jié)構(gòu)體變量名.成員名例如,、stu2. math等。2022/7/2320如果成員本身又是一個結(jié)構(gòu)體類型的變量(結(jié)構(gòu)體嵌套),則在訪問該結(jié)構(gòu)體變量的成員時,應(yīng)采取逐級訪問的方法,通過成員運(yùn)算符逐級找到最底層的成員再引用。如想要得到學(xué)生的出生日期,則可以這樣引用:stu2.birthday.month、stu2.birthday.day、stu2.birthday.year2022/7/2321(2)整體引用結(jié)構(gòu)體變量同類型的結(jié)構(gòu)體變量,可以將一個結(jié)構(gòu)體變量整體賦值給另一個結(jié)構(gòu)體變量。例如:struct

9、 student stu1=10001, Lifun , m, 78, 88;struct student stu3;stu3 =stu1;通過賦值,結(jié)構(gòu)體變量stu3中每個成員的值和結(jié)構(gòu)體變量stu1每個成員的值相同。2022/7/2322第九章 結(jié)構(gòu)體與共用體2022/7/2323#include struct salary /*定義結(jié)構(gòu)體類型,描述工資信息*/ float base; /*基礎(chǔ)工資*/ float allowances; /*津貼*/ float taxes; /*稅金*/;【例9-2】 閱讀下面程序,了解結(jié)構(gòu)體成員的引用方法。第九章 結(jié)構(gòu)體與共用體2022/7/2324

10、struct worker /*定義結(jié)構(gòu)體類型,描述職工基本信息*/ long number; /*工號*/ char name12; /*姓名*/ struct salary sal; /*工資*/ ;第九章 結(jié)構(gòu)體與共用體2022/7/2325int main() struct worker wk1=120101, Liyue, 2780.5, 1356.5, 124.11; struct worker wk2; wk2=wk1; 0=M; 1=a; wk2.number=120102; wk2.sal.allowances=2168.5; wk2.sal.

11、taxes=(wk2.sal.base+wk2.sal.allowances)*0.03; printf(工號 t姓名t基礎(chǔ)工資t津貼tt稅金n); printf(%ldt%st%.2ftt%.2ftt%.2fn, wk1.number,, wk1.sal.base, wk1.sal.allowances, wk1.sal.taxes); printf(%ldt%st%.2ftt%.2ftt%.2fn, wk2.number, , wk2.sal.base, wk2.sal.allowances, wk2.sal.taxes); return 0;2022/7/

12、23269.2 結(jié)構(gòu)體數(shù)組1 結(jié)構(gòu)體數(shù)組的定義結(jié)構(gòu)體數(shù)組的定義方法如下:struct student xs30;它定義了一個有30個元素的結(jié)構(gòu)體數(shù)組xs,數(shù)組中每個元素都是struct student類型。也可以直接定義結(jié)構(gòu)體數(shù)組,如:2022/7/2327第九章 結(jié)構(gòu)體與共用體2022/7/2328struct student long number; char name20; char sex; float math; float computer;xs30;第九章 結(jié)構(gòu)體與共用體2022/7/2329struct student long number; char name20; cha

13、r sex; float math; float computer;xs30;或者2 結(jié)構(gòu)體數(shù)組的初始化結(jié)構(gòu)體數(shù)組的初始化是對結(jié)構(gòu)體數(shù)組元素成員的初始化,形式和多維數(shù)組的初始化類似。其一般形式是在定義結(jié)構(gòu)體數(shù)組的后面加上: =初值表列; 例如,struct student xs30 =10001, Lifun ,m, 78, 88,10002, Wangli ,f, 89, 90;2022/7/23303 結(jié)構(gòu)體數(shù)組的引用結(jié)構(gòu)體數(shù)組的引用也是引用結(jié)構(gòu)體數(shù)組元素的成員,與普通數(shù)組引用類似,其一般形式為: 數(shù)組名下標(biāo).成員名 例如, xs0.number /*引用第一個學(xué)生的學(xué)號*/ xs1.na

14、me /*引用第二個學(xué)生的名字*/2022/7/2331第九章 結(jié)構(gòu)體與共用體2022/7/2332int main() int i, num = 0; float sum = 0; struct student class5 = 10001,Li ping, 18, 96,10002,Zhang ping, 19, 88, 10003,He fang, 18,79,10004,Cheng ling, 17,69, 10005,Wang ming, 17, 57; /*定義并初始化結(jié)構(gòu)體數(shù)組*/ for(i=0; i5; i+) sum+= classi.math; /*引用結(jié)構(gòu)體數(shù)組成員計算

15、總成績*/ if(classi.math 90) num+; printf(sum=%.2fnaverage=%.2fnnum=%dn, sum, sum/5, num); return 0;第九章 結(jié)構(gòu)體與共用體2022/7/2333#include struct student /*定義結(jié)構(gòu)體類型,描述學(xué)生信息*/ long number; /*學(xué)號*/ char name20; /*姓名*/ int age; /*年齡*/ float math; /*成績*/;【例9-3】已知5名學(xué)生的信息,包含學(xué)號、姓名、年齡、數(shù)學(xué)成績,要求利用結(jié)構(gòu)體數(shù)組計算5個學(xué)生的數(shù)學(xué)平均分,并統(tǒng)計數(shù)學(xué)小于90分

16、的學(xué)生人數(shù)。2022/7/23349.3.1指向結(jié)構(gòu)體變量的指針9.3.2指向結(jié)構(gòu)體數(shù)組的指針9.3 指向結(jié)構(gòu)體的指針9.3.1 指向結(jié)構(gòu)體變量的指針結(jié)構(gòu)體指針變量定義一般形式為: struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體指針變量名;例如:2022/7/2335第九章 結(jié)構(gòu)體與共用體2022/7/23信息與計算機(jī)學(xué)院計算機(jī)基礎(chǔ)教學(xué)部36struct student long number; char name20; char sex; float math; float computer;struct student stu1;struct student *p=&stu1;定義了結(jié)構(gòu)體指針變量后,如

17、何訪問該指針變量指向的結(jié)構(gòu)體成員呢?可以使用下面兩種運(yùn)算符:(1)圓點運(yùn)算符一般形式為:(*結(jié)構(gòu)體指針變量名).成員名。例如,(*p) . name,表示指針變量p指向結(jié)構(gòu)體變量stu1的name成員。(2)指向運(yùn)算符(也稱箭頭運(yùn)算符)一般形式為:結(jié)構(gòu)體指針變量名成員名。例如,p-name,表示指針變量p指向結(jié)構(gòu)體變量stu1的name成員。2022/7/23379.3.2 指向結(jié)構(gòu)體數(shù)組成員的指針指針變量可以指向普通數(shù)組,同樣,指針變量也可以指向結(jié)構(gòu)體類型的數(shù)組。例如:2022/7/2338第九章 結(jié)構(gòu)體與共用體2022/7/23信息與計算機(jī)學(xué)院計算機(jī)基礎(chǔ)教學(xué)部39struct studen

18、t long number; char name20; char sex; float math; float computer;struct student stu20;struct student *p=stu;第九章 結(jié)構(gòu)體與共用體2022/7/2340#include struct student1 long number; char name20; char sex; int age; ; /*定義結(jié)構(gòu)體變量和結(jié)構(gòu)體數(shù)組,并初始化*/struct student1 stu4=10101,Lixiao, m, 19;struct student1 stu3= 10102,“Liping

19、”, m,18,10103,Zhangping, m, 20,10104,Hefang, f, 22;【例9-4】熟悉如何用指針訪問結(jié)構(gòu)體變量和結(jié)構(gòu)體數(shù)組。第九章 結(jié)構(gòu)體與共用體2022/7/2341int main() int i; struct student1 *p,*q; /*定義結(jié)構(gòu)體指針*/ p=&stu4; /*p指向結(jié)構(gòu)體變量*/ printf( number name sex agen); printf( %5d %-10s%2c%5dn,(*p).number, p-name, (*p).sex, p-age); q=stu; /*q指向結(jié)構(gòu)體數(shù)組*/ for(i=0; i

20、name, (*q).sex, q-age); q+; return 0;2022/7/23429.4.1結(jié)構(gòu)體作函數(shù)參數(shù)9.4.2結(jié)構(gòu)體作函數(shù)返回值9.4 結(jié)構(gòu)體與函數(shù)9.4.1 結(jié)構(gòu)體作函數(shù)參數(shù)結(jié)構(gòu)體作函數(shù)參數(shù),既可以把結(jié)構(gòu)體變量作為函數(shù)參數(shù),實現(xiàn)值傳遞,也可以把指向結(jié)構(gòu)體的指針作為函數(shù)參數(shù),實現(xiàn)地址傳遞。2022/7/2343第九章 結(jié)構(gòu)體與共用體2022/7/2344#include struct date int nian; int yue; int ri;【例9-5】值傳遞,結(jié)構(gòu)體變量作函數(shù)參數(shù)。第九章 結(jié)構(gòu)體與共用體2022/7/23信息與計算機(jī)學(xué)院計算機(jī)基礎(chǔ)教學(xué)部45int r

21、iqi(struct date a) /*結(jié)構(gòu)體變量作函數(shù)參數(shù)*/ a.nian=2018; a.yue =5; a.ri=22; return 0; int main() struct date b; b.nian=2017; b.yue=4; b.ri=26; printf(調(diào)用前:%d %d %dn, b.nian, b.yue, b.ri); riqi(b); printf(調(diào)用后:%d %d %dn, b.nian, b.yue, b.ri); return 0;第九章 結(jié)構(gòu)體與共用體2022/7/2346#include struct date int nian; int yue;

22、 int ri;int riqi(struct date *p) /*結(jié)構(gòu)體指針變量作函數(shù)參數(shù)*/ (*p).nian=2018; (*p).yue =5; (*p).ri=22; return 0; 【例9-6】地址傳遞,結(jié)構(gòu)體指針變量作函數(shù)參數(shù)。第九章 結(jié)構(gòu)體與共用體2022/7/2347int main() struct date b; b.nian=2017; b.yue=4; b.ri=26; printf(調(diào)用前:%d %d %dn, b.nian, b.yue, b.ri); riqi(&b); printf(調(diào)用后:%d %d %dn, b.nian, b.yue, b.ri)

23、; return 0;9.4.2 結(jié)構(gòu)體作函數(shù)返回值函數(shù)的返回值除了可以是整型、實型、字符型和指向這些數(shù)據(jù)類型的指針以外,還可以返回結(jié)構(gòu)體類型的值。2022/7/2348【例9-7】 超市清點現(xiàn)有物品情況,有5種商品,要求從鍵盤輸入每種商品的名稱、數(shù)量、單價,編寫程序能實現(xiàn)以下功能:輸出庫存清單(包括商品名稱、數(shù)量、單價、合計),以及所有商品的總金額。程序用一個函數(shù)實現(xiàn)“輸入庫存商品信息”功能,其返回值為結(jié)構(gòu)體類型。2022/7/2349分析:(1) 商品信息可用結(jié)構(gòu)體來表示。struct StoreLib char name12; int num; /*商品數(shù)量*/ float price;

24、 /*商品單價*/ float SumMoney; /*商品小計*/;(2) 每次輸入的數(shù)據(jù)都是結(jié)構(gòu)體變量的各成員值,因此可以設(shè)計函數(shù):struct StoreLib InputInfo();用于將商品信息輸入到結(jié)構(gòu)體數(shù)組Goods中。(3) 使用函數(shù)int list(struct StoreLib Goods)輸出庫存信息。2022/7/2350第九章 結(jié)構(gòu)體與共用體2022/7/2351#include struct StoreLib /*描述商品信息*/ char name12; int num; float price; float SumMoney;struct StoreLib G

25、oods;float Total=0;int list(struct StoreLib Goods) /* 通過商品數(shù)量和單價,計算出每種商品的金額*/ Goods.SumMoney=Goods.num*Goods.price; Total=Total+Goods.SumMoney; printf(%-24s%dt%.2ft%.2fn,G, Goods.num,Goods.price,Goods.SumMoney); return 0;第九章 結(jié)構(gòu)體與共用體2022/7/23信息與計算機(jī)學(xué)院計算機(jī)基礎(chǔ)教學(xué)部52struct StoreLib InputInfo() scanf

26、(%s,G); /* 輸入商品名稱*/ scanf(%d%f,& Goods.num,& Goods.price); /* 輸入商品數(shù)量和商品單價*/ return Goods;int main() struct StoreLib iGoods5; int i; printf(請輸入5種庫存商品信息:商品名稱 數(shù)量 單價n); for(i=0;i5;i+) iGoodsi=InputInfo(); /*函數(shù)調(diào)用,輸入商品信息*/ printf(n-n); printf(庫存清單:n); printf(商品名稱tt數(shù)量t單價t小計n); for(i=0;i5;i+) list(

27、iGoodsi); /* 函數(shù)調(diào)用,輸出庫存清單 */ printf(庫存商品金額總計:%.2fn,Total); return 0;2022/7/23539.5.1 共用體類型及其變量的定義9.5.2 共用體變量的引用9.5 共用體類型9.5.1 共用體類型及其變量的定義共用體的定義方法和定義結(jié)構(gòu)體類型相似,其一般形式為: union 共用體名 成員表列 ;2022/7/2354union是關(guān)鍵字,是定義共用體類型必不可少的。一對中的內(nèi)容為共用體成員的類型說明,與結(jié)構(gòu)體類型的成員說明一致。例如:union data double a; int i; char ch; ;2022/7/2355

28、定義共用體變量的方法與結(jié)構(gòu)體類似,有下面三種方法。1先定義共用體類型,再定義變量一般形式為: union 共用體名 成員表列 ; union 共用體名 變量表列;2022/7/2356第九章 結(jié)構(gòu)體與共用體2022/7/2357union data double a; int i; char ch;union data num1,num2;例如:2定義共用體類型的同時定義共用體變量 一般形式為: union 共用體名 成員表列 變量表列; 2022/7/2358第九章 結(jié)構(gòu)體與共用體2022/7/2359union data double a; int i; char ch;num1,num2

29、;例如:3不出現(xiàn)共用體名,直接定義共用體變量一般形式為: union 成員表列 變量表列; 2022/7/2360第九章 結(jié)構(gòu)體與共用體2022/7/2361union double a; int i; char ch;num1,num2;例如:9.5.2 共用體變量的引用共用體變量必須先定義,才能引用,而且不能整體引用,只能引用共用體變量的成員。其一般形式為:共用體變量名.成員名 如,num1.i(引用共用體變量num1中的整型變量i)。【例9-8】 了解共用體變量的引用。2022/7/2362第九章 結(jié)構(gòu)體與共用體2022/7/2363#includeunion student long

30、number; char c; int age;int main() union student s1, s2; s1.number=10001; s1.c=L; s1.age=65; printf(共用體變量s1成員的值為:n); printf( s1.number=%dn s1.c=%cn s1.age=%dn, s1.number, s1.c, s1.age); s1.c=W; s2=s1; printf(共用體變量s2的值為:n); printf( s2 is %cn, s2.c); return 0;2022/7/23649.6 枚舉類型定義枚舉類型的一般形式為: enum 枚舉變量

31、名取值表列;例如, enum responseno,yes,none;上面的語句定義了名為response的枚舉類型,取值范圍為:no、yes、none??梢杂迷擃愋蛠矶x變量,如 enum response answer;2022/7/2365也可以同時定義枚舉類型和枚舉變量,如: enum responseno,yes,none answer;或者不出現(xiàn)枚舉名,直接定義枚舉變量,如: enum no,yes,none answer;2022/7/2366也可以同時定義枚舉類型和枚舉變量,如: enum responseno,yes,none answer;或者不出現(xiàn)枚舉名,直接定義枚舉變量

32、,如: enum no,yes,none answer;說明:(1) 一對中的取值稱為枚舉常量,都是整型常量,用戶在定義時不指定其值,系統(tǒng)默認(rèn)第1個枚舉常量的值是0,后面的枚舉值依次增加1,如:enum responseno,yes,none answer;,其中no=0,yes=1,none=2。(2) 枚舉值也可指定,如:enum no=1,yes=3,none=4 answer;2022/7/2367【例9-9】 從鍵盤輸入一個112的整數(shù),在屏幕上顯示與該整數(shù)對應(yīng)的月份的英文名稱。分析:在輸出較多的枚舉變量時,可以用switch結(jié)構(gòu)語句。 程序如下:2022/7/2368第九章 結(jié)構(gòu)體

33、與共用體2022/7/2369#include#include int main() enum month Jan =1, Feb =2, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec mon; int k; printf(please input a number(112):); scanf(%d, &k); mon=(enum month) k; /* 強(qiáng)制類型轉(zhuǎn)換*/ switch(mon) case Jan: printf(This month is January.n); break; case Feb: printf(This m

34、onth is February.n); break; case Mar: printf(This month is March.n); break; case Apr: printf(This month is April.n); break; case May: printf(This month is May.n); break; case Jun: printf(This month is June.n); break; case Jul: printf(This month is July.n); break; case Aug: printf(This month is Augus

35、t.n); break; case Sep: printf(This month is September.n); break; case Oct: printf(This month is October.n); break; case Nov: printf(This month is November.n); break; case Dec: printf(This month is December.n); break; default: printf(Input is error!n); return 0;2022/7/23709.7 typedef類型typedef定義的一般形式為

36、: typedef 原類型名 新類型名; 一般情況,新類型名表示為大寫字母,只是為了與系統(tǒng)提供的標(biāo)準(zhǔn)類型的標(biāo)識符相區(qū)分。例如: typedef int INTEGER; typedef float REAL;2022/7/2371typedef語句也可以給一些復(fù)雜數(shù)據(jù)類型定義新的名稱。例如:typedef struct student STUDENT; 等價于typedef struct student long num; char name10; int age; STUDENT;2022/7/23722022/7/23739.8 程序類型【例9-10】 輸入5個同學(xué)的姓名、數(shù)學(xué)成績、英語成

37、績和計算機(jī)成績,確定總分最高的同學(xué),并打印其姓名及其3門課程的成績。分析:(1) 使用長度為5的struct student類型的結(jié)構(gòu)體數(shù)組存儲所有同學(xué)的相關(guān)信息。(2) 定義struct student類型指針pmax存儲總分最高的同學(xué)的地址。(3) 定義struct student類型指針pstu引用結(jié)構(gòu)體數(shù)組中的元素及其數(shù)組元素成員的值。(4) 通過循環(huán)語句為每個數(shù)組元素成員賦值。(5) 利用pmax輸出成績最高的同學(xué)的相關(guān)信息。2022/7/2374第九章 結(jié)構(gòu)體與共用體2022/7/2375#include struct student /*定義結(jié)構(gòu)體類型*/ char name20

38、; int math; int english; int computer;int main() struct student stu5;/*定義struct student類型的結(jié)構(gòu)體數(shù)組存儲所有同學(xué)的相關(guān)信息*/ struct student *pmaxstu;/*定義struct student類型指針存儲總分最高的同學(xué)的地址*/ struct student *pstudent;/*定義struct student類型指針來引用數(shù)組*/ int fmaxscore=0,ftotal; /*存儲最高分和總分的中間變量*/ int fmath,fenglish,fcomputer; /*存

39、儲各科成績的中間變量*/ char szname20; printf(nplease input 5 students and score: n ); printf(NametMathtEnglisht Computern); pmaxstu=stu; /*給pmaxstu指針變量賦初值*/ /*將數(shù)組stu的地址賦給pstudent指針變量,通過pstudent為數(shù)組stu各元素賦值*/第九章 結(jié)構(gòu)體與共用體2022/7/2376 for(pstudent=stu;pstudentname,szname); pstudent-math=fmath; pstudent-english=feng

40、lish; pstudent-computer=fcomputer; ftotal= pstudent-math+ pstudent-english+ pstudent-computer; /*獲得當(dāng)前最高分同學(xué)所對應(yīng)數(shù)組元素的地址*/ if(fmaxscorename,pmaxstu-math, pmaxstu-english,pmaxstu-computer);return 0;【例9-11】 商品進(jìn)出庫管理,入庫商品的數(shù)據(jù)包括編號、商品名稱、數(shù)量、狀態(tài)(入庫)、貨架號,出庫商品的數(shù)據(jù)包括編號、商品名稱、數(shù)量、狀態(tài)(出庫)、部門。用同一個表格實現(xiàn)這個管理,如表所示。編寫程序輸入和輸出這些數(shù)

41、據(jù)。2022/7/2377編 號商 品 名 稱數(shù) 量狀 態(tài)貨架號或部門101book19I1030102sugar20Ofood-group103cup48I1206104doll46Otoy-group 商品進(jìn)出庫管理信息表第九章 結(jié)構(gòu)體與共用體2022/7/2378#include /*包含atol()函數(shù)*/#includestruct goods /*商品信息*/ long number; /*編號*/ char name20; /*商品名稱*/ int quantity; /*數(shù)量*/ char state; /*商品狀態(tài)*/ union long part; /*貨架號*/ char group20; /*部門*/ depa; ;int main() struct goods items4; /*保存入庫商品數(shù)據(jù)*/ int i; char tmp20; /*中間變量,用來存儲鍵盤輸入的貨架號或部門*/ printf(please input data: n number name quantity state department n);第九章 結(jié)構(gòu)體與共用體2022/7/2379for(i=0;i4;i+) /*將鍵盤輸入數(shù)據(jù)保存到結(jié)構(gòu)體數(shù)組的每個元素中*/ scanf(%ld

溫馨提示

  • 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

提交評論