2017年第49次计算机二级C++考试试题

文萃集 人气:2.62W

计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。下面是小编收集的关于计算机二级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;