全国计算机二级考试C++语言程序设计上机考试试题及答案
一、程序改错题
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:
TC1:0
TC2
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
structTC1
{
TCl(inti=0)
{
m_i=i;
}
voidprint()
{
cout<<"TCl:"<}
intm_i;
};
classTC2
{
public:
TC2()
{
}
voidprint()
{
cout<<"TC2"<}
//********error********
private:
~TC2()
{
}
};
intmain()
{
//********error********
TC1obj1();
//********error********
TC20bj2();
obj1.print();
obj2.print();
return0;
}
二、简单应用题
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成函数fun(char*S,inta[]),其功能是把字符串S中的数字提取出来存储在a[]中,然后返回数字的个数。
例如s="1234abcdef567",则a[]中存储着1234567,返回7。
注意:不能修改程序的其他部分,只能修改fun函数。
试题程序:
#include(iostream.h>
intfun(char*s,inta[])
{
}
intmain()
{
inta[1024];
intlen=fun("1234abedef567",a);
for(inti=0;i{
COUt<}
cout }
三、综合应用题
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成类的构造函数功能,请在注释1后添加适当的语句。
(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。
(3)定义类的友元函数fun,请在注释3后添加适当的语句。
(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include
classPeople
{
public:
//********1********
{
inti;
for(i=0;sUserName[i]!=0;i++)
{m_UserName[i]=sUserName[i];
}
//********2********
m_Old=nOld;
}
private:
charm_UserName[32];
intm_Old;
//********3********
};
voidfun(char*s,People&personl,People&person2
{
//********4********
if()
{
for(inti=0;personl.m_UserName[i]!=0;i+
+)
{
s[i]=personl.m_UserName[i];
s[i+1]=0;
}
}
else
{
for(inti=0;person2.m_UserName[i]!=0;i+
+)
{s[i]=person2.m_UserName[i];
s[i+1]=0;
}
}
}
voidmain()
{
chars[32];
Peoplepl("abc",20);
Peoplep2("def",30):
fun(S,p1,p2);
cout }
一、程序改错题
(1)应改为“public:”。
(2)应改为“TClobj1(0);”或“TClobjl;”。
(3)应改为“TC20bj2;”。
【解析】本题第1处的“private:~TC2()”是析构函数,它不是私有的,所以这里应该删除“private:”或修改为“pub-lic:”。第2处的“TClobjl();”语句是定义一个TCl类型的对象objl(),根据类TCl构造函数的定义“TCl(inti=o)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为“TClobjl(0);或TClobil;”。第3处的“TC20bj2();”语句修改为“TC20bj2;”。
二、简单应用题
intj=0;
for(inti=0;s[i]!=0;i++)//字符串内循环
{
if(s[i]>=’0’&&s[i]<=’9’)//判断字符是否为0
~9的字符
a[j++]=s[i]-’0’;//如果为0~9的字符,转换
为整型
}
}
returnj;//返回数字个数
【解析】本题中变量j用来记录转换的个数,首先初始化为0,然后利用for循环判断每一个当前字符是否为数字字符。如果为数字字符,就将其减去字符“0”,即实现字符和整型的转换,并且将j的变量值加1。
三、综合应用题
(1)应添加“People(char*sUserName,intnOld)”。
(2)应添加“m_UserName[i]=0;”。
(3)应添加“friendvoidfun(char*s,People&personl,People&person2);”。
(4)将“if()”补充完整为“if(personl.m_Old)person2.mOld)”。
【解析】本题第1处要求“完成类的构造函数”。根据
“classPeople”语句知道People为类,所以类People的构造函数名为People,根据第1处的大括弧中的语句知道函数中的参数为数组sUserName存放姓名,整型nOld存放年龄,所以补充构造函数定义为“People(char*sUserName,intnOtd)”。第2处要求“完成构造函数对姓名的贼值”。第2处补全姓名赋值,即“m_UserName[i]=0;”。第3处要求“定义类的友元函数fun”。在C++中,如果在本类以外的其他地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中的fun函数定义为“voidfun(char*S,People&personl,People&person2)”,所以声明fun()为类People的友元函数,即这里补全“friendvoktfun(char*s,People&personl,People&person2);”。第4处要求“补充函数fun的年龄比较”。类People中年龄的变量为m_Old,根据C++中类变量的调用格式补充第4处if语句中的条件判断语句,即“if(per-sonl.m_O1d)person2.m_Old)”。
全国计算机等级考试计算机基础及Photoshop应用试题答案汇总(6套)
[Photoshop应用]2017年2月3日全国计算机等级考试四级数据库系统工程师试题及答案汇总(22套)
[数据库工程师]2017年2月2日全国计算机一级考试模拟试题及答案300题
[WPS Office应用]2017年1月22日2017年3月全国计算机等级考试报名时间及报名入口汇总
[考试动态]2017年1月3日2017全国计算机等级考试考试大纲专题
[政策大纲]2017年1月3日