2017年第49次计算机二级C++考试试题
计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。下面是小编收集的关于计算机二级C++考试试题,希望大家认真阅读!
单选题
1). 结构化程序设计主要强调的是( )
A.程序的规模
B.程序的效率
C.程序设计语言的先进性
D.程序易读性
正确答案:D
2). 下面关于C++流的叙述中,正确的是( )。
A.cin是一个输入流对象
B.可以用ifstream定义一个输出流对象
C.执行语句序列char* y=″PQMN″;cout<
D.执行语句序列char x[80];cin.getline(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类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
A.Data+( Data);
B.Data operator+( Data);
C.Data+operator( Data);
D.operator+( Data.Data);
正确答案: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_2.cpp的内容如下:
#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_3.cpp,其中定义了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_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;
【2017年第49次计算机二级C++考试试题】相关文章:
计算机二级考试C++试题08-27
2017计算机二级C++考试试题06-05
2017计算机等级考试二级C++考试试题06-23
全国计算机二级C++考试试题05-27
计算机二级C++考试检测试题201706-22
2017年计算机二级C++考试试题06-22
2017年计算机二级C++考试试题及答案06-22