




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 / 13分析以下程序的執(zhí)行結(jié)果 #include<iostream.h> class Sample int n; public: Sample(int i)n=i; friend int add(Sample &s1,Sample &s2); ; int add(Sample &s1,Sample &s2) return s1.n+s2.n; void main() Sample s1(10),s2(20); cout<<add(s1,s2)<<endl; 解: 本題說明了友元函數(shù)的使用方法。add()是一個(gè)友元函數(shù),它返
2、回兩個(gè)引用對(duì)象的n值之和。 所以輸出為: 30 注意:友元函數(shù)不是類的成元函數(shù) - 02.分析以下程序的執(zhí)行結(jié)果 #include<iostream.h> class B; class A int i; public: int set(B&); int get()return i; A(int x)i=x; ; class B int i; public: B(int x)i=x; friend A; ; int A:set(B &b) / 由于使用了類B的定義,故本函數(shù)的定義應(yīng)放在類B定義之后 return i=b.i; void main() A a(1); B
3、 b(2); cout<<a.get()<<"," a.set(b); cout<<a.get()<<endl; 解: 本題說明友元類的使用方法。這里將類A設(shè)置為類B的友元類,因此,類A的所有成員函數(shù)均為類B的友元函數(shù)。通過調(diào)用a.set(b)將b對(duì)象的i值賦給a對(duì)象的i值。 所以輸出為:1,2 - 03.有一個(gè)學(xué)生類student,包括學(xué)生姓名、成績(jī),設(shè)計(jì)一個(gè)友元函數(shù),比較兩個(gè)學(xué)生成績(jī)的高低,并求出最高分和最低分的學(xué)生。 解: #include<iostream.h> #include<string.h&g
4、t; class student char name10; int deg; public: student(char na,int d) strcpy(name,na); deg=d; char *getname() return name; friend int compare(student &s1,student &s2) if(s1.deg>s2.deg) return 1; else if(s1.deg=s2.deg) return 0; else return -1; ; void main() student st=student("王華&quo
5、t;,78),student("李明",92),student("張偉",62),student("孫強(qiáng)",88); int i,min=0,max=0; for(i=1;i<4;i+) if(compare(stmax,sti)=-1) max=i; else if(compare(sti,stmin)=1) min=i; cout<<"輸出結(jié)果:"<<endl; cout<<" 最高分:"<<stmax.getname()<<
6、endl; cout<<" 最低分:"<<stmin.getname()<<endl; 本程序的執(zhí)行結(jié)果如下: 輸出結(jié)果: 最高分者:李明 最低分者:張偉 - 04.有一個(gè)學(xué)生類student,包括學(xué)生姓名、成績(jī),設(shè)計(jì)一個(gè)友元函數(shù),輸出成績(jī)對(duì)應(yīng)的等級(jí):大于等于90:優(yōu);8090:良;7079:中;60!69:及格;小于60:不及格。 解: #include<iostream.h> #include<string.h> #include<iomanip.h> class student char name
7、10; int deg; char level7; public: student(char na,int d) strcpy(name,na); deg=d; char *getname() return name; friend void trans(student &s) if(s.deg>=90) strcpy(s.level,"優(yōu)"); else if(s.deg>=80) strcpy(s.level,"良"); else if(s.deg>=70) strcpy(s.level,"中"); el
8、se if(s.deg>=60) strcpy(s.level,"及格"); else strcpy(s.level,"不及格"); void disp() cout<<setw(10)<<name<<setw(6)<<deg<<setw(8)<<level<<endl; ; void main() student st=student("王華",78),student("李明",92),student("張偉&qu
9、ot;,62),student("孫強(qiáng)",88); cout<<"輸出結(jié)果:"<<endl; cout<<setw(10)<<"姓名"<<setw(6)<<"成績(jī)"<<setw(8)<<"等級(jí)"<<endl;05.設(shè)計(jì)一個(gè)類Sample,它有兩個(gè)私有成員A和n(A中元素個(gè)數(shù)),將對(duì)A中數(shù)據(jù)進(jìn)行各種排序的函數(shù)放入到一個(gè)友元類process中。 解: process類不包含任何數(shù)據(jù)成員,包含的
10、公共成員函數(shù)如下: getdata(Sample &s); 用于獲取對(duì)象s的數(shù)據(jù) insertsort(Sample &s); 用于進(jìn)行插入排序 shellsort(Sample &s); 用于進(jìn)行希爾排序 bubblesort(Sample &s); 用于進(jìn)行冒泡排序 quicksort(Sample &s); 用于進(jìn)行快速排序 selectsort(Sample &s); 用于進(jìn)行選擇排序 disp(Sample &s); 用于輸出數(shù)據(jù) 本題程序如下: #include<iostream.h> #define Max 10
11、0 class Sample int AMax; int n; friend class process; public: Sample()n=0; ; class process void qsort(Sample &s,int l,int h); / 私有成員,由quicksort()成員調(diào)用 public: void getdata(Sample &s); void insertsort(Sample &s); void shellsort(Sample &s); void bubblesort(Sample &s); void quicksort
12、(Sample &s); void selectsort(Sample &s); void disp(Sample &s); ; void process:getdata(Sample &s) int i; cout<<"元素個(gè)數(shù):" cin>>s.n; for(i=0;i<s;i+) cout<<"輸入第"<<i+1<<"個(gè)數(shù)據(jù):" cin>>s.Ai; void process:insertsort(Sample &
13、;s) / 插入排序 int i,j,temp; for(i=1;i<s.n;i+) temp=s.Ai; j=i-1; while(temp<s.Aj) s.Aj+1=s.Aj; j-; s.Aj+1=temp; void process:shellsort(Sample &s) / 希爾排序 int i,j,gap,temp; gap=s.n/2; while(gap>0) for(i=gap;i<s;i+) j=i-gap; while(j>=gap) if(s.Aj>s.Aj+gap) temp=s.Aj; s.Aj=s.Aj+gap; s.
14、Aj+gap=temp; j=j-gap; else j=0; gap=gap/2; void process:bubblesort(Sample &s) / 冒泡排序 int i,j,temp; for(i=0;i<s.n;i+) for(j=s.n-1;j>=i+1;j-) if(s.Aj<s.Aj-1) temp=s.Aj; s.aj=s.Aj-1; s.Aj-1=temp; void process:quicksort(Sample &s) / 快速排序 qsort(s,0,s.n-1); void process:qsort(Sample &
15、s,int l,int h) int i=l,j=h,temp; if(l<h) temp=s.Al; do while(j>i&&s.Aj>=temp) j-; if(i<j) s.Ai=s.Aj; i+; while(i<j&&s.Ai<=temp) i+; if(i<j) s.Aj=s.Ai; j-; while(i<j); s.Ai=temp; qsort(s,l,j-1); qsort(s,j+1,h); void process:selectsort(Sample &s) / 選擇排序 int
16、i,j,k,temp; for(i=0;i<s.n;i+) k=i; for(j=i+1;j<=s.n-1;j+) if(s.Aj<s.Ak) k=j; temp=s.Ai; s.Ai=s.Ak; s.Ak=temp; void process:disp(Sample &s) for(int i=0;i<s.n;i+) cout<<s.Ai<<" " cout<<endl; void main() int sel; Sample s; process p; p.getdata(s); cout<<
17、;"原來序列:" p.disp(s); cout<<"0:插入排序 1:希爾排序 2:冒泡排序 3:快速排序 4:選擇排序 其它退出"<<endl; cout<<"選擇排序方法:" cin>>sel; switch(sel) case 0: p.insertsort(s); cout<<"插入排序結(jié)果:"題1.分析以下程序的執(zhí)行結(jié)果 #include<iostream.h> class Sample int n; public: Sample(
18、) Sample (int m)n=m; friend void square(Sample &s) s.n=s.n*s.n; void disp() cout<<"n="<<n<<endl; ; void main() Sample a(10); square(a); a.disp(); 解: 本題應(yīng)用友元函數(shù)修改對(duì)象的數(shù)據(jù)成員。square()是一個(gè)友元函數(shù),它將引用對(duì)象的n值進(jìn)行平方計(jì)算。 所以輸出為:100 - 題2.分析以下程序的執(zhí)行結(jié)果 #include<iostream.h> class B; class
19、 A int i; friend B; void disp()cout<<i<<endl; ; class B public: void set(int n) A a; a.i=n; / i是對(duì)象a的私有數(shù)據(jù)成員,在友元類可以使用 a.disp(); / disp()是對(duì)象a的私有成員函數(shù),在友元類可以使用 ; void main() B b; b.set(2); 解: 本題說明友元類的設(shè)計(jì)方法。這里將類B設(shè)置為類A的友元類,因此,在設(shè)計(jì)類B時(shí)可以直接使用類A的私有數(shù)據(jù)成員和成員函數(shù)。 所以輸出為: 2 - 題3.分析以下程序的執(zhí)行結(jié)果 #include<iost
20、ream.h> class teacher; class student char *name; public: student(char *s)name=s; friend void print(student &,teacher &); ; class teacher char *name; public: teacher(char *s)name=s; friend void print(student &,teacher &); ; void print(student &a,teacher &b) cout<<&quo
21、t;the student is:"<<<<endl; cout<<"the teacher is:"<<<<endl; void main() student s("Li Hu"); teacher t("Wang Ping"); print(s,t); 解: student和teacher類共用一個(gè)友元函數(shù)的實(shí)現(xiàn)。 所以輸出為: the student is Li Hu the teacher is Wan Ping - 題4.有一個(gè)學(xué)生
22、類student,包括學(xué)生姓名、成績(jī),設(shè)計(jì)一個(gè)友元類,輸出成績(jī)大于等于80分以上者。 解: 學(xué)生類student的disp()函數(shù)設(shè)計(jì)成友元函數(shù)。 本題程序如下: #include<iostream.h> #include<string.h> #include<iomanip.h> class student char name10; int deg; public: student(char na,int d) strcpy(name,na); deg=d; char *getname() return name; friend void disp(student &s) if(s.deg>=80) cout<<setw(10)<<&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位外派學(xué)習(xí)協(xié)議書
- 南北掛鉤深化協(xié)議書
- 2025年中級(jí)會(huì)計(jì)實(shí)務(wù)考試參與式學(xué)習(xí)方法與試題答案
- 合伙買船經(jīng)營(yíng)協(xié)議書
- 員工干股持股協(xié)議書
- 合伙模具合同協(xié)議書
- 合同能源管理協(xié)議書
- 加盟合作入股協(xié)議書
- 合同協(xié)議賠償協(xié)議書
- 2025年養(yǎng)老服務(wù)中心設(shè)施適老化康復(fù)設(shè)施評(píng)估報(bào)告
- 基于高光譜成像的青稞品種鑒別和特征品質(zhì)無損檢測(cè)技術(shù)研究
- 2024年山東省政府采購評(píng)審專家考試真題100個(gè)題及答案
- 2025年合肥市公安局第一批招考聘用警務(wù)輔助人員591人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 醫(yī)院培訓(xùn)課件:《醫(yī)務(wù)人員職業(yè)暴露及安全防護(hù)》
- 煤質(zhì)化驗(yàn)工職業(yè)技能競(jìng)賽理論考試題及答案
- DB52T 1512-2020 水利水電工程隧洞施工超前地質(zhì)預(yù)報(bào)技術(shù)規(guī)程
- 15J403-1-樓梯欄桿欄板(一)
- 部編版四年級(jí)語文下冊(cè)1-8單元詞語、課文默寫練習(xí)卷
- 《數(shù)學(xué)課程標(biāo)準(zhǔn)》義務(wù)教育2022年修訂版(原版)
- GB/T 1148-2024內(nèi)燃機(jī)鋁活塞
- 宣傳用品供貨制供應(yīng)商采購?fù)稑?biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論