版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、0西安交通大學計算機教學實驗中心數(shù)據的抽象與封裝計算機程序設計(C+)內容提要多種數(shù)據特征的封裝結構體結構結構變量結構數(shù)組結構指針公用體枚舉類型多種數(shù)據特征和函數(shù)的封裝類類對象構造函數(shù)與析構函數(shù)類的組合多文件結構16.1多種數(shù)據特征的封裝結構體在描述某些事物時,有時只用一種數(shù)據類型往往很難處理,如手機通話記錄中的信息就有多種數(shù)據類型,對方電話號碼可以用字符數(shù)組或者字符串,持續(xù)時間可以用整型(以秒計時)、浮點型、雙精度類型中的一種,如果只是將這兩類信息定義為相互獨立的簡單變量,是很難反映它們之間的內在聯(lián)系的,在C語言中,可以使用結構將多種數(shù)據信息封裝在一起。26.1.1結構結構是C語言中一種新的
2、構造數(shù)據類型,它能把有內在聯(lián)系的不同類型的數(shù)據統(tǒng)一成一個整體,使它們相互關聯(lián);同時,結構又是一個變量的集合,可以按照對基本數(shù)據類型的操作方法單獨使用其成員變量。3結構體定義struct 結構體名 類型名1 成員名表1; 類型名2 成員名表2; 類型名n 成員名表n;;4嵌套定義例子struct time int hour,minute,second;struct day int year,month,date;struct conversion char phonenumber11;int duration;struct day occurrentday;struct time occurre
3、nttime;66.1.2結構變量如同C語言中的基本數(shù)據類型一樣,在定義了結構類型后,還需要定義結構類型的變量,然后才能通過結構變量來操作和訪問結構的數(shù)據。7結構變量初始化struct conversion char phonenumber11;int duration;struct day occurrentday;struct time occurrenttime;account1=“1111111111”,120,2012,8,8,16,15,30;9結構變量使用結構變量成員的引用結構體變量名.成員名結構變量的整體賦值結構變量1=結構變量2結構變量作為函數(shù)參數(shù)結構變量可以作為函數(shù)參數(shù)以及
4、函數(shù)的返回值10【例6-1】查找是否有指定電話號碼的通話記錄【問題分析】表示通話記錄【算法描述】錄入通話記錄,按照電話號碼尋找相匹配的通話記錄11int main() /主函數(shù)char temp11;cout”請輸入對方的電話號碼”temp;if(strcmp(account1.phonenumber,temp)=0) /比較電話號碼cout”find”tempendl;coutaccount1.durationendl; /打印結構體的成員coutaccount1.occurrentday.year”t”;coutaccount1.occurrentday.month”t”;cout acc
5、ount1.occurrentday.dateendl;coutaccount1.occurrenttime.hour”t”;coutaccount1.occurrenttime. minute”t”;cout account1.occurrenttime.second endl;13elsecout”not find”tempendl;return 0;14【思路擴展】如果將結構變量的初始化過程改寫成從鍵盤輸入各成員的值再賦值給各成員,應該如何修改?如果將查找過程編寫成函數(shù),又該如何修改?166.1.3結構數(shù)組一個結構變量只能表示一個實體的信息,例如account1只能表示1條通話記錄,如果
6、有許多相同類型的實體,就需要使用結構數(shù)組,例如100條通話記錄,由于每條記錄的基本信息都是相同的,就可以將這些具有相同結構類型的變量組織起來,形成一個結構數(shù)組。結構數(shù)組是結構與數(shù)組的結合,與普通數(shù)組的不同之處在于每個數(shù)組元素都是一個結構類型的數(shù)據,包含各個成員。17結構數(shù)組定義struct conversion char phonenumber11;int duration;struct time occurrentday;struct time occurrenttime;account100;18結構數(shù)組初始化struct conversion account100=“1111111111
7、”,11,2012,8,8,16,15,30,“2222222222”,22, 2012,8,8,16,15,30;19結構數(shù)組使用結構數(shù)組成員的引用結構數(shù)組名下標.結構成員名結構數(shù)組元素的整體賦值結構數(shù)組元素i=結構數(shù)組元素j20【例6-2】詞頻統(tǒng)計:輸入一系列英文單詞,單詞之間用空格隔開,用“xyz”表示結束輸入,統(tǒng)計輸入過哪些單詞以及各單詞出現(xiàn)的次數(shù),統(tǒng)計時,區(qū)分大小寫字母,最后按單詞的字典順序輸出單詞和出現(xiàn)次數(shù)的對照表?!締栴}分析】字典的組成【算法描述】統(tǒng)計不同單詞出現(xiàn)的次數(shù)21void Sort(WordList list,int count) /排序函數(shù)for(int i=0;ii
8、;j=j-1)if(strcmp(listj-1.word,listj.word)0)WordList tmp;tmp=listj-1;listj-1=listj;listj=tmp;23int main() /主函數(shù)WordList list5000;int i,num=0;char temp50;cout”請輸入一系列英語單詞,以xyz表示輸入結束”temp;while(strcmp(temp,”xyz”)!=0)for(i=0;i指向結構數(shù)組的指針結構數(shù)組元素.成員名結構數(shù)組元素-成員名結構指針名-成員名(*結構指針名).成員名結構指針作為函數(shù)參數(shù)28【例6-3】利用帶結構指針的函數(shù)實現(xiàn)
9、通話記錄的輸入、輸出和查找等功能。【問題分析】輸入、輸出和查找函數(shù)【算法描述】批量錄入通話記錄,再按照電話號碼尋找相匹配的通話記錄。29【源程序】#include /包含基本輸入輸出庫頭文件using namespace std; /使用名字空間struct time /時間結構體int hour,minute,second;struct day /日期結構體int year,month,date;struct conversion /通話記錄結構體char phonenumber11;int duration;struct day occurrentday;struct time occur
10、renttime;void input(struct conversion *);/輸入函數(shù)聲明void print(struct conversion);/輸出函數(shù)聲明struct conversion find(struct conversion *, char tempnumber11);30int main() /主函數(shù)char temp11;struct conversion account1,account5; /結構體變量、數(shù)組input(account); /調用輸入函數(shù)couttemp; /輸入要查找的電話號碼account1=find(account,temp); /調用查
11、找函數(shù)if(strcmp(account1.phonenumber,0000000000)!=0) /判斷是否找到print(account1); /找到則顯示elsecoutnot findendl;return 0; /主函數(shù)結束31void input(struct conversion *p)/批量輸入通話記錄 cout請輸入5個人的通話記錄(電話、時長、日期、時間)n;for(int i=0;ipi.phonenumberpi.duration;cinpi.occurrentday.yearpi.occurrentday.monthpi.occurrentday.date; cinp
12、i.occurrenttime.hourpi.occurrenttime.minutepi.occurrenttime.second;32void print(struct conversion q) /輸出指定結構變量的全部成員信息coutq.phonenumbertq.durationendl;coutq.occurrentday.yeart ;coutq.occurrentday.montht ;cout q.occurrentday.dateendl;coutq.occurrenttime.hourt;coutq.occurrenttime. minutet;cout q.occurr
13、enttime.second endl;33struct conversion find(struct conversion *p,char tempnumber11)/查找指定電話struct conversion r=0000000000;/結構變量部分成員初始化for(int i=0;i5;i+)if(strcmp(pi.phonenumber,tempnumber)=0)r=pi; /結構變量的整體賦值return r;34【運行結果】請輸入5個人的通話記錄(電話、時長、日期、時間)1111111111 120 2012 8 8 8 8 82222222222 130 2012 8 9
14、 8 8 93333333333 140 2012 8 1 8 8 84444444444 150 2012 9 9 9 9 95555555555 160 2012 9 9 9 9 9input the phonenumber:33333333333333333333 1402012 8 18 8 835【思路擴展】什么情況下在函數(shù)中使用結構變量或者結構指針作為函數(shù)參數(shù)較好?366.1.5公用體結構體與共用體的本質區(qū)別只要在于存儲方式,結構體的每個成員各自占用分配給自己的存儲單元,各自擁有自己的地址,結構體類型分配的內存空間大小就是各成員所占存儲單元的總和。共用體的各個成員則占用共同的存儲單
15、元,具有相同的首地址,占用存儲單元最多的成員的長度就是共用體的長度。37公用體的定義union 公用體名類型1 成員名1;類型2 成員名2;類型n 成員名n;38共用體變量定義單獨定義union postion pos1,pos2,*p;混合定義union postionint grand;char title20; pos1,pos2,*p;39公用體變量初始化共用體變量或數(shù)組在初始化時,只能對它的第一個成員賦值,對多個成員賦值是不允許的union postion pos1=1;/正確union postion pos2=1,2;/正確union postion pos2=1,lector,
16、2,lector;/錯誤40共用體變量的使用共用體變量的引用共用體變量名.成員共用體變量指針.成員公用體變量的整體賦值共用體變量1=共用體變量241【例6-4】學校人事信息管理:批量輸入和輸出學生或者教師信息,包括姓名、年齡、職業(yè)和職位等信息,每位學生或者教師都包含前3項信息,但對學生而言,其第4項信息表示年級;對教師而言,其第4項信息表示職稱。【問題分析】學校人事信息的表示【算法描述】輸入和輸出學校人事信息。42【源程序】#include /包含基本輸入輸出庫頭文件using namespace std; /使用名字空間union postionint grand;char title20;
17、struct personchar name20;int age;char job10;postion pos;43int main() /主函數(shù)person p3;int i;for(i=0;pi.agepi.job;if(strcmp(pi.job,”student”)=0)cin pi.pos.grand;elsecin pi.pos.title;cout”*”endl;44cout”name”t”age”t”job”t”grand/title”endl;for(i=0;i3;i+)”t”pi.age”t”pi.job”t”;if(strcmp(pi
18、.job,”student”)=0)cout pi.pos.grandendl;elsecout pi.pos.titleendl;return 0;/程序結束,45【運行結果】tom 21 student 3john 19 teacher professorrose 19 student 1*name age job grand/titletom 21 student 3john 19 teacher professorrose 19 student 146【思路擴展】結構體類型中包含共用體類型的定義會在哪些情況中出現(xiàn)?共用體類型中包含結構體類型的定義會在哪些情況中出現(xiàn)?476.1.6枚舉類
19、型在一些實際的應用中,有些變量的取值常常被限定在一個有限范圍內,如一個星期只有7天,一年只有12個月等。C語言提供的“枚舉”類型能夠在類型定義時列舉出所有可能的取值,將枚舉類型變量的取值限定在取值范圍內。由于枚舉變量只能取一個值,不能再分解為任何基本類型,因此枚舉類型只是一種基本數(shù)據類型,而不是構造類型。48枚舉的定義enum 枚舉名 枚舉常量表49枚舉變量的定義單獨定義enum color temp;混合定義enum color red,yellow,blue,white,black temp;無類型定義enum red,yellow,blue,white,black temp;50枚舉變量
20、的使用可以把枚舉常量賦值給枚舉變量,但不能直接把元素的序號賦值給枚舉變量。51【例6-5】五色球的組合:口袋中有紅、黃、藍、白、黑5種顏色的小球若干,如果每次都從口袋中取出3個不同顏色的小球,共有多少種組合?試輸出每種組合的3種顏色。【問題分析】小球顏色的表示【算法描述】使用窮舉法測試符合三種顏色要求的每種組合。52#include /包含基本輸入輸出庫頭文件using namespace std; /使用名字空間int main() /主函數(shù)enum colorred,yellow,blue,white,black;int count=0;int temp;for(int i=red;i=b
21、lue;+i)/第一次取球for(int j=i+1;j=black;+j)/第二次取球for(int k=j+1;k=black;k+)/第三次取球+count;53for(int t=0;t3;+t)/輸出每次組合中3次取球的顏色switch(t)case 0:temp=I;break;case 1:temp=j;break;case 2:temp=k;break;default:cout”impossiblen”;switch(enum color)temp)case red:cout”red”t”;break;case yellow:cout”yellow”t”;break;case
22、blue:cout”blue”t”;break;case white:cout”white”t”;break;case black:cout”black”t”;break;default:cout”impossiblen”;54cout”n”;cout”共有”count”種組合”成員變量或成員函數(shù)對象的整體賦值對象1=對象2對象作為函數(shù)的形式參數(shù)67【例6-6】定義手機類mobile,包括電話號碼mynumber變量以及初始化函數(shù)init、撥打電話函數(shù)dial、接聽電話函數(shù)answer、掛斷電話函數(shù)hangup。【問題分析】手機類的定義?!舅惴枋觥慷xmobile類68【源程序】#inclu
23、de using namespace std;class mobileprivate:char mynumber11;/機主的電話號碼public:void init(char number11=”0000000000”)/隱式定義的內聯(lián)函數(shù)strcpy(mynumber,number);void dial();/撥打電話void answer(char othernumber11);/接聽電話void hangup();/掛斷電話;69void mobile:dial()cout”Dialing number is”mynumberendl;cout”Dialing on.”endl;voi
24、d mobile:answer(char othernumber11)cout”Answering number is”othernumberendl;cout”Answering in.”endl;inline void mobile:hangup()/顯示定義的內聯(lián)函數(shù)cout”Hanging up.”endl;70int main()mobile m1;m1.init(”1111111111”);/對象對成員函數(shù)init的使用m1.dial();m1.hangup();m1.answer(”2222222222”);m1.hangup();return 0;71運行結果Dialing n
25、umber is1111111111Dialing on.Hanging up.Answering number is2222222222Answering in.Hanging up.72【思路擴展】日常生活中,還有哪些事物可以定義為類?73【例6-7】定義手機類mobile,包括電話號碼mynumber變量,定義初始化函數(shù)init、撥打電話函數(shù)dial、接聽電話函數(shù)answer、掛斷電話函數(shù)hangup,要求dial和init用對象作為函數(shù)的參數(shù),實現(xiàn)與【例6-6】相同的功能。【問題分析】函數(shù)dial和init的定義【算法描述】定義mobile類和能夠使用該類對象的普通函數(shù)dial和ini
26、t74【源程序】#include using namespace std;class mobilepublic:char mynumber11;/機主的電話號碼;void init(mobile &m)/隱式定義的內聯(lián)函數(shù)cinm.mynumber;void dial(mobile m)/撥打電話cout”Dialing number is”m.mynumberendl;cout”Dialing on.”endl;75void answer(char othernumber11)/接聽電話cout”Answering number is”othernumberendl;cout”Answeri
27、ng in.”endl;void hangup()/掛斷電話cout”Hanging up.”endl;76int main() /main functionmobile m1;init(m1);dial(m1);hangup();answer(”2222222222”);hangup(); return 0;77【運行結果】1111111111Dialing number is1111111111Dialing on.Hanging up.Answering number is2222222222Answering in.Hanging up.78【思路擴展】【例6-6】與【例6-7】的區(qū)別
28、有哪些?79對象與指針指向對象的指針類名 *對象指針名;指向對象成員的指針返回值類型名(類名:*指針變量名)(參數(shù)表);指針變量名=類名:成員函數(shù)名;指向對象的指針和指向對象成員的指針都只能訪問公有成員。this指針存放對象的起始地址80【例6-8】利用指向對象的指針以及指向對象成員函數(shù)指針完成手機mobile類中撥打、接聽等函數(shù)的調用?!締栴}分析】指向對象的指針、指向對象成員變量的指針以及指向對象成員函數(shù)指針的使用【算法描述】在mobile類中使用指向對象的指針和指向對象成員函數(shù)指針81【源程序】#include using namespace std;class mobilepublic:
29、char mynumber11;void init(char number11=”0000000000”)/隱式定義的內聯(lián)函數(shù)strcpy(mynumber,number);void dial();/撥打電話void answer(char othernumber11);/接聽電話void hangup();/掛斷電話;82void mobile:dial()cout”Dialing number is”mynumberendl;cout”Dialing on.”endl;void mobile:answer(char othernumber11)cout”Answering number i
30、s”othernumberendl;cout”Answering in.”endl;void mobile:hangup()/顯示定義的內聯(lián)函數(shù)cout”Hanging up.”init(”1111111111”);p1-dial();p1- hangup();p1- answer(”2222222222”);p1- hangup();char *p2;p2=m1.mynumber;cout*p2endl;84void(mobile:*p3)(char number11);void(mobile:*p4)();void(mobile:*p5)(char othernumber11);void(
31、mobile:*p6)();p3=mobile:init;p4=mobile:dial;p5=mobile:answer;p6=mobile:hangup;(m1.*p3)(”1111111111”);(m1.*p4)();(m1.*p6)();(m1.*p5)(”2222222222”);(m1.*p6)();return 0;85【運行結果】Dialing number is1111111111Dialing on.Hanging up.Answering number is2222222222Answering in.Hanging up.1Dialing number is111111
32、1111Dialing on.Hanging up.Answering number is2222222222Answering in.Hanging up.86【思路擴展】指向對象的指針、指向對象成員變量的指針以及指向對象成員函數(shù)指針會在哪些情況中使用?876.2.3構造函數(shù)構造函數(shù)在對象被創(chuàng)建時利用特定的值構造對象,將對象初始化為一個特定的狀態(tài)??截悩嬙旌瘮?shù)使用一個已經存在的對象(由拷貝構造函數(shù)的參數(shù)指定),去初始化同類的一個新對象。析構函數(shù)用于完成對象被刪除前的一些善后工作88構造函數(shù)類名( 形參列表 )函數(shù)體89拷貝構造函數(shù)類名(類名 &對象名)函數(shù)體;90析構函數(shù)類名() 函數(shù)體91
33、【例6-9】定義mobile類,僅成員變量mynumber以及構造函數(shù)和析構函數(shù)?!締栴}分析】定義構造函數(shù)和析構函數(shù)【算法描述】定義帶構造函數(shù)和析構函數(shù)的mobile類。92【源程序】#include using namespace std;class mobilepublic:char mynumber11;mobile();/不帶參數(shù)的構造函數(shù)mobilemobile(char number11);/ 帶參數(shù)的構造函數(shù)mobilemobile();mobile:mobile()strcpy(mynumber,”0000000000”);coutmynumberendl;93mobile:m
34、obile(char number11)strcpy(mynumber,number);coutmynumberendl;mobile()cout”Turn off the phone”endl;int main()mobile m1;return 0;94【運行結果】0000000000Turn off the phone956.2.4類的組合組合類名:類名(形參表):內嵌對象1(形參表),內嵌對象2(形參表),.類的初始化引用循環(huán)依賴向前引用96【例6-10】定義具有GSM和CDMA兩種發(fā)射制式的mobile類【問題分析】內嵌對象的使用【算法描述】在mobile類中使用內嵌對象、構造函數(shù)和
35、析構函數(shù)97【源程序】#include using namespace std;class mobilecdmaprivate:char mynumber11;/機主的電話號碼public:mobile(char number11)/初始化mynumber=number;cout”Turn on the mobile”mynumberendl;mobile()cout”Turn off the mobile”mynumberendl;98class mobileprivate:char mynumber11;/機主的電話號碼mobilecdma core;/CDMA內核,內嵌對象public:
36、mobile(char *number,char *number1):core(number1)/初始化strcpy(mynumber,number);cout”Turn on the mobile”mynumberendl;mobile()cout”Turn off the mobile”mynumberendl;99int main()mobile m1(”1111111111”,”2222222222”);return 0;100【運行結果】Turn on the mobile2222222222Turn on the mobile1111111111Turn off the mobil
37、e1111111111Turn off the mobile22222222221016.2.5多文件結構一般把類和成員變量的定義放在一個.h文件,把成員函數(shù)和靜態(tài)成員的定義放在.cpp文件中,主函數(shù)放在另外的一個.cpp文件中。102【例6-11】使用多文件結構組織mobile類。【問題分析】源文件劃分【算法分析】mobile類的多文件結構103.h/mobil.h文件放mobile的定義#ifndef MOBILE_H#define MOBILE_Hclass mobileprivate:char mynumber11;/機主的電話號碼public:mobile(char number11
38、);/構造函數(shù)void dial();/撥打電話void answer(char othernumber11);/接聽電話void hangup();/掛斷電話mobile();/析構函數(shù)#endif104.cpp/mobile.cpp文件放mobile成員函數(shù)的定義#include #include mobile.husing namespace std;mobile:mobile(char number11)/初始化strcpy(mynumber,number);cout”Turn on the mobile”mynumberendl;mobile:mobile()cout”Turn of
39、f the mobile”mynumberendl;105void mobile:dial()cout”Dialing number is”mynumberendl;cout”Dialing on.”endl;void mobile:answer(char othernumber11)cout”Answering number is”othernumberendl;cout”Answering in.”endl;void mobile:hangup()cout”Hanging up.”endl;106.cpp/main.cpp放主函數(shù)#include mobile.h#include usin
40、g namespace std;int main()mobile m1(”1111111111”);m1.dial();m1.hangup();m1.answer(”2222222222”);m1.hangup();return 0;107【運行結果】Turn on the mobile1111111111Dialing number is1111111111Dialing on.Hanging up.Answering number is2222222222Answering in.Hanging up.Turn off the mobile1111111111108【思路擴展】在什么情況下
41、會使用類的多文件結構?109【例6-12】對每個學生的成績進行判斷,找出有不及格的課程,然后顯示該同學的學號姓名以及不及格課程的名稱和分數(shù)?!締栴}分析】定義結構體的數(shù)據類型student,其成員分別是學號、姓名和一個數(shù)組,該數(shù)組用來保存5門課的成績,初始化時給出每個學生的學號、姓名和各門課程的成績?!舅惴枋觥吭趯W生成績結構體數(shù)組中查找不及格信息。110【源程序】#include using namespace std;int main() struct studentchar stno9;char stname20; int score5;111student stud10=08091101
42、,張品,76,87,69,76,78, 08091102,李利,97,67,79,45,90, 08091103,應一利,54,69,76,79,56, 08091104,周勤,87,88,97,99,76, 08091105,吳風,69,56,98,34,32, 08091106,趙強,77,87,99,65,76, 08091107,李力平,91,67,67,87,65, 08091108,張軍利,87,45,77,56,79, 08091109,馮紅,100,69,89,89,76, 08091110,孫李,99,76,97,96,79 ;char course520=數(shù)學,物理,化學,
43、英語,計算機; int i,j,cnt;cout每個同學的成績:endl;cout 學號t姓名t數(shù)學t物理t化學t英語t計算機endl;cout=endl;112for(i=0;i10;i+)coutstudi.stnotstudi.stnamet;for(j=0;j5;j+)coutstudi.scorejt;coutendl;cout=endl;cout不及格同學的課程和成績如下:endl;/ 處理不及格分數(shù)for(i=0;i10;i+) cnt=0;113for(j=0;j5;j+)if(studi.scorej0) cout“姓名:”studi.stname“ 學號:”studi.st
44、no“ 不及格門數(shù):cntendl; cout=endl;for(j=0;j5;j+)if(studi.scorej60)coutcoursej:studi.scorejendl; cout=endl;return 0;114【運行結果】每個同學的成績: 學號 姓名 數(shù)學 物理 化學 英語 計算機=08091101 張品 76 87 69 76 7808091102 李利 97 67 79 45 9008091103 應一利 54 69 76 79 5608091104 周勤 87 88 97 99 7608091105 吳風 69 56 98 34 3208091106 趙強 77 87 9
45、9 65 7608091107 李力平 91 67 67 87 6508091108 張軍利 87 45 77 56 7908091109 馮紅 100 69 89 89 7608091110 孫李 99 76 97 96 79=115不及格同學的課程和成績如下:姓名:李利 學號:08091102 不及格門數(shù):1=英語:45=姓名:應一利 學號:08091103 不及格門數(shù):2=數(shù)學:54計算機:56=姓名:吳風 學號:08091105 不及格門數(shù):3=物理:56英語:34計算機:32116=姓名:張軍利 學號:08091108 不及格門數(shù):2=物理:45英語:56=117【思路擴展】如果要求
46、找出5門課程都及格的同學,程序應該如何修改?118【例6-13】定義公民類Citizen,其中Citizen類所包括的內容有:身份證號id、姓名name、性別gende、年齡age;、籍貫birthplace、家庭住址familyAddress等變量,至少兩種構造函數(shù),析構函數(shù),修改這六個變量值的函數(shù)set,輸入和顯示公民信息的函數(shù)input和output?!締栴}分析】成員函數(shù)的實現(xiàn)?!舅惴枋觥慷xCitizen類119【源程序】#include #include using namespace std;class Citizenpublic:Citizen ()set( 1234 , 張一
47、 , m, 18 , 陜西省 , 西安市 );Citizen (char id,char name,char gender,int age,char birthplace,char familyAddress)set( id,name,gender,age,birthplace,familyAddress );Citizen ()120void set (char id,char name,char gender,int age,char birthplace,char familyAddress)strcpy(this-id,id) ;strcpy(this-name,name) ;this
48、-gender=gender ;this-age=age ;strcpy(this-birthplace,birthplace) ;strcpy(this-familyAddress,familyAddress) ;121void input()cout請輸入以下數(shù)據:endl ;cout身份證號t ;cout姓名t ;cout性別t ;cout年齡t ;cout籍貫t ;cout家庭住址this-id ;cinthis-name ;cinthis-gender ;cinthis-age ;cinthis-birthplace ;cinthis-familyAddress ;122void o
49、utput()cout身份證號t ;cout姓名t ;cout性別t ;cout年齡t ;cout籍貫t ;cout家庭住址endl ;coutidt ;coutnamet ;coutgendert ;coutaget ;coutbirthplacet ;coutfamilyAddressid,id) ;char * getID()return this-id ;126(2) 可否把全部成員函數(shù)定義在類之外,比如對于set函數(shù)的定義可以改為以下形式:在類中進行聲明:void set (char id,char name,char gender,int age,char birthplace,c
50、har familyAddress);在類外進行定義:void Citizen:set (char id,char name,char gender,int age,char birthplace,char familyAddress)strcpy(this-id,id) ;strcpy(this-name,name) ;this-gender=gender ;this-age=age ;strcpy(this-birthplace,birthplace) ;strcpy(this-familyAddress,familyAddress) ;127【例6-14】定義學生成績信息類Info,包括
51、學號Id、姓名Name、程序設計課程成績Programing、計算機網絡課程成績Network、數(shù)據庫課程成績Database,總分Total以及設置信息函數(shù)函數(shù)Set_info、取程序設計課程成績函數(shù)Get_Pro、取計算機網絡課程成績函數(shù)Get_Net、取數(shù)據庫課程成績函數(shù)Get_Dat、取總分成績函數(shù)Get_Tol、顯示信息函數(shù)Show。編寫程序顯示3門課程總分從高到低的排名和每門課程成績都大于85分的學生名單?!締栴}分析】定義Info類以及在主程序中按要求獲取對象的信息?!舅惴枋觥繉σ奄x值的類對象按總分排序并查找滿足條件的類對象。128【源程序】#include #include u
52、sing namespace std;class Infoint Id;char Name20;int Programming;int Network;int Database;int Total;129public:void Set_info(int id,char *name,int programming,int network,int database);int Get_Pro();int Get_Net();int Get_Dat();int Get_Tol();void Show();void Info:Set_info(int id,char *name,int programm
53、ing,int network,int database)Id=id;strcpy(Name,name);Programming=programming;Network=network;Database=database;Total=programming+network+database;130int Info:Get_Pro()return Programming;int Info:Get_Net()return Network;int Info:Get_Dat()return Database;int Info:Get_Tol()return Total;void Info:Show()
54、coutId”t”;coutName”t”;coutProgramming”t”;coutNetwork”t”;coutDatabase”t”;coutTotalendl;131int main()const int COUNT=5;int i=0,j=0;int id;char name20;int programming;int network;int database;Info studentCOUNT,tmp;cout”請輸入學生成績的信息”endl;cout”學號 姓名 程序設計 計算機網絡 數(shù)據庫”endl;for(i=0;iidnameprogrammingnetworkdata
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025浙江溫州甌海招商發(fā)展有限公司招聘1人備考題庫及答案詳解一套
- 2026江西九江市贛北勞動保障事務代理所招聘勞務派遣制員工22人備考題庫含答案詳解
- 安徽2025年安徽寧國市招聘25名社區(qū)工作者筆試歷年參考題庫附帶答案詳解
- 2026廣東茂名市電白區(qū)城鎮(zhèn)公益性崗位招聘2人備考題庫(第一批)含答案詳解
- 四川2025年四川大學校聘非事業(yè)編制崗位招聘26人(第一批)筆試歷年參考題庫附帶答案詳解
- 2026山東淄博市淄川區(qū)事業(yè)單位招聘教師20人備考題庫及參考答案詳解1套
- 合肥2025年先進技術協(xié)創(chuàng)中心(合肥)春季招聘筆試歷年參考題庫附帶答案詳解
- 2026中國中煤黨校招聘8人備考題庫及參考答案詳解1套
- 上海上海市水產研究所(上海市水產技術推廣站)2025年第三輪招聘博士研究生筆試歷年參考題庫附帶答案詳解
- 2025吉林長春市消防救援支隊南部都市經濟開發(fā)區(qū)大隊計劃招錄政府專職消防員183人備考題庫帶答案詳解
- 2025年職教高考試題內容及答案
- 《人生三修》讀書分享會
- 骨科老年患者譫妄課件
- 《熱力管道用金屬波紋管補償器》
- 2025年中國汽輪機導葉片市場調查研究報告
- 中班幼兒戶外游戲活動實施現(xiàn)狀研究-以綿陽市Y幼兒園為例
- 特色休閑農場設計規(guī)劃方案
- 采購部門月度匯報
- 新華書店管理辦法
- 檔案專業(yè)人員公司招聘筆試題庫及答案
- 工程竣工移交單(移交甲方、物業(yè))
評論
0/150
提交評論