上海交通大學(xué)試卷(A卷) 2007-2008學(xué)年第二學(xué)期 程序設(shè)計(jì)(2) (參考答案 by ccz hust)_第1頁(yè)
上海交通大學(xué)試卷(A卷) 2007-2008學(xué)年第二學(xué)期 程序設(shè)計(jì)(2) (參考答案 by ccz hust)_第2頁(yè)
上海交通大學(xué)試卷(A卷) 2007-2008學(xué)年第二學(xué)期 程序設(shè)計(jì)(2) (參考答案 by ccz hust)_第3頁(yè)
上海交通大學(xué)試卷(A卷) 2007-2008學(xué)年第二學(xué)期 程序設(shè)計(jì)(2) (參考答案 by ccz hust)_第4頁(yè)
上海交通大學(xué)試卷(A卷) 2007-2008學(xué)年第二學(xué)期 程序設(shè)計(jì)(2) (參考答案 by ccz hust)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 程序設(shè)計(jì)(2) 上 海 交 通 大 學(xué) 試 卷(a卷)( 2007 至 2008 學(xué)年 第_二_學(xué)期 )班級(jí)號(hào)_ 學(xué)號(hào)_ 姓名 課程名稱(chēng) 程序設(shè)計(jì) (2) 成績(jī) acm試點(diǎn)班上海交通大學(xué)c程序設(shè)計(jì)試卷 2007.1.13姓 名 學(xué) 號(hào) 成 績(jī) 一 選擇填空(10分)1c+對(duì)c語(yǔ)言作了很多改進(jìn),下列描述中 _ 使得c語(yǔ)言發(fā)生了質(zhì)變,從面向過(guò)程變成了面向?qū)ο?。a 增加了一些新的運(yùn)算符;b 允許函數(shù)重載,并允許設(shè)置缺省參數(shù);c 規(guī)定函數(shù)說(shuō)明必須用原型;d 引進(jìn)了類(lèi)和對(duì)象的概念;2 在一個(gè)單鏈表中,若s所指結(jié)點(diǎn)不是最后結(jié)點(diǎn),在s之后插入t所指結(jié)點(diǎn),則執(zhí)行 。 a. tnext = s; snext

2、= t; b. tnext = snext; snext = t; c. tnext = snext; s = t; d. snext = t; tnext = s;3下面敘述正確的是 。a抽象基類(lèi)中所有的virtual函數(shù)都必須聲明為純virtual函數(shù)b使用基類(lèi)指針引用一個(gè)派生類(lèi)的對(duì)象是非常危險(xiǎn)的c如果基類(lèi)申明了一個(gè)純virtual函數(shù),派生類(lèi)只有實(shí)現(xiàn)該函數(shù)才能成為具體類(lèi)。d一個(gè)類(lèi)中有virtual函數(shù),該類(lèi)就成為抽象類(lèi)。4 已知類(lèi)d是類(lèi)b的公有派生類(lèi),并且 d *pd, d ; b *pb; 不符合賦值兼容規(guī)則的是 。 a pb = pd; b pd = pb; c pb = &

3、d; d pd = &d;5. 下面敘述正確的是 。a“has-a”關(guān)于可以通過(guò)繼承實(shí)現(xiàn)。b派生類(lèi)不會(huì)繼承基類(lèi)的構(gòu)造函數(shù)。 c汽車(chē)類(lèi)car與車(chē)輪類(lèi)steeringwheel以及剎車(chē)裝置類(lèi)brakes之間是“is-a”關(guān)系。 d當(dāng)銷(xiāo)毀派生類(lèi)對(duì)象時(shí),析構(gòu)函數(shù)的調(diào)用順序和相應(yīng)的構(gòu)造函數(shù)的調(diào)用順序相同。我承諾,我將嚴(yán)格遵守考試紀(jì)律。承諾人: 題號(hào)得分批閱人(流水閱卷教師簽名處) 6c+支持兩種多態(tài),包括編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài),編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)分別通過(guò) 來(lái)實(shí)現(xiàn)。a 重載和虛函數(shù) b 重載和重載c 虛函數(shù)和重載 d 虛函數(shù)和虛函數(shù)7關(guān)于純虛函數(shù)和抽象類(lèi)的描述中,錯(cuò)誤的是 a 抽象類(lèi)只能作為基

4、類(lèi)使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類(lèi)給出 b 純虛函數(shù)是一個(gè)特殊的虛函數(shù),它沒(méi)有具體的實(shí)現(xiàn)c 一個(gè)基類(lèi)中說(shuō)明有純虛函數(shù),該基類(lèi)的派生類(lèi)一定不再是抽象類(lèi)。d 抽象類(lèi)是指具有純虛函數(shù)的類(lèi)8對(duì)類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是 a 構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載b 構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載c 構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也能重載d 構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重載9. 在下面四項(xiàng)中,不是用來(lái)限制類(lèi)中成員的訪問(wèn)權(quán)限的是 。 a. private b. public c. protect d. protected10. 在類(lèi)中說(shuō)明的友元函數(shù)是 。a. 可以訪問(wèn)該類(lèi)對(duì)象的私有成員的成員函數(shù)b.

5、 冠以關(guān)鍵詞friend說(shuō)明的一般函數(shù)c. 沒(méi)有this指針的成員函數(shù)d. 與靜態(tài)成員函數(shù)具有相同的功能二 讀程序,寫(xiě)結(jié)果(40分)(運(yùn)行一下就知道答案了)1(6分)class a int x,y; public: a(int xx=0,int yy=0):x(xx),y(yy) cout << "a." << x << " " << y<<endl; a() cout << "a." << x << " " <&

6、lt; y << endl; void put() cout << x << " " << y << endl; ;a* fun(int x, int y) a *p = new a(x,y); return p; int main() a *p1;p1 = fun(123,789);a a1; a1.put();delete p1;p1 = fun(333,999);cout << "程序結(jié)束: " << endl; return 0; 2。(6分)class coor

7、d friend coord operator+(coord &op); private: int x,y;public: coord(int i=0,int j=0); void print();coord:coord(int i,int j) x=i; y=j; void coord:print() cout << " x:" << x << ",y:" << y << endl; coord operator+(coord &op) +op.x; +op.y; return

8、 op;int main()coord ob(5,10);ob.print();+ob; ob.print();operator+(ob); ob.print();return 0;3. (6分)class a private:int a;public:a(int m) a = m;a() a=0;void seta(int x) a = x; void showa() cout << "a=" << a << endl;class b: public a private:int b;public:void setb(int x, int

9、 y) b = x; seta(y); void showb() showa(); cout << "b=" << b << endl;int main() b obj;obj.seta(53); obj.showa();obj.setb(53,58);obj.showb();return 0;4.(6分)class c_a public:c_a(char value) data = value;m_count+;cout << "object " << data <<"

10、constructor" <<endl;cout << "the number of objects is " << m_count << endl;c_a() cout <<"object " << data << " destructor" << endl;m_count-;private: char data;static int m_count;void func();int c_a:m_count = 0;int mai

11、n() c_a *pa = new c_a('a');func(); delete pa; func();return 0;void func() static c_a f('b'); c_a g('c');5(6分)class cautomobilepublic:cautomobile(const char *);virtual cautomobile() delete m_model;char * getmodel() const return m_model;virtual double price() const = 0;virtual

12、void display() const cout << getmodel() << "s price is undefined" << endl;private:char *m_model;cautomobile:cautomobile(const char *model) m_model = new charstrlen(model) + 1;strcpy(m_model,model);class ccar:public cautomobile public:ccar(const char *model,double price =

13、0.0): cautomobile(model), m_price(price) ;virtual double price() const return m_price;virtual void display() const cout << "car:" << cautomobile:getmodel() << "'s price is " << price() << endl; private:int m_price;void func1(const cautomobile &am

14、p;a ) cout << "in func1() "a.display();void func2(const cautomobile *a) cout << "in func2() "a->display();int main() ccar m("ferrari 430",300);cout<<"in main() "m.display(); func1(m); func2(&m);return 0;6. (4分)void func( int ) ;int mai

15、n() int i = 49;trywhile ( i > 0 ) func(i);cout << i << endl;i = i / 2 - 1; catch( int ex)cout << ex << endl; return 0;void func(int num ) if ( ! (num % 3) ) throw 3; else if ( !(num % 4) ) throw 5; 7(6分)class cdoor public:cdoor() cout << "door is up." <&

16、lt; endl;cdoor() cout << "door is down." << endl;class cwall public:cwall() cout << "wall is up." << endl;cwall() cout << "wall is down." << endl;class croom public:croom():m_door(),m_wall() cout << "room is up." <&

17、lt; endl;croom() cout << "room is down" << endl;private:cwall m_wall;cdoor m_door;int main() croom room;return 0;三 程序填空(30分)1 完成下列string類(lèi)的定義。請(qǐng)?zhí)羁?。?分)class string char *str; public: string(char *s)str = new charstrlen( s )+1; strcpy(str,s) ; string() delete str ; string &ope

18、rator=(string &s) if ( this=&s ) return *this; delete str ; str = new charstrlen(s.str)+1; strcpy(str, s.str); return *this ;2(4分)請(qǐng)?zhí)羁帐沟幂敵鰹椋?+3iclass complex int real; / 實(shí)部int imag; / 虛部public:complex(int r=0, int i=0) real=r ; imag=i ;void show() cout<<real<<"+"<<

19、imag<<"i"complex operator+() real+; return * this; ;int main() complex c(3,3); +c ; c.show() ; 3下列程序通過(guò)把函數(shù)distance定義為類(lèi)point的友元來(lái)實(shí)現(xiàn)計(jì)算兩點(diǎn)之間距離的功能,請(qǐng)完成程序(6分)class point public: friend float dis(point &p,point &q) ; point( float a, float b ) x = a;y = b;void print()cout << "

20、;x=" << x<< endl; cout << "y=" << y << endl;private: float x, y;float dis(point &p, point &q) float result; result=sqrt(q.x-p.x)*(q.x-p.x)+(q.y-p.y)*(q.y-p.y) ; cout << result << endl;return result;int main() point p(1,1), q(10,10);dis

21、(p,q);4. (8分)在空中補(bǔ)上語(yǔ)句使得輸出結(jié)果為class data 5class aclass data 5class bclass cclass dataint x;public:data(int x)data:x=x; cout<<"class data "<<x<<endl ;class adata d1;public:a(int x):d1(x) cout<<"class a"<<endl ;class b:public adata d2;public:b(int x):a(x)

22、,d2(x) cout<<"class b"<<endl ;class c:public bpublic:c(int x):b(x) cout<<"class c"<<endl int main() c object(5);return 0;5. (6分)補(bǔ)充函數(shù)max使得程序結(jié)果為the max of i,j is: 56the max of x1,x2 is: 56.56the max of y1,y2 is: 673.365 template <typename t> t max

23、 ( t a, t b ) return a>b ?a :b ;int main() int i = 10, j = 56;float x1 = 50.3, x2 = 56.56;double y1 = 673.365, y2 = 465.972;cout<<"the max of i,j is:"<<max(i,j)<<"n"cout<<"the max of x1,x2 is:"<<max(x1,x2)<<"n"cout<<"the max of y1,y2 is:"<<max(y1,y2)<<"n"return 0;四 編程題(20分)1編寫(xiě)一個(gè)出租車(chē)收費(fèi)類(lèi),創(chuàng)建該類(lèi)對(duì)象時(shí)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論