高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案.doc_第1頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案.doc_第2頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案.doc_第3頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案.doc_第4頁(yè)
高級(jí)語(yǔ)言C++程序設(shè)計(jì)--考試試卷 - 答案.doc_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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)介

高級(jí)語(yǔ)言C+程序設(shè)計(jì)-考試試卷答案姓名: _ 成績(jī) _第一題 選擇(22題,每題1.5分, 共33分)答案:1-11題DCDACDABDDB答案:12-22題DADDADDDAAD1. 按照C 語(yǔ)言規(guī)定的用戶標(biāo)識(shí)符命名規(guī)則,不能出現(xiàn)在標(biāo)識(shí)符中的是A)大寫字母 B)下劃線 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)十進(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ǔ)言中,程序的模塊化是利用類實(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ǔ)言程序中的注釋必須與語(yǔ)句寫在同一行 B) 簡(jiǎn)單C+ 語(yǔ)句必須以分號(hào)結(jié)束C) C+ 語(yǔ)句必須在一行內(nèi)寫完 D) C+ 程序中的每一行只能寫一條語(yǔ)句9. 以下選項(xiàng)中,不合法的C+語(yǔ)言用戶標(biāo)示符是A) AaBc B) ab C) 1 D) a-b10.關(guān)于C+語(yǔ)言的變量,以下敘述中錯(cuò)誤的是A) 由三條下劃線構(gòu)成的符號(hào)名是合法的變量名B) 所謂變量是指在程序運(yùn)行過(guò)程中其值可以被改變的量C) 程序中用到的所有變量都必須先定義后才能使用D) 變量所占的存儲(chǔ)單元地址可以隨時(shí)改變11. C +語(yǔ)言中double 類型數(shù)據(jù)占字節(jié)數(shù)為A) 12 B) 8 C) 4 D) 1612. 以下敘述中正確的是A) 空語(yǔ)句就是指程序中的空行B) 花括號(hào)對(duì)只能用來(lái)表示函數(shù)的開(kāi)頭和結(jié)尾,不能用于其他目的C) 復(fù)合語(yǔ)句在語(yǔ)法上包含多條語(yǔ)句,其中不能定義局部變量D) 當(dāng)用cin 從鍵盤輸入數(shù)據(jù)時(shí),每行數(shù)據(jù)在沒(méi)有按下回車鍵(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ì)改變程序的執(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è)有定義: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)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ù)組名22. 若有以下語(yǔ)句typedef struct S int g; char h; T;以下敘述中正確的是A)T 是struct S 類型的變量 B)可用S 定義結(jié)構(gòu)體變量C)S 是srurct 類型的變量 D)可用T 定義結(jié)構(gòu)體變量第二題:類與對(duì)象編程 (25分)自定義一個(gè)簡(jiǎn)單的時(shí)間類TimeType,它具有數(shù)據(jù)成員h、m、s,用來(lái)表示當(dāng)前時(shí)間的時(shí)、分、秒。而后設(shè)計(jì)該類的功能,進(jìn)而設(shè)計(jì)出相應(yīng)的類成員函數(shù), 實(shí)現(xiàn)對(duì)時(shí)分秒的增加、判斷兩個(gè)時(shí)間是否相等以及對(duì)時(shí)間的輸出等操作。試完成各類成員函數(shù)并編制主函數(shù),說(shuō)明TimeType 類對(duì)象,對(duì)定義的各成員函數(shù)進(jìn)行調(diào)用,以驗(yàn)證它們的正確性。class 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í)、分、秒);編制類似于如下樣式的主函數(shù):TimeType t1(11, 48, 59), t2(11, 59, 48), t3;coutt1=; t1.printTime(); if(t1.equal(t2) coutt1=t2endl; t1.incrementMin(30); coutt1=; t1.printTime();#include using namespace std; class TimeType /自定義的時(shí)間類TimeTypeint 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); /增加若干秒,sec0void incrementMin(int min); /增加若干分,min0void incrementHou(int hrs); /增加若干小時(shí),hrs0bool equal(TimeType t2); /判斷兩時(shí)間是否相等void printTime(); /屏幕輸出時(shí)間對(duì)象的有關(guān)數(shù)據(jù)(時(shí)、分、秒);TimeType:TimeType(int h0, int m0, int s0)h = h0; m = 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)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 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 endl; t1.incrementMin(30);cout ;cout t1=; t1.printTime();t1.incrementSec(45);cout ;cout t1=; t1.printTime();t1.incrementHou(3);cout ;cout t1=; t1.printTime();第三題:繼承與派生編程(22分)利用虛函數(shù)手段,按照3 種不同的計(jì)算方法來(lái)求出Fibonacci 數(shù)列的第n項(xiàng)(具體項(xiàng)值)并輸出。具體地說(shuō),可通過(guò)在基類baseCla 及其派生類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ù)平移”法(顯示出第1476項(xiàng))、使用數(shù)組的實(shí)現(xiàn)法(顯示出第888項(xiàng))以及使用遞歸函數(shù)的實(shí)現(xiàn)法(顯示出第35項(xiàng))。 基類和派生類可做如下定義:class baseCla /自定義的基類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)派生類的函數(shù), 并以科學(xué)計(jì)數(shù)法輸出到小數(shù)點(diǎn)后15位. #includeusing namespace std;class baseCla /自定義的基類baseClapublic:virtual double fib(int n) = 0; /基類baseCla中說(shuō)明了一個(gè)虛函數(shù)fib,且為純虛函數(shù);class fib1Cla : public baseCla /由基類baseCla派生出的fib1Cla類 double a = 1, b = 1, c = 0, i;public:virtual double fib(int n); /派生類中說(shuō)明同一個(gè)虛函數(shù)fib(簡(jiǎn)單變量數(shù)據(jù)平移法);class fib2Cla : public baseCla /派生類fib2Cladouble a1000;public:virtual double fib(int n);/virtual double fib(int n); /派生類中說(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;return c;double fib2Cla:fib(int n)a0 = a1 = 1;int i;if (n = 1 | n = 2)return 1;elsefor (i = 2; i fib(n); /根據(jù)p 指針值的不同,將調(diào)用不同派生類的虛函數(shù)fibcout.flags(ios:scientific);cout.precision(15);cout fib( n )= d endl;void main() fib1Cla obj1; /fib1Cla 類對(duì)象obj1fib2Cla obj2; /fib2Cla 類對(duì)象obj2fib3Cla obj3; /fib3Cla 類對(duì)象obj3cout - fib1Cla - endl;fun(&obj1, 1476); /簡(jiǎn)單變量“數(shù)據(jù)平移”求解方法,求fib(1476)cout - fib2Cla - endl;fun(&obj2, 888); /數(shù)組求解方法,求fib(888)cout - fib3Cla - endl;fun(&obj3, 35); /遞歸求解方法,求fib(35)第四題:模板/指針編程(20分)編寫一個(gè)具有如下樣式的類模板tmplt ,用于實(shí)現(xiàn)所謂的反序輸出問(wèn)題,其中使用了類型參數(shù)T(使所處理的元素類型可變化)和普通參數(shù)n(元素個(gè)數(shù)也可變化):template class tmplt T arrn; / n 個(gè)T 類型的數(shù)據(jù)存放于數(shù)組arr 之中public:void dataIn(); /從鍵盤輸入n 個(gè)T 類型數(shù)據(jù)放入arr 數(shù)組中void reverseOut(); /將arr 數(shù)組中的數(shù)據(jù)按輸入的相反順序輸出void reverseOutByList(); /用鏈表形式, 反序輸出 ;在reverseOutByList()中, 可定義如下的結(jié)構(gòu)類型, 以形成鏈表項(xiàng)struct item T data;item * next; *first , *temp; #includeusing namespace std;template class tmpltT arrn;public:void dateIn();void reverseOut();void reverseOutByList();template void tmplt:dateIn()for (int i = 0; i arri;t

溫馨提示

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