- 相關推薦
2017年9月計算機二級考試C++上機操作題
計算機二級考試C++是有一定難度的考試,這就要求大家在平時要多做練習。下面小編為大家整理了2017年9月計算機二級考試C++上機操作題,希望能幫到大家!

基本操作題
1[簡答題]
請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中含有一個源程序文件proj1.cpp。其中位于每個注釋“// ERROR **********found **********”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結果為:
NUM=0
Value=1
注意:只修改注釋“// ERROR ****found ****”的下一行語句,不要改動程序中的其他內容。
參考解析:【參考答案】 (1)MyClass(int i=0):NUM(0){
(2)void Increment(MyClass&f){f._i++;}
(3)Increment(obj);
【考點分析】
本題考查的是MyClass類,其中涉及友元函數、構造函數、常量數據成員、成員函數和友元函數的調用。友元函數的定義要與函數聲明相呼應,即返回值、參數類型、參數個數要一致。友元函數的調用不需要使用類名和作用域。
【解題思路】
(1)主要考查考生對常量數據成員初始化方法的掌握,常量數據成員的初始化只能通過構造函數的成員初始化列表進行,并且要使用關鍵字const修飾。該題的前一條語句const int NUM;,說明NUM是常量數據成員。
(2)主要考查考生對友元函數的掌握,友元函數的定義與聲明要一致,先看該友元函數的聲明部分:friend void Increment(MyClass& f);,返回類型為void,函數參數為MyClass& f;再比較出錯的語句:void Increment(){f._i++;},錯誤在于該函數沒有參數,應把MyClass & f填在括號內。
(3)主要考查友元函數的調用,友元函數并不屬于類,因此調用友元函數時不需要添加類名及作用域,只需要像調用普通函數一樣即可。
【解題寶典】
類的常量數據成員初始化必須使用成員初始化列表進行,否則必然出錯。友元函數與普通函數的區別在于,友元函數可以通過對象名調用類的全部成員,包括私有成員。所有函數的聲明和定義必須一致,包括函數返回值、參數類型、參數個數及有無const關鍵字。
簡單應用題
2[簡答題]
請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件main.cpp,其中有日期類Date、人員類Person及排序函數sortByName和主函數main的定義。請在程序中的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義和函數定義。此程序的正確輸出結果應為:
按姓名排序
排序前
張三男 出生日期:1978年4月20日
王五女出生日期:1965年8月3日
楊六女出生日期:1965年9月5日
李四男 出生日期:1973年5月30日
排序后:
李四男出生日期:1973年5月30日
王五女出生日期:1965年8月3日
楊六女出生日期:1965年9月5日
張三男出生日期:1978年4月20日
注意:只能在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“// ****found ****”。
參考解析:【參考答案】 (1)is_male(is_male),birth_date(birth_date)
(2)return strcmp(name,p.getName());
(3) <
【考點分析】
本題考查Date類和Person類,其中涉及構造函數、const函數、bool型私有成員及成員函數,以及strcmp()函數。
【解題思路】
(1)主要考查考生對構造函數的掌握,由函數體內strcpy(this- >name,name);可知,要使用成員列表初始化的成員為is_male和birth_date。
(2)主要考查考生對strcmp()函數的掌握,先看程序對該函數的功能要求:利用strcmp()函數比較姓名,返回一個正數、0或負數,分別表示大于、等于、小于。因為strcmp()函數的功能是比較字符串大小,因此可以直接被return語句調用:return strcmp(name,p.getName());。
(3)主要考查考生對成員函數的掌握,程序的注釋為:顯示出生月,由此可以知道這里要輸出出生月份,直接調用函數getMonth()即可。
【解題寶典】
strcmp()函數、strcpy()函數、strlen()函數等是經常會用到的系統函數,要了解各個函數的功能:strait(連接)、strcly(復制)、strump(比較)、strlen(求長度)。
綜合應用題
3[簡答題]
請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程文件proj3,此工程中包含一個源程序文件proj3.cpp,其中定義了用于表示平面坐標系中的點的類MyPoint和表示矩形的類MyRectangle;程序應當顯示:
(0,2)(2,2)(2,0)(0,0)4
但程序中有缺失部分,請按照以下提示,把缺失部分補充完整:
(1)在 “//** 1 ** **** found ****”的下方是構造函數的定義,它用參數提供的左上角和右下角的坐標對upjeft和down_right進行初始化。
(2)在 “//** 2 ** **** found ****”的下方是成員函數getDownLeft的定義中的一條語句。函數getDownLefit返回用MyPoint對象表示的矩形的左下角。
(3)在 “//** 3 ** **** found ****”的下方是成員函數area的定義,它返回矩形的面積。
注意:只在指定位置編寫適當代碼,不要改動程序中的其他內容,也不要刪除或移動“**** found ****”。
參考解析:【參考答案】 (1)MyPoint pl,MyPoint p2
(2)up_left.getX(),down-right.getY()
(3)double MyRectangle::
【考點分析】
本題考查表示平面坐標系中的點的類MyPoint、表示矩形的類MyRectangle、構造函數和成員函數。
【解題思路】
(1)考查構造函數,構造函數中的參數要給私有成員賦值,在下句中up_left(p1),down_right(p2){}指出私有成員賦值要使用形參p1和p2,因此這里參數要定義為MyPoint p1,MyPoint p2。
(2)主要考查成員函數的返回語句,MyPoint My
Rectangle::getDownLeft()const函數要求返回一個左下角的點坐標,因此使用語句MyPoint(up_left.getX(),down_right.getY());。
(3)主要考查成員函數的定義,在MyRectangle類中已經聲明double area()const,因此此處只要添加double MyRectangle::即可。
【解題寶典】
構造函數的參數定義時要注意在賦值語句中使用的參數。考查構造函數一般都會考查到形參,應注意聯系上下文。類的成員函數在類外定義時要在函數名前面加上:返回值類型+類名+作用域(::)。
【9月計算機二級考試C++上機操作題】相關文章:
2016年12月計算機二級C++上機練習09-28