




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+程序設(shè)計(jì)程序設(shè)計(jì)秦丹陽(yáng)黑龍江大學(xué)電子工程學(xué)院通信工程系TEL:86608943Email: 黑龍江大學(xué)Chapter 9 自己設(shè)計(jì)的箱子自己設(shè)計(jì)的箱子黑龍江大學(xué)電子工程學(xué)院前言 第三章已經(jīng)介紹了一些C+常用的數(shù)據(jù)類(lèi)型,然而,多彩的世界僅靠這些數(shù)據(jù)類(lèi)型來(lái)描述顯然是不夠的,C+允許用戶自己來(lái)設(shè)計(jì)一些數(shù)據(jù)類(lèi)型。本章主要學(xué)習(xí)內(nèi)容:學(xué)習(xí)枚舉型數(shù)據(jù)學(xué)習(xí)結(jié)構(gòu)型數(shù)據(jù)(1) 學(xué)習(xí)鏈表的相關(guān)知識(shí)黑龍江大學(xué)電子工程學(xué)院enum 類(lèi)型名類(lèi)型名常量常量1,常量常量2,常量常量n;n枚舉類(lèi)型q如果一個(gè)變量只有幾種可能的值,可以定義為枚舉類(lèi)型q枚舉類(lèi)型就是將變量的值一一列舉出來(lái),變量的值僅限于列舉出來(lái)的值的范圍內(nèi)。q語(yǔ)
2、法格式:9.1我的類(lèi)型我做主enum weekday sun, mon, tue, wed, thu, fri, sat;enum weekday workday, weekend ;workday 和和 weekend 值值只能只能是是sun 到到 sat 其中之一。其中之一。數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型可能取的值可能取的值變量變量黑龍江大學(xué)電子工程學(xué)院enum 類(lèi)型名類(lèi)型名常量常量1,常量常量2,常量常量n;9.1我的類(lèi)型我做主n枚舉類(lèi)型q如果一個(gè)變量只有幾種可能的值,可以定義為枚舉類(lèi)型q枚舉類(lèi)型就是將變量的值一一列舉出來(lái),變量的值僅限于列舉出來(lái)的值的范圍內(nèi)。q語(yǔ)法格式:enum sun, mon,
3、tue, wed, thu, fri, sat workday, weekend ;其中其中sun, mon,.,sat稱(chēng)為稱(chēng)為枚舉元素枚舉元素或枚舉常量,為用戶定義或枚舉常量,為用戶定義的標(biāo)識(shí)符,的標(biāo)識(shí)符,所代表的意義所代表的意義由用戶決定,在由用戶決定,在程序中體現(xiàn)出來(lái)程序中體現(xiàn)出來(lái)。另一種定義變量的方法另一種定義變量的方法黑龍江大學(xué)電子工程學(xué)院9.1我的類(lèi)型我做主n枚舉類(lèi)型程序示例(P9.1)黑龍江大學(xué)電子工程學(xué)院9.1我的類(lèi)型我做主n枚舉類(lèi)型的說(shuō)明1 1、枚舉元素為常量,不可賦值運(yùn)算。、枚舉元素為常量,不可賦值運(yùn)算。 sun=0; mon=1;sun=0; mon=1;2 2、在定義枚
4、舉類(lèi)型的同時(shí),編譯程序按順序給每個(gè)枚舉元素、在定義枚舉類(lèi)型的同時(shí),編譯程序按順序給每個(gè)枚舉元素一個(gè)對(duì)應(yīng)的序號(hào),序號(hào)從一個(gè)對(duì)應(yīng)的序號(hào),序號(hào)從0 0開(kāi)始,后續(xù)元素依次加開(kāi)始,后續(xù)元素依次加1 1。enum weekday sun, mon, tue, wed, thu, fri, sat;enum weekday sun, mon, tue, wed, thu, fri, sat; 0 , 1, 2, 3, 4, 5, 6 0 , 1, 2, 3, 4, 5, 6 3 3、可以在定義時(shí)人為指定枚舉元素的序號(hào)值。、可以在定義時(shí)人為指定枚舉元素的序號(hào)值。enum weekday sun=9, mon=
5、2, tue, wed, thu, fri, sat;enum weekday sun=9, mon=2, tue, wed, thu, fri, sat; 9 , 2, 3, 4, 5, 6 , 7 9 , 2, 3, 4, 5, 6 , 7 4 4、只能給枚舉變量賦枚舉值只能給枚舉變量賦枚舉值,若賦序號(hào)值必須進(jìn)行強(qiáng)制類(lèi),若賦序號(hào)值必須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。型轉(zhuǎn)換。 day=mon ; day=mon ; day=1day=1; day=(enum weekday)1; day=(enum weekday)1;黑龍江大學(xué)電子工程學(xué)院9.1我的類(lèi)型我做主n枚舉類(lèi)型的說(shuō)明5、枚舉元素可以用來(lái)進(jìn)行比較
6、判斷。、枚舉元素可以用來(lái)進(jìn)行比較判斷。if (workday= = mon) if (workdaysun)6、枚舉值可以進(jìn)行加減一個(gè)整數(shù)、枚舉值可以進(jìn)行加減一個(gè)整數(shù)n的運(yùn)算,得到其前后第的運(yùn)算,得到其前后第n個(gè)元素的值。個(gè)元素的值。workday=sun;workday=(week)(workday+2);workday= = tue7、枚舉值可以按整型輸出其序號(hào)值。、枚舉值可以按整型輸出其序號(hào)值。workday=tue;coutstudent1;cinstudent1;cinstudent1.num; student1.num=100;cinstudent1.num; student1.n
7、um=100;可以將一個(gè)結(jié)構(gòu)體變量可以將一個(gè)結(jié)構(gòu)體變量整體整體賦給另外一個(gè)相同類(lèi)型的結(jié)構(gòu)體變量。賦給另外一個(gè)相同類(lèi)型的結(jié)構(gòu)體變量。 student2=student1;student2=student1;2 2、嵌套的結(jié)構(gòu)體變量必須逐層引用。、嵌套的結(jié)構(gòu)體變量必須逐層引用。student1.student1.birthday.birthday.dayday=25;=25;3 3、結(jié)構(gòu)體變量中的成員可以同一般變量一樣進(jìn)行運(yùn)算。、結(jié)構(gòu)體變量中的成員可以同一般變量一樣進(jìn)行運(yùn)算。student1.birthday.day+; student1.score+=60;student1.birthday.d
8、ay+; student1.score+=60;錯(cuò)誤錯(cuò)誤必須用成員名引用必須用成員名引用黑龍江大學(xué)電子工程學(xué)院9.2設(shè)計(jì)一個(gè)收納箱n對(duì)局部變量類(lèi)型的結(jié)構(gòu)體變量初始化void main(void) struct student long int num; char name20; char sex; char addr30; student1=901031, “Li Lin”, M, “123 Beijing Road”;endl;輸出:輸出: LiLin對(duì)變量初始化,一一賦值對(duì)變量初始化,一一賦值黑龍江大學(xué)電子工程學(xué)院9.2設(shè)計(jì)一個(gè)收納箱n關(guān)于結(jié)構(gòu)類(lèi)型變量的說(shuō)
9、明q(1)同類(lèi)型的結(jié)構(gòu)體變量之間可以直接賦值。這種賦值等同于各個(gè)成員的依次賦值.q(2)結(jié)構(gòu)體變量不能直接進(jìn)行輸入輸出,它的每一個(gè)成員能否直接進(jìn)行輸入輸出,取決于其成員的類(lèi)型,若是基本類(lèi)型或是字符數(shù)組,則可以直接輸入輸出.q(3)結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù),函數(shù)也可以返回結(jié)構(gòu)體的值。當(dāng)函數(shù)的形參與實(shí)參為結(jié)構(gòu)體類(lèi)型的變量時(shí),這種結(jié)合方式屬于值調(diào)用方式,即屬于值傳遞.黑龍江大學(xué)電子工程學(xué)院9.2設(shè)計(jì)一個(gè)收納箱n程序舉例(P9.2)黑龍江大學(xué)電子工程學(xué)院9.3結(jié)構(gòu)與函數(shù)n結(jié)構(gòu)作為參數(shù)q與數(shù)組不同,結(jié)構(gòu)是按值傳遞的,也就是說(shuō)整個(gè)結(jié)構(gòu)的內(nèi)容都復(fù)制給了形參,即使某些成員數(shù)據(jù)是一個(gè)數(shù)組。(P9.3.1)在
10、函數(shù)中修改形參的值對(duì)實(shí)參沒(méi)有影響,并且通過(guò)輸出變?cè)诤瘮?shù)中修改形參的值對(duì)實(shí)參沒(méi)有影響,并且通過(guò)輸出變量量s1s1和參數(shù)和參數(shù)argarg的成員的成員namename所在地址,可以指導(dǎo)二者不所在地址,可以指導(dǎo)二者不同,即整個(gè)同,即整個(gè)namename數(shù)組復(fù)制給了參數(shù)數(shù)組復(fù)制給了參數(shù)argarg。黑龍江大學(xué)電子工程學(xué)院9.3結(jié)構(gòu)與函數(shù)n結(jié)構(gòu)作為返回值返回多個(gè)變量(P9.3.2)黑龍江大學(xué)電子工程學(xué)院9.4結(jié)構(gòu)數(shù)組與結(jié)構(gòu)指針n結(jié)構(gòu)數(shù)組q結(jié)構(gòu)體數(shù)組的定義struct student int num; char name20; char sex; int age; float score; char ad
11、dr30; ;struct student stu30;struct student int num; char name20; char sex; int age; float score; char addr30; stu30;直接定義直接定義黑龍江大學(xué)電子工程學(xué)院9.4結(jié)構(gòu)數(shù)組與結(jié)構(gòu)指針n結(jié)構(gòu)數(shù)組q結(jié)構(gòu)體數(shù)組的初始化struct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;也可以寫(xiě)做也可以寫(xiě)做stu 黑龍江大學(xué)電子工程學(xué)院9.4結(jié)構(gòu)數(shù)組與結(jié)構(gòu)指
12、針n結(jié)構(gòu)數(shù)組q結(jié)構(gòu)體數(shù)組的初始化以下程序的結(jié)果是:以下程序的結(jié)果是:void main(void) struct date int year, month, day; today; coutsizeof(struct date)endl; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:12黑龍江大學(xué)電子工程學(xué)院9.4結(jié)構(gòu)數(shù)組與結(jié)構(gòu)指針n結(jié)構(gòu)數(shù)組根據(jù)下面的定義,能打印出字母根據(jù)下面的定義,能打印出字母M的語(yǔ)句是:的語(yǔ)句是:struct person char name9; int age; ;struct person class10= “Jone”,17, “Paul”,19, “Mary”,18, “Adam”,16
13、 ;endl;1endl;1endl;A) 0成員數(shù)據(jù)成員數(shù)據(jù)需要注意的是,箭頭操作符的左邊一定是一個(gè)結(jié)構(gòu)指針,而成員操作符的右邊一定是一個(gè)結(jié)構(gòu)變量,絕不能混淆。黑龍江大學(xué)電子工程學(xué)院9.4結(jié)構(gòu)數(shù)組與結(jié)構(gòu)指針n結(jié)構(gòu)指針(P9.4)黑龍江大學(xué)電子工程學(xué)院9.5自行車(chē)的鏈條n自行車(chē)的鏈條什么樣? 自行車(chē)的鏈條自行車(chē)的鏈條雖然很長(zhǎng),卻是由雖然很長(zhǎng),卻是由一個(gè)個(gè)相同的小環(huán)一個(gè)個(gè)相同的小環(huán)節(jié)連接而成的。節(jié)連接而成的。struct student int num; float score
14、; struct student *next; ;指向同一結(jié)構(gòu)體類(lèi)指向同一結(jié)構(gòu)體類(lèi)型的指針變量型的指針變量#define STU struct studentSTU int num; float score; STU *next; ;指向同一結(jié)構(gòu)體類(lèi)指向同一結(jié)構(gòu)體類(lèi)型的指針變量型的指針變量黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)n鏈表的建立struct student int num; float score; struct student *next; ;struct student *p; /定義了結(jié)構(gòu)體類(lèi)型的指針定義了結(jié)構(gòu)體類(lèi)型的指針p=new student; /用用new開(kāi)辟一結(jié)構(gòu)體空
15、間,將地址賦給開(kāi)辟一結(jié)構(gòu)體空間,將地址賦給pp-num=10; /為新開(kāi)辟的結(jié)構(gòu)體空間中的為新開(kāi)辟的結(jié)構(gòu)體空間中的num成員賦值成員賦值p-score=90;nextscorenump1090 用指針引用結(jié)用指針引用結(jié)構(gòu)體內(nèi)的成員構(gòu)體內(nèi)的成員(*p).num黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)n鏈表的建立headp2A2000Hp13000HBp13000Hp22090HCp12090Hp26000HDp10ABC1、首先定義兩個(gè)結(jié)構(gòu)體類(lèi)型的指針、首先定義兩個(gè)結(jié)構(gòu)體類(lèi)型的指針 STU *p1, *p2;2、用、用new在內(nèi)存中開(kāi)辟一個(gè)結(jié)構(gòu)體變量的空間,將地址賦給在內(nèi)存中開(kāi)辟一個(gè)結(jié)構(gòu)體變量的空
16、間,將地址賦給p1。p1=new student; /* STU struct student */3、將數(shù)據(jù)賦給剛開(kāi)辟的變量空間。、將數(shù)據(jù)賦給剛開(kāi)辟的變量空間。cinp1-nump1-score;黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)n鏈表的建立headp2A2000Hp13000HBp13000Hp22090HCp12090Hp26000HDp10ABC4、若輸入的數(shù)據(jù)有效,將首地址作為鏈表頭,、若輸入的數(shù)據(jù)有效,將首地址作為鏈表頭,head=p1; 令令p2=p1,p1繼續(xù)用繼續(xù)用new開(kāi)開(kāi)辟新的辟新的內(nèi)存空間。內(nèi)存空間。p1=new student; /* STU struct stu
17、dent */5、將下一個(gè)數(shù)據(jù)賦給新開(kāi)辟的變量空間。、將下一個(gè)數(shù)據(jù)賦給新開(kāi)辟的變量空間。cinp1-nump1-score;6、若輸入的數(shù)據(jù)有效,將、若輸入的數(shù)據(jù)有效,將p2與與p1連接起來(lái)連接起來(lái),p2-next=p1 再令再令p2=p1,p1繼續(xù)用繼續(xù)用new開(kāi)辟新的內(nèi)存空間。做開(kāi)辟新的內(nèi)存空間。做5。若輸入的數(shù)據(jù)無(wú)效,。若輸入的數(shù)據(jù)無(wú)效,p2就是鏈表的尾,則就是鏈表的尾,則p2-next=NULL。黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)STU *p1, *p2, *head;head=NULL;p1=p2=new student;cinp1-nump1-score;if (p1-num!
18、=0) head=p1;p1=new student;cinp1-nump1-score;if (p1-num!=0) p2-next=p1; p2=p1;p1=new student;cinp1-nump1-score;if (p1-num!=0) p2-next=p1; p2=p1; p1=new student;cinp1-nump1-score;if (p1-num= =0) p2-next=NULL;return (head);第一結(jié)點(diǎn)第一結(jié)點(diǎn)第二結(jié)點(diǎn)第二結(jié)點(diǎn)第三結(jié)點(diǎn)第三結(jié)點(diǎn)最后結(jié)點(diǎn)最后結(jié)點(diǎn)返回鏈表頭返回鏈表頭黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)STU *insert(STU *
19、head, STU * stud) STU *p0,*p1,*p2; p1=head; p0=stud; if (head= =NULL) head=p0; p0-next=NULL; else while(p0-nump1-num)&(p1-next!=NULL) p2=p1; p1=p1-next; if (p0-numnum) if (head= =p1) head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0; p0-next=NULL; n=n+1; return (head); 鏈表為空鏈表為空未找到結(jié)點(diǎn),循環(huán)未找到結(jié)點(diǎn),
20、循環(huán)找到結(jié)點(diǎn)找到結(jié)點(diǎn)插入在第一個(gè)結(jié)點(diǎn)前插入在第一個(gè)結(jié)點(diǎn)前插入在最后插入在最后一個(gè)后一個(gè)后黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)void main(void) STU *head, stu; int del_num; head=creat( ); print(head); coutdel_num; head=del(head,del_num); print(head); coutstu.numstu.score; head=insert(head, &stu); print(head);建立鏈表建立鏈表打印鏈表打印鏈表刪除結(jié)點(diǎn)刪除結(jié)點(diǎn)插入結(jié)點(diǎn)插入結(jié)點(diǎn)coutstu.numstu.score; head=insert(head, &stu); print(head);變量,固定空間變量,固定空間黑龍江大學(xué)電子工程學(xué)院9.6鏈表的實(shí)現(xiàn)33000H2000H3000H76000H6000H1220
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【復(fù)習(xí)大串講】【中職專(zhuān)用】高二語(yǔ)文上學(xué)期期末綜合測(cè)試題(三)(職業(yè)模塊)(原卷版)
- 單位員工招聘合同范本
- 獸醫(yī)聘用勞務(wù)合同范本
- 光催化課題申報(bào)書(shū)
- 會(huì)所物資出售合同范本
- 廚具采買(mǎi)合同范本寫(xiě)
- 吊裝合同范例簡(jiǎn)易版本
- 醫(yī)院雇傭合同范本
- 企業(yè)各類(lèi)合同范本
- 吊車(chē)及場(chǎng)地合作合同范本
- 車(chē)站信號(hào)自動(dòng)控制(第二版) 課件 -3-6502部分
- 2024安徽教師統(tǒng)一招聘考試《小學(xué)英語(yǔ)》試卷真題及答案
- 2024年考研數(shù)學(xué)(一)試題卷及答案
- 尼康NikonCOOLPIXP500數(shù)碼相機(jī)(中文)說(shuō)明書(shū)
- TPO防水卷材在商業(yè)建筑屋面施工方案
- 腦血管介入手術(shù)術(shù)前術(shù)后護(hù)理
- 2024解析:第九章大氣壓強(qiáng)-基礎(chǔ)練(解析版)
- 《會(huì)展概述》課件
- 外貿(mào)跟單工作規(guī)劃
- 火電廠汽機(jī)專(zhuān)業(yè)技術(shù)培訓(xùn)
- 山東濰坊2024~2025第一學(xué)期高三階段性調(diào)研監(jiān)測(cè)考試英語(yǔ)試題含答案
評(píng)論
0/150
提交評(píng)論