版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、華南理工大學計算機學院高級語言程序設計(C+ II)試卷學生證號:_ 姓名: _【注意事項】 1. 嚴格遵守考場紀律,考試時間120分鐘。 2. 試卷共6頁。答卷上必須填寫參考人所屬的學院名稱、專業(yè)及本人姓名。3. 試題總分100分。所有作答必須按題號對應填寫在答卷上,否則無效。4. 考試結(jié)束,試卷、答卷和草稿紙必須完整無損地一起遞交。一、給出一個有理數(shù)類,實現(xiàn)有理數(shù)的加法運算。請按后列要求作答。1仔細、完整地閱讀程序,對應題號填寫注釋。注釋的內(nèi)容包括兩部分:1.本行的語句是什么;2.簡述其功能或特點。例如,注釋可以這樣寫:“友員函數(shù);重載加法運算符(+)?!?(每小題1分,共10 分)#in
2、clude<iostream.h>#include<math.h>#include<iomanip.h>class Rational private:int numerator,denominator; /(例)數(shù)據(jù)成員;表示一個有理數(shù)的分子、分母。int maxcommonFactor(int,int); /(1) void simplify( ); /(2) void DtoF(double,int&,int&); /(3) public: Rational(int n,int d=1); /(4) Rational(double x=0
3、); /(5) Rational(); /(6) void plus(const Rational&); /(7) Rational operator + (const Rational&); /(例)公有成員函數(shù);重載加法運算符(+)。 void showFraction( ); /(8) operator double( ); /(9) friend ostream &operator<< /(10) (ostream &output, Rational &t);2 對應題號把函數(shù)的定義補充完整。(每小題3分,共9 分)int Ratio
4、nal:maxcommonFactor(int a,int b) if(a%b=0)return b; return (11) ;void Rational:simplify( ) int temp=maxcommonFactor(abs(numerator),abs(denominator); if(temp=1)return; numerator/=temp;denominator/=temp; return;void Rational:DtoF(double x,int & n,int & d) double s=fabs(x); d=1; while(s*d-int(s
5、*d)>1e-15)d*=10;n=int(x*d);Rational:Rational(int n,int d) if(d=0) cout<<"錯誤! 分母不能為0。有理數(shù)將置為0。"<<endl; numerator=0; denominator=1; else (12) ; ; simplify(); Rational:Rational(double x) DtoF(x,numerator,denominator);simplify();Rational:Rational( ) void Rational:plus(const Ratio
6、nal& addend) numerator=addend.numerator*denominator+addend.denominator*numerator; denominator*=addend.denominator; simplify();Rational Rational:operator + (const Rational& t) Rational temp(0,1); temp.numerator=numerator*t.denominator+denominator*t.numerator; temp.denominator=denominator*t.de
7、nominator; temp.simplify(); return temp;void Rational:showFraction( ) if(numerator<0 && denominator<0 | numerator>=0 && denominator>0) cout<<abs(numerator)<<"/"<<abs(denominator); else cout<<"-"<<abs(numerator)<<&quo
8、t;/"<<abs(denominator);Rational:operator double() return (13) ;ostream &operator <<(ostream &output, Rational &t) output<<t.numerator<<'/'<<t.denominator; return output;void main() Rational a; cout<<double(a); cout<<endl; Rational b(
9、2,0); b.showFraction(); cout<<endl; Rational c(3,4); c.showFraction(); cout<<endl; Rational d(1.2); d.showFraction(); cout<<endl; a=b+c; cout<<double(a); cout<<endl;3. 根據(jù)題目要求,按對應題號作答。(每小題3分,共21分)·寫出上述程序的運行結(jié)果。 (14) ·在上述程序中,使用成員函數(shù)重載加法運算符(+)?,F(xiàn)假設要改用友員函數(shù)重載加法運算符(+),
10、下面給出了函數(shù)體,請寫出相應的函數(shù)原型(聲明)和函數(shù)頭。函數(shù)原型 (15) 函數(shù)頭 (16) 函數(shù)體 Rational temp(0,1); temp.numerator=t1.numerator*t2.denominator+t1.denominator*t2.numerator; temp.denominator=t1.denominator*t2.denominator; temp.simplify(); return temp; ·在上述程序中,構造函數(shù)出現(xiàn)重載,我們按其定義的先后分別稱為構造函數(shù)1和構造函數(shù)2。注意到main函數(shù)中依次定義了對象a,b,c,d。請你分別寫出這
11、四個對象的初始化各自調(diào)用的是哪一個構造函數(shù)。 對象a初始化: (17.a) ; 對象b初始化: (17.b) ;對象c初始化: (17.c) ; 對象d初始化: (17.d) ;·在上述程序中,請你補充一個復制構造函數(shù)的定義,要求用內(nèi)聯(lián)函數(shù)實現(xiàn)。(18) 復制構造函數(shù)和重載賦值運算符函數(shù)雖然都是實現(xiàn)數(shù)據(jù)成員的復制,但執(zhí)行時機不同。復制構造函數(shù)通常用于(19.a) 和傳遞對象參數(shù),當函數(shù)返回類類型時,也要通過復制構造函數(shù)建立臨時對象;重載賦值運算符函數(shù)用于(19.b) 。·假設在上述程序的基礎上,于main函數(shù)末尾處添加一行:for(int i=0;i<=1;i+)c.
12、plus(c+d); cout<<double(c)<< ','<< double(d)<<endl; 寫出這段語句的運行結(jié)果。 (20) 二、給出一些類的定義,按要求作答。1. (每小題3分,共18分)/類A#include<iostream.h>class A private: double x;public: A(double px=1):x(px) double getx( ) const return x; void show( )cout<<"x="<<x<
13、<endl; ;/類B私有繼承類A,類B的定義及main函數(shù)如下:class B: private A private: double x;public : B(double px=2): x(px) /類B構造函數(shù)定義 void show( )cout<<getx( )<<endl; ;void main( ) A a; a.show( ); B b(3); b.show( ); ·執(zhí)行上述程序,運行結(jié)果為: (21) ·若把類B構造函數(shù)定義改為 B(double px=2):A(px) ,則程序運行結(jié)果為: (22) · 改寫上述
14、程序中的類B構造函數(shù)定義 B(double px=2): x(px) 。要求不使用“初始化式”,但函數(shù)的功能不變,且內(nèi)聯(lián)函數(shù)的形式也不變。按要求,類B構造函數(shù)定義可以改寫成:(23) ·有時需要復制A類對象的數(shù)據(jù)去創(chuàng)建B類對象,請用內(nèi)聯(lián)函數(shù)的形式寫出類B的重載構造函數(shù):(24) ·假設在上述main函數(shù)的末尾添加一句:cout<<b.getx( )<<endl; 因getx( )私有,不可訪問。請你在類B的定義中作一聲明,保持getx( )仍為公有,使添加的語句可以運行。該聲明為:(25) ·在類B公有段增加一個內(nèi)聯(lián)函數(shù)fetch的定義,其
15、功能是返回B類對象數(shù)據(jù)x的平方值。(26) 2 (每小題3分,共18分)下列程序中,類B1,B2虛繼承類A,類C多繼承B1,B2。按題目要求作答。注意A為虛基類,建立間接派生類對象時,只有一個a對象的數(shù)據(jù)成員版本。#include<iostream.h>class A/長度x,y public: double x,y; A(double px=1,double py=1):x(px),y(py) virtual A( ) void show( )cout<<"A =>"<<x<<","<<
16、y<<endl; ;class B1: virtual public A /矩形面積 public : B1(double px=2, double py=2):A(px,py) void show()cout<<"B1=>"<<x*y<<endl; ;class B2: virtual public A /梯形面積 public: double z; B2(double px=3, double py=3, double pz=3):A(px,py),z(pz)void show()cout<<"
17、B2=>"<<0.5*(x+y)*z<<endl; ;class C: public B1, public B2 /體積 public:double h;C(double px=4,double py=4,double pz=4,double ph=4):B2(px,py,pz),h(ph)void show()cout<<"C =>"<<x<<","<<y<<"/"<<x*y*h<<"/&quo
18、t;<<0.5*(x+y)*z*h<<endl; ;void main() A a; B1 b1; B2 b2; C c; A* p=&a; p->show( ); p=&b1; p->show( ); p=&b2; p->show( ); p=&c; p->show( );·寫出上述程序的運行結(jié)果。 (27) ·在類A的show函數(shù)之前加上關鍵字virtual,再寫出上述程序的運行結(jié)果。 (28) ·在(28)題基礎上,于原main 函數(shù)的末尾添加 (B2)c).show( ); 結(jié)
19、果將多顯示一行: (29) ·把類A的show函數(shù)改寫成純虛函數(shù)。 (30) ·若類A的show函數(shù)改寫成純虛函數(shù),原來的main函數(shù)不能正常運行,為什么?請簡單說明理由。 (31) ·類A的show函數(shù)改寫成純虛函數(shù)后,請你對原來的main函數(shù)作簡單的刪改,使其可以輸出派生類的數(shù)據(jù)。 (32) 三、給出一些關于使用模板的程序段,按要求作答。1下列程序用函數(shù)模板實現(xiàn)兩個數(shù)據(jù)的交換,請把有關的語句填充完整。(每小題3分,共9分)#include<iostream.h>template <(33) >void swap(34) ) (35) v
20、oid main() int j=1,k=3; cout<<"int 數(shù)據(jù)類型:n"<<j<<","<<k<<"=>" swap(j,k); cout<<j<<","<<k<<endl; double x=1.23,y=9.87; cout<<"double數(shù)據(jù)類型: n"<<x<<","<<y<<&qu
21、ot;=>" swap(x,y); cout<<x<<","<<y<<endl; char p='A',q='B' cout<<"char 數(shù)據(jù)類型:n"<<p<<","<<q<<"=>" swap(p,q); cout<<p<<","<<q<<endl ;2下列程序使用了向量vector
22、和算法sort實現(xiàn)數(shù)組的排序,請把有關的語句填充完整。(每小題3分,共9分)#include<iostream>#include<vector>#include<algorithm>using (36) ;const int size=10;void display(vector<int>V,int n) int i;for(i=0;i<size;i+) cout<<(37) <<" " cout<<endl;bool down(int x,int y) return (38) ;vo
23、id main( ) int asize=10,3,17,6,15,8,13,34,25,2; vector<int>V(a,a+size); / 用數(shù)組對模板向量賦初值 cout<<"輸出原始數(shù)組: n" display(V,size); sort(V.begin( ),V.end( ); / 對向量按升序排序 cout<<"輸出升序排列后的數(shù)組: n" ; display(V,size); sort(V.begin( ),V.end( ),down); / 對向量按降序排序 cout<<"輸出
24、降序排列后的數(shù)組: n" ; display(V,size);四、給出一個輸入輸出流操作的程序段,請把有關的語句填充完整。(每小題3分,共6分)#include <iostream.h>#include <fstream.h>#include <stdlib.h>void main( ) ofstream outstuf ; / 建立輸出文件流對象 outstuf.open("e:newfile.dat",(39) ); if(!outstuf)cerr<<"error!"<<endl
25、;abort( ); / 調(diào)用重載算符函數(shù)測試流 outstuf<<"This is a file of example.n" / 寫入一行內(nèi)容 outstuf (40) ; 華南理工大學計算機學院高級語言程序設計(C+)試卷參考答案一、1(每小題1分,共10 分) (1) 私有成員函數(shù);求兩個整數(shù)的最大公因子。 (2) 私有成員函數(shù);分數(shù)約簡。 (3) 私有成員函數(shù);小數(shù)轉(zhuǎn)換為分數(shù)。 (4) 構造函數(shù);參數(shù)為分子、分母形式。 (5) 重載構造函數(shù);參數(shù)為小數(shù)形式。 (6) 析構函數(shù);對象的釋放清理。 (7) 公有成員函數(shù);實現(xiàn)加法運算。 (8) 公有成員函數(shù);
26、以分數(shù)形式輸出有理數(shù)。 (9) 類型轉(zhuǎn)換函數(shù);把分數(shù)形式的對象轉(zhuǎn)換成小數(shù)。 (10) 友員函數(shù);重載插入運算符(<<)。2(每小題3分,共9分)(11) maxcommonFactor(b,a%b) ;(12) numerator=n ; denominator=d ;(13) double(numerator)/double(denominator) ;3.(每小題3分,共21分)(14) 0 錯誤! 分母不能為0。有理數(shù)將置為0。 0/1 3/4 6/50.75(15) friend Rational operator + (const Rational &t1,const Rational &t2);(16) Rational operator + (const Rational &t1, const Rational &t2) (17.a)構造函數(shù)2; (17.b)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力安裝行業(yè)財務制度
- 就業(yè)資金管理財務制度
- 企業(yè)注冊財務制度
- 煤礦工會財務制度
- 餐飲服務公司財務制度
- 農(nóng)藥經(jīng)營八個制度
- 關于急危重患者搶救制度
- 公司報銷流程制度
- 養(yǎng)老院老人健康監(jiān)測人員職業(yè)發(fā)展規(guī)劃制度
- 富士康夜班管理制度(3篇)
- DB21T 3414-2021 遼寧省防汛物資儲備定額編制規(guī)程
- 2024年度中國LCOS行業(yè)研究報告:廣泛應用于投影、AR/VR、車載HUD的微顯示技術
- 2024金屬材料彎曲試驗方法
- 代謝相關(非酒精性)脂肪性肝病防治指南(2024年版)解讀
- DB11-T 1253-2022 地埋管地源熱泵系統(tǒng)工程技術規(guī)范
- 2024-2029年滴漏式咖啡機行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃投資研究報告
- 《審計法》修訂解讀
- 江蘇省姜堰市勵才實驗學校2024屆七年級數(shù)學第一學期期末經(jīng)典試題含解析
- 我國歷史文化名城保護面臨的沖擊與對策
- 白油化學品安全技術說明書
- 馬鞍山市恒達輕質(zhì)墻體材料有限公司智能化生產(chǎn)線環(huán)保設施改造項目環(huán)境影響報告表
評論
0/150
提交評論