- 相關(guān)推薦
2017年第49次計算機二級C++考試試題
計算機誕生初期,人們要使用計算機必須用機器語言或匯編語言編寫程序。下面是小編收集的關(guān)于計算機二級C++考試試題,希望大家認真閱讀!
單選題
1). 結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是( )
A.程序的規(guī)模
B.程序的效率
C.程序設(shè)計語言的先進性
D.程序易讀性
正確答案:D
2). 下面關(guān)于C++流的敘述中,正確的是( )。
A.cin是一個輸入流對象
B.可以用ifstream定義一個輸出流對象
C.執(zhí)行語句序列char* y=″PQMN″;cout<
D.執(zhí)行語句序列char x[80];cin.getline(x,80);時,若輸入Happy new year,則x中的字符串是″Happy″
正確答案:A
答案解析:本題考查C++流的概念和I/()的格式化。cin是istream類的對象,即輸入流對象。ifstream是輸入文件流,類不能定義個輸出流對象。getline函數(shù)的功能是允許從輸入流中讀取多個字符,并且允許指定輸入終止,在讀取完成后,從讀取的內(nèi)容中刪除該終止字符,所以D選項中的語句序列后x中字符串應該是Happy new year。
3). 若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是( )。
A.函數(shù)調(diào)用可以作為獨立的語句存在
B.函數(shù)調(diào)用可以無返回值
C.函數(shù)調(diào)用可以出現(xiàn)在表達式中
D.函數(shù)調(diào)用可以作為、一個函數(shù)的形參
正確答案:D
答案解析:本題考查函數(shù)的調(diào)用方式。函數(shù)的形參和實參具有以下特點:①形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放分配的內(nèi)存單元,因此,形參只有在函數(shù)內(nèi)部有效,函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量;②實參可以是常量、變量、表達式、函數(shù)等,無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參,因此應通過預先用賦值、輸入等辦法使實參獲得確定值;③實參和形參在數(shù)量上、類型上、順序上應嚴格一致,否則會發(fā)生″類型不匹配″的錯誤;④函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化。
4). 設(shè)int a=10,b=11,c=12;,表達式(a+b)
A.2
B.0
C.-2
D.1
正確答案:B
答案解析:本題考察的是運算符的優(yōu)先級,應該先計算a+b的值為21,然后與c比較大小的值為0,根據(jù)"&&"的運算規(guī)則,整個表達式的值為0。
5). 若要對Date類中重載的加法運算符成員函數(shù)進行聲明,下列選項中正確的是( )。
A.Data+( Data);
B.Data operator+( Data);
C.Data+operator( Data);
D.operator+( Data.Data);
正確答案:B
答案解析:重載運算符的函數(shù)一般格式如下:函數(shù)類型operator運算符名稱(形參列表),因此選B。
6). 下列敘述中正確的是( )
A.循環(huán)隊列中的元素個數(shù)隨隊頭指針與隊尾指針的變化而動態(tài)變化
B.循環(huán)隊列中的元素個數(shù)隨隊頭指針的變化而動態(tài)變化
C.循環(huán)隊列中的元素個數(shù)隨隊尾指針的變化而動態(tài)變化
D.以上說法都不對
正確答案:A
答案解析:在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置。因此,從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素。所以循環(huán)隊列中的元素個數(shù)與隊頭指針和隊尾指針的變化而變化,A正確。
二、簡單應用題
請編寫一個函數(shù)int CalcDigital(char*str),該函數(shù)可返回字符串str中數(shù)字字符(即“0”-“9”這10個數(shù)字)的個數(shù),如字符串"olympic2008"中數(shù)字字符的個數(shù)為4。請用if條件判斷語句與for循環(huán)語句來實現(xiàn)該函數(shù)。
注意:部分源程序已存在文件中。
請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)CalcDigital的花括號中填寫若干語句。
文件kt9_2.cpp的內(nèi)容如下:
#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循環(huán)語句的熟練使用程度。注意判斷條件(判斷是否是數(shù)字是直接比較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_3.cpp,其中定義了Circle類與Money類,Circle類可對半徑為r的圓進行周長與面積的計算,而Money類用于計算一圓形游泳池的造價。游泳池四周有圓形過道,過道外圍上柵欄,過道寬度為3米,根據(jù)鍵入的游泳池半徑,每米柵欄價格及每平方米過道價格,即可計算出游泳池的造價。請按要求完成下列操作,將程序補充完整。
(1)定義符號常量PI(值為3.14159f)與WIDTH(值為3.00f),分別用于表示圓周率與過道的固定寬度。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)定義Circle類默認構(gòu)造函數(shù),把私有成員radius初始化為參數(shù)r的值。請在注釋“//**2**”之后添加適當?shù)恼Z句;
(3)完成Money類默認構(gòu)造函數(shù)的定義,把私有成員FencePrice(每米柵欄的價格)、ConcretePrice(每平方米過道的價格)初始化為參數(shù)f,c的值。請在注釋“//**3**”之后添加適當?shù)恼Z句。
(4)完成Money類成員函數(shù)floatMoney::TotalMoney(floatfencelen,floatconarea)的定義,根據(jù)參數(shù)fencelen(柵欄的長度)和conarea(過道的面積),返回柵欄與過道的總造價。請在注釋“//**4**”之后添加適當?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件kt9_3.cpp清單如下:
#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;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(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=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area()-Pool.Area()));
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;
【第49次計算機二級C++考試試題】相關(guān)文章:
計算機二級考試C++試題06-10
計算機二級考試C++試題及答案08-01
計算機二級考試C++試題及答案10-08
2017計算機二級C++考試試題10-20
2017全國計算機二級C++考試試題06-20
2016計算機等級考試二級C++上機模擬試題及答案07-14
2017年9月計算機二級C++考試試題05-13