首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導(dǎo)航
您現(xiàn)在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > C加加 > 模擬試題 > 正文

2017年9月計算機二級C++考試操作題最后一套題

來源:考試吧 2017-09-22 14:51:26 要考試,上考試吧! 萬題庫
“2017年9月計算機二級C++考試操作題最后一套題”供考生參考。更多計算機等級考試模擬試題等信息請訪問考試吧計算機等級考試網(wǎng)。
第 1 頁:基本操作題
第 2 頁:簡單應(yīng)用題

  綜合應(yīng)用題

  3[簡答題]

  使用VC6打開考生文件夾proj3下的工程proj3,其中定義了一個字符串變量類StringVar。類成員的說明在程序注釋中。請在// ******** 333 ******** 和// ******** 666 ******** 之間填寫StringVar成員函數(shù)和友元函數(shù)的實現(xiàn)代碼。在main函數(shù)中給出了一組測試數(shù)據(jù),運行時輸入:

  Hello Kitty

  此情況下程序的輸出應(yīng)該是:

  Hello Kitty

  Borg

  Borg

  注意:只需在// ******** 333 ******** 和// ******** 666 ******** 之間填入所編寫的若干語句,不要改動程序中的其他內(nèi)容。

2017年9月計算機二級C  考試操作題最后一套題

2017年9月計算機二級C  考試操作題最后一套題

  參考解析:【參考答案】

2017年9月計算機二級C  考試操作題最后一套題

2017年9月計算機二級C  考試操作題最后一套題

  【考點分析】

  本題考查構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義、類的成員函數(shù)、重載流運算符>>和插入運算符<<和預(yù)定義流對象。

  【解題思路】

  由StringVar.h這個頭文件可知:頭文件中定義了StringVar類,它包含的成員信息如下:

  兩個數(shù)據(jù)成員:char * 類型的value,指向字符串的首地址;int類型的max_length,表示字符串的最大長度。兩個構(gòu)造函數(shù):接收int類型的構(gòu)造函數(shù)和接收const char a[]的構(gòu)造函數(shù)。一個復(fù)制構(gòu)造函數(shù):用參數(shù)strobj對象的成員值給當前對象的成員賦值;

  析構(gòu)函數(shù):使用delete[]釋放value指向的地址空間;length()成員函數(shù):返回成員value指向的字符串長度;input_line()成員函數(shù):使用輸入流參數(shù)輸入一個字符串,保存到value指向的內(nèi)存空間;getValue()成員函數(shù):常成員函數(shù),返回value的值。

  另外類定義體外部還聲明一個重載“<<”運算符函數(shù),將StringVar對象中value指向的字符串輸出,并返回輸出流outs的引用

  StringVar.h中,已經(jīng)給出的定義有:析構(gòu)函數(shù)、length()函數(shù)和getValue()函數(shù),所以需要我們完成的函數(shù)定義有:構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù)、input_line()函數(shù)和重載的“<<”運算符函數(shù)

  ①StringVar(int size);

  題意指出,size為字符串長度(字符個數(shù))初始值,字符串內(nèi)容初始化為空串,所以需要使用size設(shè)置成員max_length,為value申請size個字符的存儲空間,并把value的第一個字符設(shè)置為'\0'表示空串,這樣保證析構(gòu)函數(shù)的delete[]也是正確的。

 、赟tringVar(const char a[]);

  題意指出,使用參數(shù)數(shù)組a的內(nèi)容初始化對象的成員,即將數(shù)組a中的內(nèi)容,存放到value指向的內(nèi)存空間,由于value是使用new分配的(保證析構(gòu)函數(shù)的delete[]是正確的),所以不能簡單的把數(shù)組a的首地址賦給value,需要將數(shù)組a的內(nèi)容復(fù)制到value指向的內(nèi)存空間中,另外成員max_length,初值最小必須是value指向的內(nèi)存空間長度,即value指向的字符串長度+1(題意中max_length表示字符個數(shù)的最大值,所以需要包含字符串結(jié)束符'\0')(此構(gòu)造函數(shù)的形參必須傳入的是字符串,如果是字符數(shù)組,必須傳入數(shù)組的長度,以防數(shù)組a的最后一個字符不是結(jié)束符'\0',此時strlen()函數(shù)獲取的長度,就不是字符數(shù)組a的字符個數(shù))

 、跾tringVar(coast StringVar& strobj);

  復(fù)制構(gòu)造函數(shù)需要將形參strobj的成員賦給當前調(diào)用該復(fù)制構(gòu)造函數(shù)的對象成員,在賦值value時,同樣需要為value分配足夠的內(nèi)存空間。

 、躨nput_line(istream& ins);

  input_line()函數(shù)需要使用形參ins輸入流,輸入一個字符串存放到value中,題意要求可以輸入空格,所以我們不能直接用輸入流ins和輸入運算符,因為輸入運算符會丟棄空白符、空格符和制表符,可以使用輸入流ins的成員函數(shù):get()和while循環(huán),逐個輸入字符存放到value下標i的字符中,直到輸入的字符為換行符或value存滿(i=max_length)為止,當這兩個條件滿足其一,那么就應(yīng)該停止輸入,另外需要注意:value指向的字符串結(jié)尾,必須包含空字符'\0',所以下標max_length-1必須是空字符,循環(huán)輸入時,i取值最大為max_length-2。

 、輔stream& operator << (ostream&outs,coast StringVar the_string);

  輸出運算符重載函數(shù),題意要求將the—strin9通過輸出流outs輸出,由于the_string是StringVar對象,所以輸出的應(yīng)該是對象的成員value指向的字符串,根據(jù)返回值可知,函數(shù)必須返回輸入流ostream的引用;另外由于第一形參是輸入流outs,所以無法通過StringVar對象來調(diào)用,該函數(shù)不是類的成員函數(shù),函數(shù)定義時,不能限定StringVar作用域,由于該函數(shù)不是類的成員函數(shù),所以使用輸出流outs輸出value指向的字符串時,不能直接使用私有成員value,而是應(yīng)該使用getValue()公有成員函數(shù),返回value的值,再輸出。

掃描/長按二維碼幫助考試通關(guān)
2017等考各科真題答案
2017等考各科通關(guān)技巧
2017各科最新預(yù)測試卷
2017等考成績查詢時間

微信搜索"考試吧"了解更多考試資訊、下載備考資料

上一頁  1 2 3 

  相關(guān)推薦:

  2017年全國計算機等級考試時間|教材目錄(2017年版)

  2017年9月計算機等級考試真題|算機等級考試答案

  各地2017年9月計算機等考成績查詢時間|免費查分提醒

  計算機等級考試成績評定流程及標準|合格證書樣本及證書說明

  歷年真題匯總|考試吧特別策劃:2017年計算機等級考試報考指南

0
收藏該文章
0
收藏該文章
文章責編:wangmeng  
看了本文的網(wǎng)友還看了
文章搜索
萬題庫小程序
萬題庫小程序
·章節(jié)視頻 ·章節(jié)練習
·免費真題 ·?荚囶}
微信掃碼,立即獲。
掃碼免費使用
版權(quán)聲明:如果計算機等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網(wǎng) 出版物經(jīng)營許可證新出發(fā)京批字第直170033號 
京ICP證060677 京ICP備05005269號 中國科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧