高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案_第1頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案_第2頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案_第3頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案_第4頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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、 高級(jí)語(yǔ)言C+程序設(shè)計(jì)-考試試卷答案姓名: _ 成績(jī) _第一題 選擇(22題,每題1.5分, 共33分)答案:1-11題DCDACDABDDB答案:12-22題DADDADDDAAD1. 按照C 語(yǔ)言規(guī)定的用戶(hù)標(biāo)識(shí)符命名規(guī)則,不能出現(xiàn)在標(biāo)識(shí)符中的是A)大寫(xiě)字母 B)下劃線(xiàn) C)數(shù)字字符D)連接符2. 以下選項(xiàng)中不合法的標(biāo)識(shí)符是A)cout B)FOR C)&&a D)_003. 設(shè)有定義:int x=2;,以下表達(dá)式中,值不為6的是A)x*=(1+x) B)x*=x+1 C)x+,2*x D)2*x, x+=24. C+ 源程序中不能表示的數(shù)制是A)二進(jìn)制 B)十六進(jìn)制 C)十

2、進(jìn)制D)八進(jìn)制5. 以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是A) 一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成B) 有三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問(wèn)題C) 在C +語(yǔ)言中,程序的模塊化是利用類(lèi)實(shí)現(xiàn)的D) 結(jié)構(gòu)化程序使用goto 語(yǔ)句會(huì)很便捷6. 以下定義語(yǔ)句中正確的是A) float a=1,*b=&a,*c=&b; B) int a=b=0;C) double a=0.0;b=1.1; D) char A=65+1,b=b;7. 計(jì)算機(jī)能直接執(zhí)行的程序是A) 可執(zhí)行程序 B) 目標(biāo)程序 C) 源程序 D) 匯編程序8. 以下敘述中正確的是A) C+ 語(yǔ)言程序中

3、的注釋必須與語(yǔ)句寫(xiě)在同一行 B) 簡(jiǎn)單C+ 語(yǔ)句必須以分號(hào)結(jié)束C) C+ 語(yǔ)句必須在一行內(nèi)寫(xiě)完 D) C+ 程序中的每一行只能寫(xiě)一條語(yǔ)句9. 以下選項(xiàng)中,不合法的C+語(yǔ)言用戶(hù)標(biāo)示符是A) AaBc B) ab C) 1 D) a-b10.關(guān)于C+語(yǔ)言的變量,以下敘述中錯(cuò)誤的是A) 由三條下劃線(xiàn)構(gòu)成的符號(hào)名是合法的變量名B) 所謂變量是指在程序運(yùn)行過(guò)程中其值可以被改變的量C) 程序中用到的所有變量都必須先定義后才能使用D) 變量所占的存儲(chǔ)單元地址可以隨時(shí)改變11. C +語(yǔ)言中double 類(lèi)型數(shù)據(jù)占字節(jié)數(shù)為A) 12 B) 8 C) 4 D) 1612. 以下敘述中正確的是A) 空語(yǔ)句就是指程

4、序中的空行B) 花括號(hào)對(duì)只能用來(lái)表示函數(shù)的開(kāi)頭和結(jié)尾,不能用于其他目的C) 復(fù)合語(yǔ)句在語(yǔ)法上包含多條語(yǔ)句,其中不能定義局部變量D) 當(dāng)用cin 從鍵盤(pán)輸入數(shù)據(jù)時(shí),每行數(shù)據(jù)在沒(méi)有按下回車(chē)鍵(Enter 鍵)前,可以任意修改13. 以下敘述中正確的是A) C+ 語(yǔ)言程序總是從main 函數(shù)開(kāi)始執(zhí)行B) C+ 語(yǔ)言程序所調(diào)用的函數(shù)必須放在main 函數(shù)的前面C) C+ 語(yǔ)言程序中main 函數(shù)必須放在程序開(kāi)始位置D) C+ 語(yǔ)言程序總是從最前面的函數(shù)開(kāi)始執(zhí)行14. 以下敘述中正確的是A)if 語(yǔ)句只能嵌套一層 B)不能在else 子句中在嵌套if 語(yǔ)句C)改變if-else 語(yǔ)句的縮進(jìn)格式,會(huì)改變程

5、序的執(zhí)行流程 D)if 子句和else 子句中可以是任意合法的C +語(yǔ)句15. 以下敘述中正確的是A)在while 語(yǔ)句和do-while 語(yǔ)句中無(wú)法使用continue 語(yǔ)句B)當(dāng)break 出現(xiàn)在循環(huán)體中的switch 語(yǔ)句體內(nèi)時(shí),其作用是跳出該switch 語(yǔ)句體,并終止循環(huán)C)continue 語(yǔ)句的作用是:在執(zhí)行完本次循環(huán)體中剩余語(yǔ)句后,終止循環(huán)D)只能在循環(huán)體內(nèi)和switch 語(yǔ)句體內(nèi)使用break 語(yǔ)句16. 已定義以下函數(shù):int fun(int *p)return *p;fun 函數(shù)返回值是A)一個(gè)整數(shù) B)形參p 的地址值 C)形參p 中存放的值 D)不確定的值17. 設(shè)有

6、定義:double a10,*s=a;以下能夠代表數(shù)組元素a3的是A)*s3 B)(*s)3 C)*s+3 D)*(s+3)18. 下列選項(xiàng)中,能正確定義數(shù)組的語(yǔ)句是A)int num0.2008; B)int num ;C)int N=2008; int numN; D)#define N 2008; int numN;19. 設(shè)有以下函數(shù):void fun(int n,char *s). 則下面對(duì)函數(shù)指針的定義和賦值均正確的是A)void *pf(); pf=fun; B) void (*pf)(int,char );pf=&fun;C)void *pf(); *pf=fun; D

7、)void (*pf)(int ,char *) ; pf=fun;20. 以下敘述中正確的是A)int *p1, int *p2, int *p3;都是合法的定義指針變量語(yǔ)句B)語(yǔ)句p=NULL;與p=0 是等價(jià)的語(yǔ)句C)p=NULL;執(zhí)行后,指針p 指向地址為0 的存儲(chǔ)單元D)指針變量只能通過(guò)求指針運(yùn)算符(&)獲得地址值21. int *func(int a10, int n);則以下敘述中正確的是A)說(shuō)明中的a10改為a或*a 效果完全一樣B)函數(shù)中不能對(duì)a 進(jìn)行移動(dòng)指針(如a+)的操作C)只有指向10 個(gè)整數(shù)內(nèi)存單元的指針,才能作為實(shí)參傳遞給形參D)形參a 對(duì)應(yīng)的實(shí)參只能是數(shù)組

8、名22. 若有以下語(yǔ)句typedef struct S int g; char h; T;以下敘述中正確的是A)T 是struct S 類(lèi)型的變量 B)可用S 定義結(jié)構(gòu)體變量C)S 是srurct 類(lèi)型的變量 D)可用T 定義結(jié)構(gòu)體變量第二題:類(lèi)與對(duì)象編程 (25分)自定義一個(gè)簡(jiǎn)單的時(shí)間類(lèi)TimeType,它具有數(shù)據(jù)成員h、m、s,用來(lái)表示當(dāng)前時(shí)間的時(shí)、分、秒。而后設(shè)計(jì)該類(lèi)的功能,進(jìn)而設(shè)計(jì)出相應(yīng)的類(lèi)成員函數(shù), 實(shí)現(xiàn)對(duì)時(shí)分秒的增加、判斷兩個(gè)時(shí)間是否相等以及對(duì)時(shí)間的輸出等操作。試完成各類(lèi)成員函數(shù)并編制主函數(shù),說(shuō)明TimeType 類(lèi)對(duì)象,對(duì)定義的各成員函數(shù)進(jìn)行調(diào)用,以驗(yàn)證它們的正確性。class

9、TimeType int h,m,s; /私有數(shù)據(jù)成員,表示當(dāng)前時(shí)間的時(shí)、分、秒public:TimeType(int h0=0, int m0=0, int s0=0);/構(gòu)造函數(shù),設(shè)置時(shí)、分、秒并設(shè)置參數(shù)默認(rèn)值void incrementSec(int sec); ; ; /增加若干秒/增加若干分 /增加若干小時(shí)bool equal(TimeType t2); /判斷兩時(shí)間是否相等void printTime(); /屏幕輸出時(shí)間對(duì)象的有關(guān)數(shù)據(jù)(時(shí)、分、秒);編制類(lèi)似于如下樣式的主函數(shù):TimeType t1(11, 48, 59), t2(11, 59, 48), t3;cout<

10、<"t1=" t1.printTime(); if(t1.equal(t2) cout<<"t1=t2"<<endl; t1.incrementMin(30); cout<<"t1=" t1.printTime();#include<iostream> using namespace std; class TimeType /自定義的時(shí)間類(lèi)TimeTypeint h, m, s; /私有數(shù)據(jù)成員,表示當(dāng)前時(shí)間的時(shí)、分、秒public:TimeType(int h0 = 0, int

11、 m0 = 0, int s0 = 0);/構(gòu)造函數(shù),設(shè)置時(shí)、分、秒并設(shè)置參數(shù)默認(rèn)值void incrementSec(int sec); /增加若干秒,sec>0void incrementMin(int min); /增加若干分,min>0void incrementHou(int hrs); /增加若干小時(shí),hrs>0bool equal(TimeType t2); /判斷兩時(shí)間是否相等void printTime(); /屏幕輸出時(shí)間對(duì)象的有關(guān)數(shù)據(jù)(時(shí)、分、秒);TimeType:TimeType(int h0, int m0, int s0)h = h0; m =

12、m0; s = s0;void TimeType:incrementSec(int sec)s = s + sec; m = m + s / 60; s = s % 60;h = h + m / 60; m = m % 60;h = h % 24;void TimeType:incrementMin(int min)m = m + min; h = h + m / 60; m = m % 60;h = h % 24;void TimeType:incrementHou(int hrs)h = h + hrs;h = h % 24;bool TimeType:equal(TimeType t2)

13、int time1 = (h * 60 + m) * 60 + s;int time2 = (t2.h * 60 + t2.m) * 60 + t2.s; return time1 = time2 ? true : false;void TimeType:printTime()cout << "現(xiàn)在是:" << h << "時(shí)" cout << m << "分" cout << s << "秒" << endl;int

14、main() TimeType t1(11, 48, 59), t2(11, 59, 48), t3;cout << "t1=" t1.printTime(); cout << "t2=" t2.printTime(); cout << "t3=" t3.printTime();if (t1.equal(t2)cout << "t1 等于 t2" << endl;else cout << "t1 不等于 t2" <&l

15、t; endl; t1.incrementMin(30);cout << "'t1.incrementMin(30);' => "cout << "t1=" t1.printTime();t1.incrementSec(45);cout << "'t1.incrementSec(45);' => "cout << "t1=" t1.printTime();t1.incrementHou(3);cout << &q

16、uot;'t1.incrementHou(3);' => "cout << "t1=" t1.printTime();第三題:繼承與派生編程(22分)利用虛函數(shù)手段,按照3 種不同的計(jì)算方法來(lái)求出Fibonacci 數(shù)列的第n項(xiàng)(具體項(xiàng)值)并輸出。具體地說(shuō),可通過(guò)在基類(lèi)baseCla 及其派生類(lèi)fib1Cla、fib2Cla 和fib3Cla 中說(shuō)明如下的同一個(gè)虛函數(shù)“ virtual double fib(int n);”,來(lái)實(shí)現(xiàn)求Fibonacci 數(shù)列第n 項(xiàng)值并返回的3 種不同求解方法:簡(jiǎn)單變量“數(shù)據(jù)平移”法(顯示出第14

17、76項(xiàng))、使用數(shù)組的實(shí)現(xiàn)法(顯示出第888項(xiàng))以及使用遞歸函數(shù)的實(shí)現(xiàn)法(顯示出第35項(xiàng))。 基類(lèi)和派生類(lèi)可做如下定義:class baseCla /自定義的基類(lèi)baseClapublic: virtual double fib(int n)=0; ;class fib1Cla:public baseCla private: public: virtual double fib(int n); /簡(jiǎn)單變量“數(shù)據(jù)平移”法; 利用函數(shù)void fun(baseCla *p, int n)調(diào)用相應(yīng)派生類(lèi)的函數(shù), 并以科學(xué)計(jì)數(shù)法輸出到小數(shù)點(diǎn)后15位. #include<iostream>us

18、ing namespace std;class baseCla /自定義的基類(lèi)baseClapublic:virtual double fib(int n) = 0; /基類(lèi)baseCla中說(shuō)明了一個(gè)虛函數(shù)fib,且為純虛函數(shù);class fib1Cla : public baseCla /由基類(lèi)baseCla派生出的fib1Cla類(lèi) double a = 1, b = 1, c = 0, i;public:virtual double fib(int n); /派生類(lèi)中說(shuō)明同一個(gè)虛函數(shù)fib(簡(jiǎn)單變量"數(shù)據(jù)平移"法);class fib2Cla : public base

19、Cla /派生類(lèi)fib2Cladouble a1000;public:virtual double fib(int n);/virtual double fib(int n); /派生類(lèi)中說(shuō)明同一個(gè)虛函數(shù)fib(使用數(shù)組的求解法);class fib3Cla :public baseClapublic:virtual double fib(int n); /使用遞歸函數(shù)的實(shí)現(xiàn)法;double fib1Cla:fib(int n)if (n = 1 | n = 2)return 0;elsefor (i = 3; i <= n; i+)c = a + b;a = b;b = c;retur

20、n c;double fib2Cla:fib(int n)a0 = a1 = 1;int i;if (n = 1 | n = 2)return 1;elsefor (i = 2; i <= n; i+)ai = ai - 1 + ai - 2;return an-1; /此處的n-1即為邏輯意義上的ndouble fib3Cla:fib(int n)if (n = 1 | n = 2)return 1;elsereturn fib(n - 1) + fib(n - 2);void fun(baseCla *p, int n)/自定義函數(shù)fun,形參p為指向基類(lèi)的指針,其對(duì)應(yīng)實(shí)參/可為不同

21、派生類(lèi)對(duì)象的地址;n指明要求出數(shù)列的第n項(xiàng)/自定義函數(shù)fun,形參p 為指向基類(lèi)的指針,其對(duì)應(yīng)實(shí)參/可為不同派生類(lèi)對(duì)象的地址;n 指明要求出數(shù)列的第n 項(xiàng)double d = p->fib(n); /根據(jù)p 指針值的不同,將調(diào)用不同派生類(lèi)的虛函數(shù)fibcout.flags(ios:scientific);cout.precision(15);cout << "fib(" << n << ")=" << d << endl;void main() fib1Cla obj1; /fib1Cla

22、 類(lèi)對(duì)象obj1fib2Cla obj2; /fib2Cla 類(lèi)對(duì)象obj2fib3Cla obj3; /fib3Cla 類(lèi)對(duì)象obj3cout << "- fib1Cla -" << endl;fun(&obj1, 1476); /簡(jiǎn)單變量“數(shù)據(jù)平移”求解方法,求fib(1476)cout << "- fib2Cla -" << endl;fun(&obj2, 888); /數(shù)組求解方法,求fib(888)cout << "- fib3Cla -" <

23、< endl;fun(&obj3, 35); /遞歸求解方法,求fib(35)第四題:模板/指針編程(20分)編寫(xiě)一個(gè)具有如下樣式的類(lèi)模板tmplt ,用于實(shí)現(xiàn)所謂的反序輸出問(wèn)題,其中使用了類(lèi)型參數(shù)T(使所處理的元素類(lèi)型可變化)和普通參數(shù)n(元素個(gè)數(shù)也可變化):template <class T, int n> class tmplt T arrn; / n 個(gè)T 類(lèi)型的數(shù)據(jù)存放于數(shù)組arr 之中public:void dataIn(); /從鍵盤(pán)輸入n 個(gè)T 類(lèi)型數(shù)據(jù)放入arr 數(shù)組中void reverseOut(); /將arr 數(shù)組中的數(shù)據(jù)按輸入的相反順序輸出

24、void reverseOutByList(); /用鏈表形式, 反序輸出 ;在reverseOutByList()中, 可定義如下的結(jié)構(gòu)類(lèi)型, 以形成鏈表項(xiàng)struct item T data;item * next; *first , *temp; #include<iostream>using namespace std;template <class T, int n>class tmpltT arrn;public:void dateIn();void reverseOut();void reverseOutByList();template <clas

25、s T, int n>void tmplt<T, n>:dateIn()for (int i = 0; i < n; i+)cin >> arri;template <class T, int n>void tmplt<T, n>:reverseOut()cout << "該位數(shù)的反序數(shù)為:"for (int i = n - 1; i >= 0; i-)cout << arri << " "cout << endl;template <class T, int n>void tmplt<T, n>:reverseOutByList() /指針與鏈表的求解方法struct item /結(jié)構(gòu)類(lèi)型,用于形成鏈表項(xiàng)T data; /存放數(shù)據(jù)item * next; /指向本結(jié)構(gòu)的指針,由它“串聯(lián)”起后項(xiàng);item *first = NULL, *t

溫馨提示

  • 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)論