當前位置:才華齋>IT認證>計算機等級>

2017年第49次計算機二級C++考試試題

計算機等級 閱讀(1.46W)

計算機誕生初期,人們要使用計算機必須用機器語言或組合語言編寫程式。下面是小編收集的關於計算機二級C++考試試題,希望大家認真閱讀!

2017年第49次計算機二級C++考試試題

  單選題

1). 結構化程式設計主要強調的是( )

A.程式的規模

B.程式的效率

C.程式設計語言的先進性

D.程式易讀性

正確答案:D

2). 下面關於C++流的敘述中,正確的是( )。

是一個輸入流物件

B.可以用ifstream定義一個輸出流物件

C.執行語句序列char* y=″PQMN″;cout<

D.執行語句序列char x[80];ine(x,80);時,若輸入Happy new year,則x中的字串是″Happy″

正確答案:A

答案解析:本題考查C++流的概念和I/()的格式化。cin是istream類的物件,即輸入流物件。ifstream是輸入檔案流,類不能定義個輸出流物件。getline函式的功能是允許從輸入流中讀取多個字元,並且允許指定輸入終止,在讀取完成後,從讀取的內容中刪除該終止字元,所以D選項中的語句序列後x中字串應該是Happy new year。

3). 若已定義的函式有返回值,則以下關於該函式呼叫的敘述中錯誤的是( )。

A.函式呼叫可以作為獨立的語句存在

B.函式呼叫可以無返回值

C.函式呼叫可以出現在表示式中

D.函式呼叫可以作為、一個函式的形參

正確答案:D

答案解析:本題考查函式的呼叫方式。函式的形參和實參具有以下特點:①形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放分配的記憶體單元,因此,形參只有在函式內部有效,函式呼叫結束返回主調函式後則不能再使用該形參變數;②實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參,因此應通過預先用賦值、輸入等辦法使實參獲得確定值;③實參和形參在數量上、型別上、順序上應嚴格一致,否則會發生″型別不匹配″的錯誤;④函式呼叫中發生的資料傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。

4). 設int a=10,b=11,c=12;,表示式(a+b)

A.2

B.0

C.-2

D.1

正確答案:B

答案解析:本題考察的是運算子的優先順序,應該先計算a+b的值為21,然後與c比較大小的值為0,根據"&&"的運算規則,整個表示式的值為0。

5). 若要對Date類中過載的加法運算子成員函式進行宣告,下列選項中正確的是( )。

+( Data);

operator+( Data);

+operator( Data);

ator+( );

正確答案:B

答案解析:過載運算子的函式一般格式如下:函式型別operator運算子名稱(形參列表),因此選B。

6). 下列敘述中正確的是( )

A.迴圈佇列中的元素個數隨隊頭指標與隊尾指標的變化而動態變化

B.迴圈佇列中的元素個數隨隊頭指標的變化而動態變化

C.迴圈佇列中的元素個數隨隊尾指標的變化而動態變化

D.以上說法都不對

正確答案:A

答案解析:在迴圈佇列中,用隊尾指標rear指向佇列中的隊尾元素,用排頭指標front指向排頭元素的前一個位置。因此,從排頭指標front指向的後一個位置直到隊尾指標rear指向的位置之間所有的元素均為佇列中的元素。所以迴圈佇列中的元素個數與隊頭指標和隊尾指標的變化而變化,A正確。

  二、簡單應用題

請編寫一個函式int CalcDigital(char*str),該函式可返回字串str中數字字元(即“0”-“9”這10個數字)的`個數,如字串"olympic2008"中數字字元的個數為4。請用if條件判斷語句與for迴圈語句來實現該函式。

注意:部分源程式已存在檔案中。

請勿修改主函式main和其他函式中的任何內容,僅在函式CalcDigital的花括號中填寫若干語句。

檔案kt9_的內容如下:

#include

#include

using namespace std;

int CalcDigital(char*str);

void main()

{

char *str;

str=new char[255];

cout<<"輸入字串:";

cin>>str;

int num=CalcDigital(str);

cout<

}

int CalcDigital(char*str)

{

}

【參考答案】

int CalcDigital(char *str)

{

if(str==NULL) return 0;

int num_of_digital=0;

int len=strlen(str);

for(int i=0;i

if(str[i]<='9' && str[i]>='0') num_of_digital++;

return num_of_digital;

}

【試題解析】 本題考查對於if條件判斷語句與for迴圈語句的熟練使用程度。注意判斷條件(判斷是否是數字是直接比較ASCII碼)的使用。

【該題的另一個參考答案】

#include

#include

using namespace std;

int CalcDigital(char*str);

void main()

{

char *str;

str=new char[255];

cout<<"輸入字串:";

cin>>str;

int num=CalcDigital(str);

cout<

}

int CalcDigital(char*str)

{

int sum;

sum=0;

for (int i=0;i<255;i++)

{

if((str[i]>='0')&&(str[i]<='9')) sum++;

if(str[i]==NULL)break;//這裡是兩個=,如僅一個會使得str被賦值為空

}

return sum;

}

  三.綜合應用題

使用VC6開啟考生資料夾下的工程kt9_3,此工程包含一個源程式檔案kt9_,其中定義了Circle類與Money類,Circle類可對半徑為r的圓進行周長與面積的計算,而Money類用於計算一圓形游泳池的造價。游泳池四周有圓形過道,過道外圍上柵欄,過道寬度為3米,根據鍵入的游泳池半徑,每米柵欄價格及每平方米過道價格,即可計算出游泳池的造價。請按要求完成下列操作,將程式補充完整。

(1)定義符號常量PI(值為3.14159f)與WIDTH(值為3.00f),分別用於表示圓周率與過道的固定寬度。請在註釋“//**1**”之後新增適當的語句。

(2)定義Circle類預設建構函式,把私有成員radius初始化為引數r的值。請在註釋“//**2**”之後新增適當的語句;

(3)完成Money類預設建構函式的定義,把私有成員FencePrice(每米柵欄的價格)、ConcretePrice(每平方米過道的價格)初始化為引數f,c的值。請在註釋“//**3**”之後新增適當的語句。

(4)完成Money類成員函式floatMoney::TotalMoney(floatfencelen,floatconarea)的定義,根據引數fencelen(柵欄的長度)和conarea(過道的面積),返回柵欄與過道的總造價。請在註釋“//**4**”之後新增適當的語句。

注意:除在指定位置新增語句之外,請不要改動程式中的其他內容。

源程式檔案kt9_清單如下:

#include

using namespace std;

//**1**

class Circle

{

private:

float radius;

public:

//**2**

float Circumference(){return 2*PI*radius;}

float Area(){return PI*radius*radius;}

};

class Money

{

private:

float FencePrice;

float ConcretePrice;

public:

Money(float f,float c);

float TotalMoney(float fencelen,float conarea);

};

Money::Money(float f,float c)

{

//**3**

}

float Money::TotalMoney(float fencelen,float conarea)

{

//**4**

}

void main()

{

float radius,fence,concrete;

(ios::fixed);

(ios::showpoint);

ision(2);

cout<<"Enter the radius of the pool:";

cin>>radius;

cout<<"Enter the Fence Price:";

cin>>fence;

cout<<"Enter the Concrete Price:";

cin>>concrete;

Circle Pool(radius);

Circle PoolRim(radius+WIDTH);

Money mon(fence,concrete);

float totalmoney=lMoney(umference(),(()()));

cout<<"The total money is RMB"<

}}

【參考答案】

(1)const float PI = 3.14159f;

const float WIDTH =3.00f;

(2)Circle(float r):radius(r){};

(3)FencePrice=f;

ConcretePrice=c;

(4)return FencePrice*fencelen+ConcretePrice*conarea;