上海大學(xué)-級(jí)C++試題_第1頁(yè)
上海大學(xué)-級(jí)C++試題_第2頁(yè)
上海大學(xué)-級(jí)C++試題_第3頁(yè)
上海大學(xué)-級(jí)C++試題_第4頁(yè)
上海大學(xué)-級(jí)C++試題_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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.類(lèi)的構(gòu)造函數(shù)的函數(shù)名與類(lèi)名相同,可以重載構(gòu)造函數(shù)。()2.類(lèi)的析構(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.類(lèi)的非靜態(tài)成員函數(shù)均有一個(gè)隱含的形式參數(shù)this指針常量,用于指向調(diào)用該函數(shù)的對(duì)象。函數(shù)體中不能改變?cè)撝羔槼A康闹赶颍存i定調(diào)用該函數(shù)的對(duì)象)。()7.派生類(lèi)繼承了基類(lèi)的所有數(shù)據(jù)成員,并且在派生類(lèi)的成員函數(shù)中都能直接訪問(wèn)基類(lèi)的訪問(wèn)屬性為private的成員。(×)8.構(gòu)造派生類(lèi)對(duì)象時(shí),先調(diào)用基類(lèi)的構(gòu)造函數(shù),后執(zhí)行派生類(lèi)的構(gòu)造函數(shù)。析構(gòu)派生類(lèi)對(duì)象時(shí),先調(diào)用基類(lèi)的析構(gòu)函

3、數(shù),后執(zhí)行派生類(lèi)的析構(gòu)函數(shù)。(×)9.含純虛函數(shù)的類(lèi)稱(chēng)為抽象類(lèi),不能創(chuàng)建抽象類(lèi)的對(duì)象,不能定義抽象類(lèi)的指針變量,不能聲明抽象類(lèi)的引用。(×)10.引用返回的函數(shù)可以作左值,也避免了函數(shù)值返回時(shí)創(chuàng)建與返回類(lèi)型相同的臨時(shí)無(wú)名對(duì)象。()得分二、填空題(每空2分,共20分)如下設(shè)計(jì)了一個(gè)字符串類(lèi)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類(lèi),相關(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類(lèi),相關(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ù)類(lèi)。要求運(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ù)成員、類(lèi)設(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)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論