因害怕计算机等级考试不过关而不敢去尝试做二级C++操作练习题,永远不能战胜自己。
2019年9月二级C++试题
【1】
简单应用题
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。
(1)funl(intn)求出n的阶乘,必须使用递归调用。
(2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。
注意:不能修改函数的其他部分。
试题程序:
#include
//必须使用递归
intfunl(intn)
{
}
//不能使用递归
intfun2(intn)
{
}
voidmain()
{
inti;
cout<<"请输入一个整数:"<<ENDL;< p>
cin>>i;
cout<<"输入数字的阶乘是:"<<FUNL(I)<<ENDL;< p>
cout<<"输入数字的阶乘是:"<<FUN2(I)<<ENDL;< p>
return;
}
答案://必须使用递归
jntfunl(intn)
{
if(n<=0)
return0;
if(n==1)
return1;
returnn*funl(n-1);
};
//不能使用递归
intfun2(intn)
{
if(n<=0)
retturn0;
intres=1:
for(inti=1;i<=n;i++)
{
res*=i;
}
returnres;
}
【2】
综合应用题
使用VC++6.0打开源程序文件3.cpp。其中类TC用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将in.txt文件中的内容输出到
屏幕,并且将文件按照以上方式分割,存于文件out1.txt和out2.txt中。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)从输入文件中获得一个字符,并判断是否到文件结
尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。
(2)把获得的输入文件的内容存储到bur中,并且用len
记录下文件的长度。请在注释2后添加适当的语句。
(3)将输入文件的后一半内容存储在第二个文件中,请
在注释3后添加适当的语句。
(4)使用文件流对象打开输入文件in.txt,请在注释4
后添加适当的语句。
注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
试题程序:
#include
#include
#include<STDLIB.H)< p>
classTC
{
public:
TC(char*fileName)
{
len=0;
fstreaminfile;
infile.open(fileName,ios::in);
charch;
//********1********
while()
{
cout<<CH;< p>
//********2********
}
infile.close();
}
voidsplit()
{
fstreamoutfilel;
fstreamoutfile2;
outfile1.open("out1.txt",ios::out);
outfile2.open("out2.txt",ios::out);
inti=0:
for(i=0;i<LEN p 2;i++)<>
{
outfilel<<BUF[I];< p>
}
do
{
//********3********
}
while(i!=len);
outfilel.close();
outfile2.close();
}
prwate:
intlen;
charbuf[1024];
};
voidmain()
{
//********4********
TCobj();
obj.split();
return;
}
答案:(1)“while()”应改为“while(infile.get(ch))”。
(2)应添加“bur[len++]=ch;bur[len]=ch;len++;”。
(3)应添加“outfile2<<BUR[I++];”或“OUTFILE2<<BUF[I];I++;”。< p>
(4)“TCobj();”应改为“TCobi("in.txt");”。
【3】
程序改错题
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序通过运行。
程序输出结果为
5
a
1
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error**
****的下面。
试题程序:
#include(iostream)
template(classT>
//********error********
tmin(tX,ty)
{
return(x>y)?y:x;
}
voidmain()
{
intn=5:’
//********error********
charc="a":
intd=1:
//********error********
cout<<MIN(N,N)<<ENDL:< p>
cout<<MIN(C,C)<<ENDL:< p>
cout<<MIN(D,D)<<ENDL:< p>
}
答案:(1)应改为“Tmin(TX,Ty)”。
(2)应改为“charc='a';”。
(3)应改为“usingnamespacestd;”。
【4】
简单应用题
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成fun函数,使其功能为将两个按小到大排序的数组a和b,复制合并成一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。
注意:不能修改程序的其他部分,只能修改fun函数。
试题程序:
#include
voidfun(inta[],intn,intb[],intm,int*c)
{
}
voidmain()
{
intA[]={3,5,7,9,11,18,21);
intB[]={6,15,19,21,39};
intC[25],i;
for(i=0;i<25;i++)C[i]=0;
cout<<"A[]=";
for(i=0;i<7;i++)
cout<<A[I]<<',';< p>
eout<<ENDL;< p>
cout<<"B[]=";
for(i=0;i<5;i++)
coul<<B[I]<<',';< p>
cout<<ENDL;< p>
fun(A,7,B,5,C);
cout<<"C[]=";
for(i=0;i<12;i++)
cout<<C[I]((',';< p>
cout<<ENDL:< p>
return:
}
答案:inti,j;
for(i=j=0;i(n&&j<M;)< p>
{
*c++=a[i]<B[J]?A[I++];B[J++]. p 比较两<>
个数组中元素大小
}
while(i<N)*C++=A[I++];< p>
while(j(m)*c++=b[j++];
【5】
综合应用题
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。请完成以下部分,实现在屏幕上输出为
C3
C2
这个程序需要修改的部分,请按照以下部分实现。
(1)类C0不能被实例化,请定义一个纯虚函数print,在注释1后添加适当的语句。
(2)类C1私有虚继承类C0,请在注释2后添加适当的语句。
(3)类C2公有继承于C0,请在注释3后添加适当的语句。
(4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。
注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
试题程序:
#include(iostream.h)
classCO
{
//********1********
};
//********2********
classC1:
{
public:
voidprint()
{
cout<"”C1"<<ENDL;< p>
}
};
//********3********
classC2:
{
public:
voidprint()
{
cout<<"C2"<<ENDL;< p>
}
};
//********4***x****
classC3:
{
public:
voidprint()
{
cout<<"C3"<<ENDL;< p>
}
};
voidmain()
{
C30bj3;
C20bj2;
obj3.print();
obj2.print();
return;
}
答案:(1)应添加“virtualvoidprint()=0,”。
(2)“classC1:”应改为“classC1:virtualprivateC0”。
(3)“classC2:”应改为“classC2:publicC0”。
(4)“classC3:”应改为“classC3:publicC2,publicC1”。
考无忧小编tips:
有时候经历越多越会明白,在这个世界上,总有几样东西是别人拿不走的。比如,你读过的书、看过的风景、复习过的二级C++操作练习题,更包括你那些曾经被嘲笑过的梦想。
文章推荐:
2019年全国计算机等级考试题库“二级MS Office 高级应用考试大纲”
全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)
温馨提示:
考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office
想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库
想知道更多关于计算机等级考试题库的最新资讯吗?点击进入>>>计算机等级考试题库资讯