2018年计算机二级C语言考试冲刺练习题及答案,共6卷,44页,欢迎学习。
2018年12月计算机二级C语言冲刺试题及答案(1)
程序改错题
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为
TC1
TC2
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
#include structTCO
{
//********error********
virtualvoidfun();
};
classTCl:publicTCO
{
voidfun()
{
cout<
};
classTC2:publicTCO
{
voidfun()
{
cout<
};
voidmain()
{
TCO"P;
TClobj1;
TC2obj2;
//********error********
p=*obj1;
p->fun();
//********error********
p=*obj2;
p->fun();
return;
}
参考答案:
(1)应改为“virtualvoidfun()=0;”。
(2)应改为“p=&obj1;”。
(3)应改为“p=&obj2;”。
【解析】如果在基类中不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun应该是纯虚函数,也就是声明虚函数时初始化为0的函数。即第2处的“virtualvoidfun()=0;”。第2处的P为指针变量,将对象obj1赋值给P,实际上蹙P指向对象obj1的地址,所以将“p=*obj1;”修改为“P=&obj1;”。第3处的“P=*obj2;”修改为“p=&obj2;”。
简单应用题
使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,
并且每输出一个3位数就换一行。
程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。
试题程序:
#include
voidfun(intN[4])
{
}
intmain()
intN[4]={1,2,3,0};
fun(N):
return0;
}
参考答案:
inti,j,k;
for(i=0;i<4;i++)//百位循环
{
for(j=0;j<4;j++)//十位循环
for(k=0;k<4;k++)//个位循环
{
if(i!=j&&j!=k&&k!=i&&N[i]!=0)//
当三位数不同,并且百位不为0
{
cout
}
}
【解析】本题利用3层循环,对3位数字是否相同进行判断。如果3位数不同,并且百位不为0,那么依次输出这3 位数,即由3位数组成的数字。
综合应用题
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。
(1)基类People完成打印功能,定义其中的打印函数为
虚函数,请在注释1后添加适当的语句。
(2)类Boy继承于People,在构造函数中设置性别为1,
请在注释2后添加适当的语句。
(3)类Girl继承于People,在构造函数中设置性别为0,请在注释3后添加适当的语句。
(4)实现函数fun,用于传递不同的类型,打印出性别,请在注释4后添加适当的语句。
输出的内容如下:
Sex=Boy
Sex=Girl
注意:除在指定位暨添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include
classPeople
{
public:
//********1********
voidprint(){}
intsex;
};
classBoy:publicPeople
{
publiC:
Boy()
{
//********2********}
voidprint()
{
cout<
};
classGirl:publicP