版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、成上海大學(xué)20152016學(xué)年度秋季學(xué)期試卷(A卷)績(jī)課程名:面向?qū)ο蟪绦蛟O(shè)計(jì)課程號(hào):08305121學(xué)分:5我保證遵守上海大學(xué)學(xué)生手冊(cè)中的上海大學(xué)考場(chǎng)規(guī)則,如有考試違紀(jì)、作 弊行為,愿意接受上海大學(xué)學(xué)生考試違紀(jì)、作弊行為界定及處分規(guī)定的紀(jì)律處分。應(yīng)試人 應(yīng)試人學(xué)號(hào) 應(yīng)試人所在院系題號(hào) 一 (20) 二(20)三(20)四(40)得分“ 一、判斷題(每小題2分,共20分)1 .類的構(gòu)造函數(shù)的函數(shù)名與類名相同,可以重載構(gòu)造函數(shù)。(,)2 .類的析構(gòu)函數(shù)可以被重載。(X)3 .重載運(yùn)算符函數(shù)不能改變運(yùn)算符的操作數(shù)個(gè)數(shù)、優(yōu)先級(jí)和結(jié)合方向。(,)4 .引用在聲明時(shí)必須對(duì)其初始化,以綁定某個(gè)已經(jīng)存在的變
2、量(或?qū)ο螅?,在該引用的生命期?nèi),該綁定不能被更改。(,)5 .指針變量在定義時(shí)必須對(duì)其初始化,以鎖定某個(gè)已經(jīng)存在的目標(biāo)變量(或?qū)ο螅谠撝羔樧兞康纳趦?nèi),該指向不能被更改。(X)6 .類的非靜態(tài)成員函數(shù)均有一個(gè)隱含的形式參數(shù) this 指針常量,用于指向調(diào)用該函數(shù)的對(duì)象。函數(shù)體中不能改變?cè)撝羔槼A康闹赶颍存i定調(diào)用該函數(shù)的對(duì)象)。(,)7 .派生類繼承了基類的所有數(shù)據(jù)成員,并且在派生類的成員函數(shù)中都能直接訪問(wèn)基類的訪問(wèn)屬性為private 的成員。(X)8 .構(gòu)造派生類對(duì)象時(shí),先調(diào)用基類的構(gòu)造函數(shù),后執(zhí)行派生類的構(gòu)造函數(shù)。析構(gòu)派生類對(duì)象時(shí),先調(diào)用基類的析構(gòu)函數(shù),后執(zhí)行派生類的析構(gòu)函數(shù)。(
3、x)9 .含純虛函數(shù)的類稱為抽象類,不能創(chuàng)建抽象類的對(duì)象,不能定義抽象類的指針變量,不能聲明抽象類的引用。(x)10 .引用返回的函數(shù)可以作左值,也避免了函數(shù)值返回時(shí)創(chuàng)建與返回類型相同的臨時(shí)無(wú)名對(duì)象。二、填空題(每空2分,共20分)如下設(shè)計(jì)了一個(gè)字符串類String , 請(qǐng)根據(jù)運(yùn)行結(jié)果,完成程序。#include <iostream>#include <cstring>#include <string> using namespace class String ( public :char *str="") str );new char
4、size : NULL;String( const (size = strlen( x = size>0 ?if (x=NULL) size = 0;for (int i=0; i<size; i+) xi = stri;)String( const String &s) : x( NULL ) (*this = s;/直接利用深賦值運(yùn)算符函數(shù)) virtual -String() (if (x!=NULL) delete 口 x;size = 0;)String & operator =( const String &s)(if (this = &
5、s )return * thisif (x!=NULL) delete x;size = s.size;x = new char size;if (x=NULL) size = 0;for (int i=0; i<size; i+)xi = s.xi;return *this ;) char & operator ( int index) return xindex; friend ostream & operator <<(ostream &out, const String &s) for (int i=0; i<s.size; i+
6、) out << s.xi;return out ;) friend istream & operator >>(istream &in, String &s)(string str;in >> str;/利用C+字符串s = String(str.c_str();/利用深賦值運(yùn)算符return in;)friend int Compare( const String &s1, const String &s2) (int i;for (i=0; i<s1.size && i<s2.size
7、 && s1.xi=s2.xi; i+)Jif (i<s1.size && i<s2.size)return s1.xi > s2.xi ? 1 : -1;elseif (i<s1.size && i=s2.size)return 1;elseif (i=s1.size && i<s2.size)return -1;elsereturn 0;const String &s2)const String &s2)const String &s2)const String &
8、s2)const String &s2)const String &s2)friend bool operator<( const String &s1, return Compare(s1, s2) < 0; friend bool operator<=( const String &s1, return Compare(s1, s2) <= 0;friend bool operator>( const String &s1, return Compare(s1, s2) > 0; friend bool opera
9、tor>=( const String &s1, return Compare(s1, s2) >= 0;friend bool operator=( const String &s1, return Compare(s1, s2) = 0;friend bool operator!=( const String &s1, return Compare(s1, s2) != 0; protected :char *x;int size;void display( const String &s1, const String &s2) char
10、 *str = " 小于? 等于? 大于下 cout << """ << si << "" " << str1+Compare(s1, s2)<< """ << s2 << ""t" << endl;)int main() String si("Hello world!"), s2(si);display(s1, s2);s20 = 'h
11、9;運(yùn)行結(jié)果display(s1, s2);s2 = "Hello world ""Hello world!"等于"Hellodisplay(s1, s2);world!"s2 = "Hello world""Hello world!"小于"hellodisplay(s1, s2);s1 = ""s2 =二.;world!"display(s1, s2);"Hello world!""Hello worldreturn 0;r
12、三、閱讀程序?qū)懗鲞\(yùn)行結(jié)果(每行1分,共20分)3.1 (10分)本題所涉及的Time類,相關(guān)頭文件和源程序文件如下/ MyTime.h頭文件#ifndef MYTIME_H#define MYTIME_H#include <iostream>#include <iomanip> using namespace std; class Time public :Time( int hour=0, int minute=0, int second=0);Time & operator +();Time operator +( int );friend Time ope
13、rator +( const Time &t, int n);friendostream &operator<<(ostream &out, constTime &t);friendistream &operator>>(istream &in, Time&t);protected : int h, m, s;);#endif/ MyTime.cpp源程序文件#include "MyTime.h"Time:Time(int hour, int minute, int second):h(hour
14、), m(minute), s(second)/ 構(gòu)造函數(shù)Time & Time: operator +() (s+;if (s=60)s = 0; m+;if (m=60)m = 0; h+;if (h=24) h = 0;return * this ;Time Time: operator +( int )Time temp(* this );+(* this );return temp;Time operator +(const Time &t, int n) Time result(t);int x = (t.h*60 + t.m)*60 + t.s + n;while
15、 (x<0)x += 24*60*60;x %= 24*60*60;result.s = x % 60;result.m = x/60 % 60;result.h = x/3600;return result;ostream & operator <<(ostream &out, const Time &t)out << setfill("0') << setw(2) << t.h << ':'<< setw(2)<<t.m <<
16、39;:' << setw(2)<<t.s << sef川(''); return out;istream & operator >>(istream &in, Time &t) char str200;in.getline(str, 200, ':'); t.h = atoi(str);in.getline(str, 200, ':'); t.m = atoi(str);in.getline(str, 200);t.s = atoi(str);return in;運(yùn)
17、行結(jié)果(3.1)23:59:51 23:59:51/ main.cpp源程序文件(測(cè)試程序)int main() (Time t0(23,59,50), t;t=t0; cout << +t << endl;t=t0; +t; cout << t << endl;t=t0; +t; cout << t << endl;t=t0; cout << t+ << endl;t=t0; t+; cout << t << endl;t=t0; t+; cout << t &
18、lt;< endl;t=t0; t=t+(-3600); cout << t << endl;cout << "請(qǐng)輸入時(shí)間(hh:mm:ss):"cin >> t;cout << t << endl; cout << +t << endl; cout << t + (10*60+20)*60+30 << endl; return 0;3.2 (10分)以下4小題所涉及的Test1類,相關(guān)頭文件和源程序文件如下。/ test03.h頭文件#ifndef
19、 TEST03_H#define TEST03_H#include <iostream> using namespace std; class Test1 ( public :Test1( int a=0);Test1( const Test1 &t);virtualTest1();Test1 &operator =( const Test1 &t);static int Num();static int Sum();friend ostream & operator <<(ostream &out, const Test1 &a
20、mp;t); friend istream & operator >>(istream &in, Test1 &t);protected : static int num, sum; int x;void Show();/普通的C+函數(shù)聲明#endif / Test03.cpp源程序文件#include "Test03.h"int Test1:num=0, Test1:sum=0;/靜態(tài)數(shù)據(jù)成員定義及初始化Testi:Testi( int a):x(a)num+; sum+=x;Testi:Testi( const Testinum+;
21、sum+=x;Testi:-Testi()&t):x(t.x)/構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)num-; sum-=x;Testi & Testi:operator=(const Testi &t)/賦值運(yùn)算符函數(shù)sum += t.x - x;x = t.x;return * thisintTesti:Num() returnnum;intTesti:Sum() returnsum;ostream & operator <<(ostream &out,constTesti &t)out << t.x;return out;istre
22、am & operator >>(istream &in, Testi &t)int temp;in >> temp;Testi:sum += temp - t.x;t.x = temp;return in;/普通的C+函數(shù)void Show()cout << "Num = " << Testi:Num()<< ",tSum = " << Testi:Sum() << endl;/ 3.2.i測(cè)試程序之一運(yùn)行結(jié)果(3.2.i)#include &q
23、uot;Test03.h" int main()Num = 0 , Sum = 0(Show();return 0;)/ 3.2.2測(cè)試程序之二#include "Test03.h"Testi x(100);/創(chuàng)建一個(gè)全局對(duì)象void f(Test1 t) (Show();運(yùn)行結(jié)果(3.2.2)Num = 1 , Sum =二 100Num =: 2 ,Sum =二 200Num =uSum =: 100 ) int main() ( Show(); f(x); Show(); return 0;)/ 3.2.3測(cè)試程序之三#include "Test0
24、3.h"void f(Test1 &t) (Show();Num =二 1 ,Sum =二 100Num =二 1 ,Sum =二 100Num =二 1 ,Sum =二 100運(yùn)行結(jié)果(3.2.3) int main() (Testi x(100);/ 創(chuàng)建一個(gè)自動(dòng)對(duì)象Show(); f(x);Show();return 0;)/ 3.2.4測(cè)試程序之四運(yùn)行結(jié)果(3.2.4)Num 二二 LSum =60Num 二: 5 ,Sum =90Num 二=4_,_ Sum =60#include "Test03.h" int main() (Test1 x(1
25、0),y(20),a2=x,y Show();Test1 *p = new Test1;*p = 30; Show(); delete p; Show(); return 0;四、(40分)設(shè)計(jì)復(fù)數(shù)類。要求運(yùn)行時(shí)得到指定的輸出結(jié)果。 實(shí)現(xiàn)如下測(cè)試程序中用到的9個(gè)函數(shù)(每個(gè)函數(shù)3分。無(wú)須定義拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)及賦值運(yùn)算符函數(shù)); 自選3個(gè)運(yùn)算符,并實(shí)現(xiàn)運(yùn)算符函數(shù)重載(每個(gè)函數(shù)3分。注意復(fù)數(shù)不能比較大小); 數(shù)據(jù)成員、類設(shè)計(jì)的其他部分(4分)。【注意:數(shù)學(xué)函數(shù)double atan2( double y, 反正切值,當(dāng)x=0時(shí)返回2或-2 (正負(fù)號(hào)與#include "Complex
26、.h"int main() Complex x(3,4), y(x), z;cout << x << ", " << y << ", " << z << endl;cout << x.Abs() << 't"z.Real() = z.Imag() = 1;cout << 乙Angle()*180/M_PI << endl;cout << x+z << 't'cout << x*z << 't'cout << (x*=x) << endl;return 0;)double x);當(dāng)xw。時(shí)返回y/x 的 y同號(hào))】。/創(chuàng)建對(duì)象/輸出復(fù)數(shù)/計(jì)算復(fù)數(shù)的模長(zhǎng)/設(shè)置復(fù)數(shù)的實(shí)部、虛部/計(jì)算復(fù)數(shù)的角度/復(fù)數(shù)的算術(shù)運(yùn)算:+、*,迭代賦值*=運(yùn)行結(jié)果(4.1)(3, 4), (3, 4), (0, 0)545(4, 5)(-1, 7)(-7, 24)/ Complex.h #include <iostream>#include <cmath> using names
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版家屬區(qū)整體改造裝修服務(wù)合同3篇
- 江蘇省南通市如皋市 2024-2025學(xué)年九年級(jí)上學(xué)期1月期末道德與法治試題(含答案)
- 二零二五年度企業(yè)并購(gòu)合同法操作指南3篇
- 保健品批發(fā)商的社區(qū)健康宣傳效果評(píng)估考核試卷
- 家居布藝的智能化窗簾控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)考核試卷
- 二零二五年度造紙機(jī)械租賃施工合同2篇
- 2025年新能源車位租賃與維護(hù)保養(yǎng)一體化服務(wù)合同2篇
- 2025年新能源產(chǎn)品銷售業(yè)績(jī)達(dá)標(biāo)合同范本2篇
- 2025年信息安全技術(shù)協(xié)議
- 2025年度智能設(shè)備維修個(gè)人勞務(wù)合同模板3篇
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術(shù)人員繼續(xù)教育公需課題庫(kù)(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計(jì)算機(jī)組成原理-電子科技大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年上海健康醫(yī)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 2024年湖北省武漢市中考語(yǔ)文適應(yīng)性試卷
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說(shuō)明書
- 皮膚惡性黑色素瘤-疾病研究白皮書
- 從心理學(xué)看現(xiàn)代家庭教育課件
- C語(yǔ)言程序設(shè)計(jì)PPT(第7版)高職完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論