版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上成績(jī)上海大學(xué)20152016學(xué)年度秋季學(xué)期試卷(A卷)課程名: 面向?qū)ο蟪绦蛟O(shè)計(jì) 課程號(hào): 學(xué)分: 5 應(yīng)試人聲明: 我保證遵守上海大學(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ù)可以被重載。(×)3.重載運(yùn)算符函數(shù)不能改變運(yùn)算符的操作數(shù)個(gè)數(shù)、優(yōu)先級(jí)和結(jié)合方向。()4.引用在聲明時(shí)必須對(duì)其初
2、始化,以綁定某個(gè)已經(jīng)存在的變量(或?qū)ο螅谠撘玫纳趦?nèi),該綁定不能被更改。()5.指針變量在定義時(shí)必須對(duì)其初始化,以鎖定某個(gè)已經(jīng)存在的目標(biāo)變量(或?qū)ο螅谠撝羔樧兞康纳趦?nèi),該指向不能被更改。(×)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的成員。(×)8.構(gòu)造派生類對(duì)象時(shí),先調(diào)用基類的構(gòu)造函數(shù),后執(zhí)行派生類的構(gòu)造函數(shù)。析構(gòu)派生類對(duì)象時(shí),先調(diào)用基類的析構(gòu)函
3、數(shù),后執(zhí)行派生類的析構(gòu)函數(shù)。(×)9.含純虛函數(shù)的類稱為抽象類,不能創(chuàng)建抽象類的對(duì)象,不能定義抽象類的指針變量,不能聲明抽象類的引用。(×)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 std ;class Stringpublic:String(const c
4、har *str="")size = strlen( str );x = size>0 ? new charsize : NULL;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 = &a
5、mp;s ) return *this;if(x!=NULL) delete x;size = s.size;x = new charsize;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+)out &l
6、t;< 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 && s1
7、.xi=s2.xi; i+);if(i<s1.size && i<s2.size)return s1.xi > s2.xi ? 1 : -1;else if(i<s1.size && i=s2.size)return 1;else if(i=s1.size && i<s2.size)return -1;elsereturn 0;friend bool operator<(const String &s1, const String &s2)return Compare(s1, s2) <
8、0; friend bool operator<=(const String &s1, const String &s2)return Compare(s1, s2) <= 0;friend bool operator>(const String &s1, const String &s2)return Compare(s1, s2) > 0; friend bool operator>=(const String &s1, const String &s2)return Compare(s1, s2) >=
9、0;friend bool operator=(const String &s1, const String &s2)return Compare(s1, s2) = 0;friend bool operator!=(const String &s1, const String &s2)return Compare(s1, s2) != 0;protected:char *x;int size;void display(const String &s1, const String &s2)char *str = "小于", &
10、quot;等于", "大于"cout << """ << s1 << "" " << str1+Compare(s1, s2) << " "" << s2 << ""t" << endl;int main()String s1("Hello world!"), s2(s1);運(yùn)行結(jié)果"Hello world!"
11、等于 "Hello world!""Hello world!" 小于 "hello world!""Hello world!" 大于 "Hello world ""Hello world!" 大于 "Hello world""" 等于 ""display(s1, s2);s20 = 'h'display(s1, s2);s2 = "Hello world "display(s1,
12、s2);s2 = "Hello world"display(s1, s2);s1 = "" s2 = ""display(s1, s2);return 0;得分三、閱讀程序?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 Timepublic:T
13、ime(int hour=0, int minute=0, int second=0);Time & operator+();Time operator+(int);friend Time operator+(const Time &t, int n);friend ostream & operator<<(ostream &out, const Time &t);friend istream & operator>>(istream &in, Time &t);protected:int h, m, s;
14、#endif/ MyTime.cpp 源程序文件#include "MyTime.h"Time:Time(int hour, int minute, int second): h(hour), 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 operato
15、r+(const Time &t, int n)Time result(t);int x = (t.h*60 + t.m)*60 + t.s + n;while(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') <<
16、 setw(2) << t.h << ':' << setw(2)<<t.m << ':' << setw(2)<<t.s << setfill(' ');return out;istream & operator>>(istream &in, Time &t)char str200;in.getline(str, 200, ':');t.h = atoi(str);in.getline(str, 2
17、00, ':');t.m = atoi(str);in.getline(str, 200);t.s = atoi(str);return in;運(yùn)行結(jié)果(3.1)23:59:51 23:59:51 23:59:52 23:59:50 23:59:51 23:59:51 22:59:50 請(qǐng)輸入時(shí)間:23:59:5923:59:59 00:00:00 10:20:30 / main.cpp源程序文件(測(cè)試程序)int main()Time t0(23,59,50), t;t=t0; cout << +t << endl;t=t0; +t; cout <
18、;< t << endl;t=t0; +t; cout << t << endl;t=t0; cout << t+ << endl;t=t0; t+; cout << t << endl;t=t0; t+; cout << t << endl;t=t0; t=t+(-3600); cout << t << endl;cout << "請(qǐng)輸入時(shí)間(hh:mm:ss) : "cin >> t;cout <<
19、 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 TEST03_H#define TEST03_H#include <iostream>using namespace std;class Test1public:Test1(int a=0);Test1(const Test1 &t);virtua
20、l Test1();Test1 & operator=(const Test1 &t);static int Num();static int Sum();friend ostream & operator<<(ostream &out, const Test1 &t);friend istream & operator>>(istream &in, Test1 &t);protected:static int num, sum;int x;void Show();/ 普通的C+函數(shù)聲明#endif/ Te
21、st03.cpp 源程序文件#include "Test03.h"int Test1:num=0, Test1:sum=0;/靜態(tài)數(shù)據(jù)成員定義及初始化Test1:Test1(int a):x(a) / 構(gòu)造函數(shù)num+; sum+=x;Test1:Test1(const Test1 &t):x(t.x) / 拷貝構(gòu)造函數(shù)num+; sum+=x;Test1:Test1()num-; sum-=x;Test1 & Test1:operator=(const Test1 &t) / 賦值運(yùn)算符函數(shù)sum += t.x - x;x = t.x;return
22、 *this;int Test1:Num() return num;int Test1:Sum() return sum;ostream & operator<<(ostream &out, const Test1 &t)out << t.x;return out;istream & operator>>(istream &in, Test1 &t)int temp;in >> temp;Test1:sum += temp - t.x;t.x = temp;return in;void Show()
23、/ 普通的C+函數(shù)cout<< "Num = " << Test1:Num()<< ",tSum = " << Test1:Sum() << endl;/ 3.2.1 測(cè)試程序之一#include "Test03.h"運(yùn)行結(jié)果(3.2.1)Num = 0 , Sum = 0 int main()Show();return 0;/ 3.2.2 測(cè)試程序之二#include "Test03.h"Test1 x(100);/ 創(chuàng)建一個(gè)全局對(duì)象void f(Tes
24、t1 t)Show();運(yùn)行結(jié)果(3.2.2)Num = 1 , Sum = 100 Num = 2 , Sum = 200 Num = 1 , Sum = 100 int main()Show();f(x);Show();return 0;/ 3.2.3 測(cè)試程序之三#include "Test03.h"void f(Test1 &t)Show();int main()運(yùn)行結(jié)果(3.2.3)Num = 1 , Sum = 100 Num = 1 , Sum = 100 Num = 1 , Sum = 100 Test1 x(100); / 創(chuàng)建一個(gè)自動(dòng)對(duì)象Show
25、();f(x);Show();return 0;/ 3.2.4 測(cè)試程序之四#include "Test03.h"int main()運(yùn)行結(jié)果(3.2.4)Num = 4 , Sum = 60 Num = 5 , Sum = 90 Num = 4 , Sum = 60 Test1 x(10),y(20),a2=x,yShow();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)造函
26、數(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, double x);當(dāng)x0時(shí)返回y/x的反正切值,當(dāng)x=0時(shí)返回/2或-/2(正負(fù)號(hào)與y同號(hào))】。#include "Complex.h"int main()Complex x(3,4), y(x), z;/ 創(chuàng)建對(duì)象cout << x << ", " << y << ", " <
27、;< z << endl;/ 輸出復(fù)數(shù)cout << x.Abs() << 't'/ 計(jì)算復(fù)數(shù)的模長(zhǎng)z.Real() = z.Imag() = 1;/ 設(shè)置復(fù)數(shù)的實(shí)部、虛部cout << z.Angle()*180/M_PI << endl; / 計(jì)算復(fù)數(shù)的角度cout << x+z << 't'/ 復(fù)數(shù)的算術(shù)運(yùn)算: +、*,迭代賦值 *=運(yùn)行結(jié)果(4.1)(3, 4), (3, 4), (0, 0)545(4, 5)(-1, 7)(-7, 24)cout << x*z << 't'cout << (x*=x) << endl;return 0;/ Complex.h#include <iostream>#include
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生物質(zhì)能源項(xiàng)目股權(quán)分配合同范本3篇
- 2025年度風(fēng)力發(fā)電場(chǎng)場(chǎng)地平整與風(fēng)力塔安裝施工協(xié)議4篇
- 2025年度城市綠化工程苗木采購(gòu)合同3篇
- 二零二五年度能源項(xiàng)目100%股權(quán)轉(zhuǎn)讓合同3篇
- 專業(yè)旅客出行服務(wù)協(xié)議定制版
- 2024試用期工作關(guān)系協(xié)議范本版B版
- 2025年度臨時(shí)場(chǎng)地租賃合同終止及場(chǎng)地恢復(fù)協(xié)議4篇
- 2025年度二零二五購(gòu)物中心攤位租賃及營(yíng)銷支持合同4篇
- 2025年度詳盡場(chǎng)景主播合作框架協(xié)議4篇
- 個(gè)人借款合同模板:無(wú)擔(dān)保短期資金周轉(zhuǎn)版B版
- 2024年國(guó)家危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全生產(chǎn)考試題庫(kù)(含答案)
- 護(hù)理員技能培訓(xùn)課件
- 員工宿舍用電安全培訓(xùn)
- 家庭年度盤點(diǎn)模板
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年資格考試-WSET二級(jí)認(rèn)證考試近5年真題集錦(頻考類試題)帶答案
- 試卷中國(guó)電子學(xué)會(huì)青少年軟件編程等級(jí)考試標(biāo)準(zhǔn)python三級(jí)練習(xí)
- 公益慈善機(jī)構(gòu)數(shù)字化轉(zhuǎn)型行業(yè)三年發(fā)展洞察報(bào)告
- 飼料廠現(xiàn)場(chǎng)管理類隱患排查治理清單
- 【名著閱讀】《紅巖》30題(附答案解析)
- Starter Unit 2 同步練習(xí)人教版2024七年級(jí)英語(yǔ)上冊(cè)
評(píng)論
0/150
提交評(píng)論