C++程序設(shè)計第8章 枚舉型和結(jié)構(gòu)體_第1頁
C++程序設(shè)計第8章 枚舉型和結(jié)構(gòu)體_第2頁
C++程序設(shè)計第8章 枚舉型和結(jié)構(gòu)體_第3頁
C++程序設(shè)計第8章 枚舉型和結(jié)構(gòu)體_第4頁
C++程序設(shè)計第8章 枚舉型和結(jié)構(gòu)體_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、整理課件第8章 枚舉型和結(jié)構(gòu)體 目的與要求 枚舉類型的定義及應(yīng)用8.2 結(jié)構(gòu)體的定義及應(yīng)用8.3 鏈表本章小結(jié)整理課件目的與要求 通過本章學(xué)習(xí),應(yīng)了解枚舉型與結(jié)構(gòu)體兩種導(dǎo)出數(shù)據(jù)類型的概念,掌握枚舉型與結(jié)構(gòu)體兩種數(shù)據(jù)類型的定義格式與方法,會用枚舉型與結(jié)構(gòu)體數(shù)據(jù)類型定義枚舉型變量與結(jié)構(gòu)體變量。會用結(jié)構(gòu)體與枚舉型解決實際問題。了解鏈表的概念,初步學(xué)會鏈表的簡單操作,如:鏈表的建立、增加、刪除、查詢等方法。 整理課件 枚舉類型的定義及應(yīng)用 枚舉類型:是某類數(shù)據(jù)可能取值的集合; 枚舉變量:用枚舉類型定義的變量。 8.1.1 枚舉類型的定義 enum ; 例如: enum weekdays Sun,Mon

2、,Tue,Wed,Thu,Fri,Sat ; 整理課件 枚舉類型元素序號:是元素對應(yīng)的整型常量值。 (1)默認(rèn)序號值 若枚舉類型定義中沒有指定元素的序號值,則默認(rèn)序號值從0開始依次遞增。(2)指定序號值 全指定,所謂全指定是給枚舉類型的每一個元素指定一個序號值。 例如: enum boolean TRUE=1 ,FALSE=0 ; 部分指定,所謂部分指定是給枚舉類型的部分元素指定序號值。 例如: enum colors red=5,blue=1,green,black,white,yellow;。 整理課件8.1.2 枚舉類型變量的定義格式: ,;例如: enum weekdays Sun,M

3、on,Tue,Wed,Thu,Fri,Sat ; weekdays day1,day2;格式:enum ,;例如: enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat day1,day2;整理課件枚舉類型變量的定義3.直接定義枚舉變量格式:enum ,;例如: enum Sun,Mon,Tue,Wed,Thu,Fri,Sat day1=Sun,day2=Mon; 定義枚舉變量時,可對變量進(jìn)行初始化賦值。整理課件8.1.3 枚舉類型變量的引用 1.1.賦值運算 枚舉類型的元素可直接賦給枚舉變量,且同類型枚舉變量之間可以相互賦值。 即:(1)枚舉變量=枚舉元素; 如

4、,day1=Sun;(2)枚舉變量1=枚舉變量2; 如,day2=day1;(1)不能用鍵盤通過“cin”向枚舉變量輸入元素值。(2)可用“coutday1) day2=day1; /day2day1的比較就是序號值關(guān)系式:10的比較 if (day1Sat) da1=Sat; /day1Sat的比較就是序號值關(guān)系式:06的比較整理課件枚舉型舉例 【例8.1】先定義描述6種顏色的枚舉類型colors,然后再用該枚舉類型定義枚舉數(shù)組,任意輸入6個顏色號,轉(zhuǎn)換成對應(yīng)的顏色枚舉量后輸入到枚舉數(shù)組中,最后輸出枚舉數(shù)組中對應(yīng)的顏色。 例程 【例8.2】定義一個描述三種顏色的枚舉類型red、blue、gr

5、een,輸出這三種顏色的全部排列結(jié)果。例程整理課件8.2 結(jié)構(gòu)體的定義及應(yīng)用 nonamemathphiengave1001Zhou908580851002Li758085801003Wang95859090 學(xué)生成績情況表 學(xué)生成績信息必須用不同數(shù)據(jù)類型的數(shù)據(jù)項來描述的情況,如: 學(xué)號:no -int 姓名:name -char8 成績:eng、phi、math、ave -float 8.2.1 結(jié)構(gòu)體的概念 整理課件結(jié)構(gòu)體的概念 結(jié)構(gòu)體:將不同類型數(shù)據(jù)作為一個整體來處理的數(shù)據(jù)結(jié)構(gòu)稱為結(jié)構(gòu)體。 結(jié)構(gòu)體類型:是導(dǎo)出型數(shù)據(jù)類型,必須先定義結(jié)構(gòu)體類型,后定義結(jié)構(gòu)體變量。 整理課件8.2.2 結(jié)構(gòu)體

6、類型的定義結(jié)構(gòu)體類型的定義格式為: struct ; ; ; ;說明:(1)關(guān)鍵詞struct說明定義的是結(jié)構(gòu)體類型;(2)結(jié)構(gòu)體類型名必須符合標(biāo)識符命名規(guī)則;(3)結(jié)構(gòu)體由若干個數(shù)據(jù)成員組成,每個數(shù)據(jù)成員可以有不同的數(shù)據(jù)類型。數(shù)據(jù)類型可以是基本類型,也可以是導(dǎo)出類型。整理課件結(jié)構(gòu)體類型的定義舉例【例8.3】定義一個學(xué)生成績的結(jié)構(gòu)體數(shù)據(jù)類型如下: struct student int no ; /學(xué)號 char name8; /姓名 float eng,phy,math,ave ; /英語、物理、數(shù)學(xué)與平均成績 ;整理課件8.2.3 結(jié)構(gòu)體變量的定義(1)先定義類型后定義變量格式: 存儲類型

7、,;例如: student stu1,stu23;(2)定義結(jié)構(gòu)體的同時定義結(jié)構(gòu)體變量 格式: struct ,;整理課件結(jié)構(gòu)體變量的定義例如:struct student int no ; char name8; float eng,phy,math,ave ; stu1,stu23; (3)直接定義結(jié)構(gòu)體變量 struct ,;例如: struct int no ; char name8; float eng,phy,math,ave ; stu1,stu23; 整理課件 定義結(jié)構(gòu)體變量時可進(jìn)行初始化。 結(jié)構(gòu)體變量的初始化格式: =初始化值; 例如: student stu1=1001,

8、Zhou,90,85,80; student stu23= 1001, Zhou,90,85,80, 1001, Li,75,80,85, 1001, Wang,95,85,90; 整理課件 結(jié)構(gòu)體變量的引用 . 其中“.”稱為成員運算符。 例如:: stu1.no 表示引用學(xué)生結(jié)構(gòu)體變量stu1中的數(shù)據(jù)成員no。 stu20.no 表示引用學(xué)生結(jié)構(gòu)體數(shù)組元素stu20的數(shù)據(jù)成員no。整理課件 C+規(guī)定,用cin、cout只能對數(shù)據(jù)成員進(jìn)行輸入輸出,不能對結(jié)構(gòu)體變量輸入輸出。輸入輸出格式如下。 (1)輸入: cin .; 例如: stu1.engstu1.

9、phistu1.math;(2)輸出: cout.;例如:tstu1.engtstu1.phitstu1;與coutstu1 是錯誤的。整理課件3.結(jié)構(gòu)變量的賦值運算 允許兩個同類型結(jié)構(gòu)變量之間的賦值運算: 結(jié)構(gòu)體變量1=結(jié)構(gòu)體變量2;例如: student stu1=1001, Zhou,90,85,80,stu2; stu2=stu1;此時,stu2將具有與stu1相同的數(shù)據(jù)內(nèi)容。 【例8.4】定義全班學(xué)生學(xué)習(xí)成績的結(jié)構(gòu)體數(shù)組,學(xué)生結(jié)構(gòu)體類型的數(shù)據(jù)成員為:姓名、學(xué)號、英語、物理、數(shù)學(xué)和這三門功課的平均成績。先輸入全班成績,再計算每個學(xué)生的平均成績,

10、最后輸出全班成績表。 例程整理課件8.2.5 結(jié)構(gòu)體變量與數(shù)組作為函數(shù)參數(shù)(習(xí)題課)(1)結(jié)構(gòu)體變量作為函數(shù)參數(shù) ( ,) 函數(shù)體(2)結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù) ( ,) 函數(shù)體整理課件結(jié)構(gòu)體變量與數(shù)組作為函數(shù)參數(shù)(1)結(jié)構(gòu)體變量作為實參: 函數(shù)名(結(jié)構(gòu)體變量名, )(2)結(jié)構(gòu)體數(shù)組作為實參: 函數(shù)名(結(jié)構(gòu)體數(shù)組名, ) 用結(jié)構(gòu)體變量作為函數(shù)參數(shù)時,實參值傳送給形參屬于值傳送,因此,函數(shù)調(diào)用后實參值仍保持不變。 用結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)時,實參值傳送給形參屬于傳地址,因此,函數(shù)調(diào)用后實參數(shù)組值隨形參數(shù)組而變動。整理課件結(jié)構(gòu)體變量與數(shù)組作為函數(shù)參數(shù)舉例 【例】定義全班學(xué)生學(xué)習(xí)成績的結(jié)構(gòu)體數(shù)組,學(xué)生

11、結(jié)構(gòu)體類型的數(shù)據(jù)成員為:姓名、學(xué)號、英語、物理、數(shù)學(xué)和這三門功課的平均成績(通過計算得到)。設(shè)計四個函數(shù):全班成績輸入,求出每個學(xué)生的平均成績,按平均成績的升序排序,輸出全班成績表。在主函數(shù)調(diào)用這四函數(shù)完成學(xué)生成績的輸入、計算、排序與輸出工作。 【例】建立學(xué)生檔案的結(jié)構(gòu)體數(shù)組,描述一個學(xué)生的信息:姓名、性別、年齡、出生日期。輸出已建立的學(xué)生檔案。 【例】定義一個復(fù)數(shù)結(jié)構(gòu)體,以復(fù)數(shù)的實部r、虛部i作為結(jié)構(gòu)體成員,編寫能實現(xiàn)兩復(fù)數(shù)加法的函數(shù),用結(jié)構(gòu)體變量作為其形參。在主函數(shù)內(nèi)定義兩個復(fù)數(shù),并賦初值。調(diào)用復(fù)數(shù)加法函數(shù),完成兩復(fù)數(shù)相加的操作。例程例程例程整理課件8.3 鏈表 鏈表是由若干同類型結(jié)點用指

12、針鏈接而成的數(shù)據(jù)結(jié)構(gòu)。鏈表由表頭、結(jié)點與鏈尾三部組成。整理課件鏈表的概念(1)表頭head是指向鏈表的頭指針;(2)結(jié)點是用含有指針的結(jié)構(gòu)體類型node定義的結(jié)構(gòu)體變量。 如描述學(xué)生信息結(jié)點類型node可定義為: struct node int no; char name8; float eng,phy,math,ave; node *next; ; (3)鏈尾是鏈表中指針值為0的結(jié)點,用于表示鏈表的結(jié)束。類似于字符串中以0作為結(jié)束標(biāo)志。整理課件2.鏈表的基本操作 鏈表的主要操作有鏈表的建立、查詢、輸出、插入、刪除等。 為方便后面的討論,將結(jié)點內(nèi)數(shù)據(jù)成員簡化為學(xué)號、成績與指針三項,簡化后的鏈表

13、結(jié)點類型node定義為: struct node int no; int score; node *next; ;整理課件8.3.2 鏈表的基本操作 鏈表的主要操作有建立鏈表、輸出鏈表、刪除鏈表、查詢指定結(jié)點、刪除指定結(jié)點、插入結(jié)點、建立有序鏈表等。 鏈表的基本操作可以用自定義函數(shù)來實現(xiàn): (1)建立鏈表函數(shù) node * Create(void) (2)輸出鏈表函數(shù) void Print(node *head) (3)刪除鏈表 函數(shù) void Delchain(node *head) (4)刪除指定結(jié)點函數(shù) node * Delete(node *head, int no) (5)插入結(jié)點函

14、數(shù) node * Insert(node *head,node *pn) (6)建立有序鏈表函數(shù) node * Create_order() 在主函數(shù)中調(diào) 用上述函數(shù),可完成建立鏈表、輸出鏈表、刪除鏈表、刪除結(jié)點、插入結(jié)點、建立有序鏈表等操作。整理課件Create( ) 建立無序鏈的步驟為:(1)先定義三個node類型的指針變量: node *head ,*pn,*pt; (2)新建結(jié)點,輸入學(xué)號和成績。用new運算符動態(tài)分配新結(jié)點空間,將pn指向該新結(jié)點,給新結(jié)點輸入學(xué)號和成績。 (3)將新結(jié)點加入到鏈尾,新結(jié)點加入到鏈尾有鏈表為空與非空二種情況: 鏈表為空 鏈表非空 整理課件鏈表為空時加入

15、新結(jié)點 整理課件鏈表非空時插入新結(jié)點整理課件建立無序鏈表函數(shù)(4)重復(fù)(2)、(3)兩步,通過循環(huán)不斷向鏈表添加新結(jié)點直到學(xué)號為“-1”為止。(5)將鏈尾結(jié)點指針賦0。(6)返回鏈表頭指針head。 例程整理課件Print( )例程 輸出鏈表中各結(jié)點成績應(yīng)用函數(shù)void Print(void)實現(xiàn)。建立輸出鏈表函數(shù)的步驟如下。(1)函數(shù)必須用形參node *head接收來自主函數(shù)的鏈表頭指針head。(2)定義指針變量node *p=head;將p指向鏈表首結(jié)點。(3)用循環(huán)語句依次輸出每個結(jié)點的學(xué)號與成績,直到鏈尾(p=0)為止。 整理課件Delchain( )例程刪除鏈表是指刪除鏈表全部結(jié)

16、點,并回收結(jié)點所占用的全部內(nèi)存空間。刪除鏈表用函數(shù)Delchain( node *head)實現(xiàn),主要操作步驟如下。(1)用形參node *head接受來自于主函數(shù)的鏈表頭指針;(2)定義指針變量node *p=head;并使指針變量p 指向鏈?zhǔn)?,如圖所示;(3)用循環(huán)語句依次刪除鏈表的各結(jié)點。 返回整理課件Delete( ) 刪除鏈表上指定值結(jié)點用函數(shù)Delete (node *head, int no)實現(xiàn)。函數(shù)形參應(yīng)有兩個,第一個為鏈表頭指針head,第二個為要刪除結(jié)點的學(xué)生學(xué)號no。 要刪除鏈表上指定學(xué)號的結(jié)點,首先要找到要刪除的結(jié)點,然后才能刪除該結(jié)點。 刪除結(jié)點可能會遇到三種情況:

17、 (1)若鏈表為空,即head為0,則返回空指針。 (2)若要刪除的結(jié)點為鏈表首結(jié)點,則將該結(jié)點的指針值賦給鏈表頭指針head,然后刪除該結(jié)點即可。如前頁圖所示。整理課件刪除鏈表上指定結(jié)點(3)要刪除的結(jié)點不是鏈表首結(jié)點。 定義指針變量pc、pa分別指向當(dāng)前正查找的結(jié)點與其后一個結(jié)點。圖示 用下列循環(huán)語句找到要刪除結(jié)點。 while (pc-no!=no) pa=pc;pc=pc-next; 查找后有兩種情況: 鏈表中無要刪除的結(jié)點,則輸出無此結(jié)點的信息。 鏈表中有要刪除的結(jié)點,如要刪除結(jié)點學(xué)號為“1002” 。圖示例程整理課件查找指定結(jié)點返回整理課件刪除指定結(jié)點返回整理課件Insert( )

18、 鏈表各結(jié)點按成績score降序排列,插入結(jié)點后,仍要求按成績score降序排列。 在插入函數(shù)Insert(node * head, node *pn)的形參中,head為頭指針,pn為指向插入結(jié)點的指針。在插入函數(shù)體中:pc為指向插入點前一個結(jié)點的指針,pa為指向插入點后一個結(jié)點的指針。 插入結(jié)點有兩種情況: (1)鏈表為空 將新結(jié)點插入到鏈表首,并將尾指針賦0。實現(xiàn)語句為: if (head=NULL) head=pn; pn-next=0; 圖示整理課件插入結(jié)點(續(xù))(2)鏈表非空 首先判斷新結(jié)點的成績是否大于或等于鏈表首結(jié)點的成績,若大于或等于首結(jié)點成績,則將新結(jié)點插入到鏈?zhǔn)孜恢?,若?/p>

19、于首結(jié)點成績,則要根據(jù)新結(jié)點的成績,將指針變量pc移動到插入點前,指針變量pa移動到插入點后。實現(xiàn)語句為: while ( pc-next!=0 &(pn-scorescore) pa=pc; pc=pc-next; 圖示整理課件插入結(jié)點(續(xù)) 當(dāng)pc與pa移到插入點位置處時,又有兩種情況: 新結(jié)點插入到鏈尾 當(dāng)新結(jié)點成績最小時,按降序排列該結(jié)點應(yīng)插入到鏈表尾。插入到鏈表尾的條件是新結(jié)點成績小于鏈表尾結(jié)點成績,即:pn-scorescore。實現(xiàn)語句為: if (pn-score score) pc-next=pn; pn-next=0; 整理課件插入結(jié)點(續(xù))新結(jié)點插入到鏈表中間 除上面所述

20、情況外,新結(jié)點應(yīng)插入鏈表中間,實現(xiàn)語句為: pn-next=pc; pa-next=pn; 第一條語句使新結(jié)點指向pc所指結(jié)點,第二條語句使pa所指結(jié)點指向新結(jié)點,從而實現(xiàn)將新結(jié)點插入到pc與pa所指兩結(jié)點之間。 圖示例程整理課件插入結(jié)點返回整理課件Create_Order( ) 向一個空鏈表中不斷地插入新建立的結(jié)點,并使新結(jié)點按序排列,就產(chǎn)生一條有序鏈。 建立一條有序鏈表的過程可分為兩步:首先建立一個新結(jié)點,其次將新結(jié)點插入到鏈表中。 例程 整理課件# include # include struct node char no; int score; node *next;node * Cr

21、eate(void ) /建立無序鏈表的函數(shù) void Print(const node *head)/輸出鏈表的函數(shù)void Delchain(node * head)/刪除整個鏈表的函數(shù)node * Delete( node *head, int no)/刪除指定結(jié)點的函數(shù)node * Insert(node * head, node *pn)/插入結(jié)點的函數(shù)node *Create_Order( void)/建立有序鏈表的函數(shù)整理課件完成鏈表處理的主程序 void main(void)/主函數(shù) node * head; int no; head=Create(); /產(chǎn)生無序鏈表 Pri

22、nt(head); /輸出無序鏈表 coutno; /輸入要刪除結(jié)點的學(xué)生學(xué)號 head=Delete(head,no); /刪除指定學(xué)號的結(jié)點 Print(head); /輸出顯示刪除后的鏈表。 Delchain(head); /刪除整個鏈表 head=Create_sort(); /產(chǎn)生一個有序鏈表 Print (head); /輸出顯示有序鏈表 Delchain(head); /刪除整個鏈表 整理課件本章小結(jié) 枚舉型是某種數(shù)據(jù)可能取值的集合,定義格式為: enum ; 枚舉元素表中的各元素為數(shù)據(jù)可能取值的集合; 每元素均有一個序號值與之對應(yīng)。 用枚舉類型可定義枚舉變量或枚舉數(shù)組。 枚舉變

23、量可進(jìn)行賦值運算與比較運算。 不能用cin輸入枚舉元素值或序號值,只能用賦值運算符將枚舉元素值賦給枚舉變量。用cout可以輸出枚舉變量,但輸出的是其序號而不是元素值。枚舉變量可進(jìn)行比較運算,枚舉變量之間的比較運算是對其序號進(jìn)行的。 整理課件2.結(jié)構(gòu)體 結(jié)構(gòu)體是由若干數(shù)據(jù)成員組成的導(dǎo)出數(shù)據(jù)類型,其定義格式為: struct 成員1; 成員n; ; 結(jié)構(gòu)體中成員的數(shù)據(jù)類型可以是基本類型,也可以是導(dǎo)出類型。 用結(jié)構(gòu)體數(shù)據(jù)類型可定義結(jié)構(gòu)體變量或結(jié)構(gòu)體數(shù)組。 數(shù)據(jù)成員的引用格式為:結(jié)構(gòu)體變量名.成員名。 不能對結(jié)構(gòu)體變量直接進(jìn)行輸入、輸出,只能對結(jié)構(gòu)體變量的數(shù)據(jù)成員進(jìn)行輸入、輸出。 整理課件 鏈表由若干

24、個結(jié)構(gòu)類型的結(jié)點用指針鏈接而成,每個結(jié)點由數(shù)據(jù)與指針兩部分組成,其中指針用于鏈接下一個結(jié)點。 鏈表的首結(jié)點地址存放在頭指針中,尾結(jié)點指針必須為0。 鏈表的主要操作有鏈表的建立、插入、刪除、輸出等。 整理課件建立和刪除鏈表的主要操作 (1)建立無序鏈表的主要操作 先用new動態(tài)分配一個結(jié)點空間,并用指針變量pn指向新結(jié)點,輸入數(shù)據(jù)到結(jié)點內(nèi),然后將新結(jié)點加入到鏈尾,依次循環(huán)直到輸入結(jié)束標(biāo)志為止。 若用pt指向鏈尾結(jié)點,則將新結(jié)點加到鏈尾的主要操作是: pt-next=pn; /新結(jié)點加入到鏈尾 pt=pn; /使pt指向新的鏈尾(2)刪除整個鏈表的主要操作 先用指針變量p指向鏈表首結(jié)點(p=hea

25、d),再將首結(jié)點從鏈表分離出來(head=p-next),最后刪除首結(jié)點(delete p),依次循環(huán)直到刪完(head=0)為止。 整理課件刪除指定結(jié)點的主要操作(3)刪除指定結(jié)點的主要操作 先用循環(huán)語句找到要刪除的結(jié)點,如: while (pc-no!=no) pa=pc;pc=pc-next; 用pc指向要刪除的結(jié)點,pa指向刪除結(jié)點的后一個結(jié)點,只要執(zhí)行下面兩條語句: pa-next=pc-next; /要刪除結(jié)點前一個結(jié)點的地址賦給其后一個結(jié)點的指針 delete pc; /動態(tài)回收結(jié)點占用空間 則指定結(jié)點被刪除。 整理課件插入結(jié)點的主要操作(4)插入結(jié)點的主要操作 先用循環(huán)語句找到

26、插入點的位置,用pc指向插入點前一個結(jié)點,pa指向插入點后一個結(jié)點,用pn指向新結(jié)點,只要執(zhí)行下面兩條語句: pn-next=pc; /將插入點前一個結(jié)點的地址賦給新結(jié)點的指針 pa-next=pn; /將新結(jié)點的地址賦給插入點后一個結(jié)點的指針 則新結(jié)點被插入到指定位置。 整理課件例8.1(1)# include # include /使用exit(0)函數(shù)時必須包含頭文件enum colors /定義有6種顏色元素的枚舉類型colors red, blue,green,black,white,yellow ;void main( void) colors color6; /定義枚舉類型數(shù)組

27、int j,n; cout0:red,1:blue,2:green,3:black,4:white,5:yellowendl; cout” 請輸入6個顏色號:”; 整理課件例8.1(2)for (j=0;j n; /輸入顏色號 if (n5 ) cout 輸入顏色值出錯,請重新輸入!; exit(0); else switch(n) /將顏色號轉(zhuǎn)換成元素存入數(shù)組 case 0 : colorj=red; break; case 1 : colorj=blue; break; case 2 : colorj=green ; break; case 3 : colorj=black; break;

28、 case 4 : colorj=white; break; case 5 : colorj=yellow; break; 整理課件例8.1(3)for (j=0 ;j6;j+) /循環(huán)6次,輸出數(shù)組元素對應(yīng)的顏色 switch (colorj) case red : cout red ; break; case blue: coutblue ; break; case green : cout green ; break; case black : coutblack ; break; case white : cout white ; break; case yellow :cout ye

29、llow ; break; coutt; coutn;返回整理課件例8.2(1)# include enum colorsred , blue,green;void show(colors color) switch(color) case red : coutred;break; case blue : coutblue;break; case green : coutgreen;break; coutt;整理課件例8.2(2)void main(void) colors col1,col2,col3; for(col1=red ;col1=green;col1=colors(int (co

30、l1) +1) for(col2=red ;col2=green;col2=colors(int (col2) +1) for(col3=red ;col3=green;col3=colors(int (col3) +1) show(col1); show(col2); show(col3); coutn; 返回整理課件例8.4(1)# include # define N 3struct student /定義學(xué)生成績結(jié)構(gòu)體類型 int no; char name8; float eng,phy,math,ave;void main (void) student s3; /定義結(jié)構(gòu)體數(shù)組 c

31、out 輸入 學(xué)號、姓名、英語、物理、數(shù)學(xué)成績:endl; for (int i=0;i si.no si.engsi.physi.math; 整理課件例8.4(2)for (i=0;iN;i+) si.ave=(si.eng+si.phy+ si.math)/3; cout “學(xué)號” t “姓名” t 英語 t 物理 t 數(shù)學(xué) t 平均成績 n; for (i=0;iN;i+) coutsi.not tsi.engt si.phyt si.matht si.aven; 返回整理課件例8.5(1)# include struct student /定義學(xué)生成績結(jié)構(gòu)

32、體類型 int no; char name8; float eng,phy,math,ave;void Input (student s ,int n) /輸入函數(shù) int i; cout 輸入學(xué)生:endl; cout 學(xué)號、姓名、英語、物理、數(shù)學(xué)成績endl; for (i=0;i si.no si.engsi.physi.math; 整理課件例8.5(2)void Ave (student s ,int n) /求平均成績函數(shù) int i; for (i=0;in;i+) si.ave=(si.eng+si.phy+ si.math)/3;void Sort(student

33、 s ,int n) /升序排序函數(shù) int i,j,k; student temp; for (i=0;in-1;i+) k=i; for (j=i+1;jsj.ave ) k=j; if (ki) temp=sk;sk=si;si=temp;整理課件例8.5(3)void Print(student s , int n) /輸出函數(shù) int i; cout “學(xué)號” t “姓名” t “英語” t 物理 t 數(shù)學(xué) t 平均成績 n; for (i=0;in;i+) tsi.engt si.phyt si.matht si.aven;整理課件例8.5(4)v

34、oid main (void) student stu3; /定義結(jié)構(gòu)體數(shù)組 Input(stu,3); /輸入學(xué)生成績 Ave (stu,3); /計算學(xué)生平均成績 Sort(stu,3); /按平均成績排序 Print(stu,3); /輸出學(xué)生成績 返回整理課件例8.6(1)#include struct date /定義出生日期結(jié)構(gòu)體類型 int year,month,day; /定義出生年、月、日 數(shù)據(jù)成員;struct student /定義學(xué)生檔案結(jié)構(gòu)體類型 int no ; /學(xué)號 char name10; /姓名 char sex2; /性別 int age; /年齡 dat

35、e birthday; /出生日期(結(jié)構(gòu)體類型);整理課件例8.6(2)void output( student x) /定義輸出函數(shù) cout x.no t x.sex t x.age t x.birthday.yeartx.birthday.monthtx .birthday.dayendl;void main(void) cout notnametsextaget yeart monthtdayendl; student s2=100,zhou,m,22,1980,12,1,101,Li,w,24,1978,1,1; for ( int j=0 ;j2;j+) output

36、( sj); 返回整理課件例8.7(1)# include struct Complex /定義一個復(fù)數(shù)結(jié)構(gòu)體 float r; /復(fù)數(shù)的實部 float i; /復(fù)數(shù)的虛部;Complex add(Complex c1,Complex c2) /復(fù)數(shù)加法函數(shù) Complex c; /定義復(fù)數(shù)結(jié)構(gòu)體變量c c.r=c1.r+c2.r; /兩復(fù)數(shù)實部相加賦給c的實部 c.i=c1.i+c2.i; /兩復(fù)數(shù)虛部相加賦給c的虛部 return c; /返回相加后的復(fù)數(shù)c整理課件例8.7(2)void main( void ) Complex x1=10,25,x2=20,35,x; /定義三個復(fù)數(shù)x

37、1、x2、x x=add (x1,x2); /調(diào)用復(fù)數(shù)加法函數(shù) coutx1=x1.r+x1.iiendl; coutx2=x2.r+x2.iiendl; coutx=x.r+x.iiendl;執(zhí)行程序后輸出 x1=10+25i x2=20+35i x =30+60i返回整理課件建立無序鏈表函數(shù)Create( )node * Create(void ) /定義輸入學(xué)生學(xué)號的臨時變量no int no; /定義鏈表頭指針、新結(jié)點指針、尾指針node *head,*pn,*pt; head=0; /鏈表頭指針賦0,表示鏈表為空。 cout“產(chǎn)生鏈表,請輸入學(xué)生學(xué)號與姓名,以-1為結(jié)束:no; /輸

38、入學(xué)生學(xué)號 while (no!= -1) /成績?yōu)?1時結(jié)束輸入 /動態(tài)分配新結(jié)點內(nèi)存空間,并將結(jié)點地址賦給pn。 pn= new node; pn-no=no; /將學(xué)生學(xué)號輸入新結(jié)點cinpn-score ; /學(xué)生成績輸入新結(jié)點if (head=0) /若鏈表為空 head=pn; /則將新結(jié)點地址由pn賦給頭指針head與尾指針pt pt=pn; /使新結(jié)點加入到鏈?zhǔn)?else /否則鏈表非空 pt-next=pn; /將新結(jié)點地址由pn賦給鏈尾的next指針與尾指針pt pt=pn; /使新結(jié)點加入到鏈尾 cin no; /輸入學(xué)生成績 pt-next=0; /鏈尾指針變量賦0 return (head); /返回鏈表的頭指針 返回整理課件輸出鏈表函數(shù)Print( )

溫馨提示

  • 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

提交評論