计算机类二级C++
2013年9月全国计算机等级《二级C++》上机模考试卷(3)
43 题含答案C++
1单选题1 / 43
有下列程序:
#include
intb=2:
intfun(int*k)
{b=*k+b;return(b);}
voidmain()
{inta[1O]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++){b=fun(&a[i])+b;printf
("%d",b);}
printf("\n");
}
程序运行后的输出结果是( )。
查看答案
C. 1028
2单选题2 / 43
有下列二叉树,对此二叉树中序遍历的结果县( )。
查看答案
B. DYBEAFCZX
3单选题3 / 43
若变量已正确定义,有下列程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(C!=a)C=b;
printf(”%d,%d,%d\n”,a,b,c);
其输出的结果是( )。
查看答案
B. 3,5,3
4单选题4 / 43
若已定义
inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;
则对数组元素不正确的引用是( )。
查看答案
D. *(*(a+i))
5单选题5 / 43
数据的存储结构是指( )。
查看答案
B. 数据的逻辑结构在计算机中的存放形式
6单选题6 / 43
下列有关模板的叙述中,正确的是( )。
查看答案
B. 函数模板的一个实例就是一个函数定义
7单选题7 / 43
设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为( )。
查看答案
C. 学号、课号
8单选题8 / 43
结构化程序所要求的基本结构不包括( )。
查看答案
B. GOT0跳转
9单选题9 / 43
已知主函数中通过如下语句序列实觋对函数模板swap的调用:
inta[10],b[1O];
swap(a,b,10);
下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是( )。
查看答案
B. template
voidswap(intsize,Ta[],Tb[]);
10单选题10 / 43
定义无符号整数为Uint,下面可以作为类Uint实例化值的是( )。
查看答案
B. 369
11单选题11 / 43
下列叙述中,不属于软件需求规格说明书的作用的是( )。
查看答案
D. 便于开发人员进行需求分析
12单选题12 / 43
下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
查看答案
B. 栈
13单选题13 / 43
有如下程序:
#include
usingnamespacestd;
classVAC{
public;
intf()const(return3;}
intf(){return5;}
};
Intmain(){
VACv1:
constVACv2;
cout<<v1.f()<
return0;
}
运行时的输出结果是()。
查看答案
A. 53
14单选题14 / 43
将E—R图转换为关系模式时,实体和联系都可以表示为( )。
查看答案
C. 关系
15单选题15 / 43
在函数中,可以用aut0、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。
查看答案
A. auto
16单选题16 / 43
下列关于函数模板的描述中,正确的是( )。
查看答案
D. 通过使用不同的类型参数,可以从函数模板得到不同的实例函数
17单选题17 / 43
下列关于文件流的描述中,正确的是( )。
查看答案
C. 若输入流要打开的文件不存在,将建立一个新文件
18单选题18 / 43
下列说法正确的是( )。
查看答案
B. 内联函数在编译时将该函数的目标代码插入每个调用该函数的地方
19单选题19 / 43
有下列程序:
#include
voidmain( )
{FILE*pf;
char*s1="China",*s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
rewind(pf);/*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后abc.dat文件的内容是( )。
查看答案
B. Chinang
20单选题20 / 43
下列叙述中正确的是( )。
查看答案
C. 在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
21单选题21 / 43
设有定义语句int(*f)(int);,则下列叙述正确的是( )。
查看答案
B. f是指向函数的指针变量,该函数具有一个int类型的形态
22单选题22 / 43
为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是( )。
查看答案
B. =
23单选题23 / 43
有两个关系R和T如下所示:
则由关系R得到关系T的操作是( )。
查看答案
A. 选择
24单选题24 / 43
下列叙述中错误的是( )。
查看答案
B. getchar函数用于从磁盘文件读入字符
25单选题25 / 43
下列程序的执行结果是( )。
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"<
else
cout<<"x!=y"<
}
voiddisp()
{
cout<<"x="<<x<<",y="<<y<<endl;}
};
voidmain()
{
Samples1(2,3);
s1.disp();
}
查看答案
C. x=2,y=3
26单选题26 / 43
有如下程序:
#included
usingnamespqcestd;
classTestClass
{
private;
charC;
public;
TestClass(charn):c(n){}
~TestClass()
{
cout<
}
};
classTestClassl:publicTestClass
{
private:
charC;
public:
TestClassl(charn):TestClass(n+1),c(n){}~TestClassl()
{
cout<
}
};
intmain()
{
TestClasslobj('X');
return0;
}
执行上面的程序将输出( )。
查看答案
A. xy
27单选题27 / 43
已知类MyClass的定义如下:
ClassMyClass{
public:
MyClass(intd){data=d;}
~MyClass(){}
private:
intdata;
};
下列对MyClass类对象数组的定义和初始化语句中,正确的是( )。
查看答案
C. MyClassarray[2]={MyClass(5),Myclass(6)};
28单选题28 / 43
下列关于二叉树的叙述中,正确的是( )。
查看答案
B. 叶子结点总是比度为2的结点多一个
29单选题29 / 43
下列是关于派生类声明的开始部分,其中正确的是( )。
查看答案
D. classB:virtualpublicA
30单选题30 / 43
针对数组定义intdata[10];,下列表述中错误的是( )。
查看答案
D. data共有10个元素,其首元素是data[1]
31单选题31 / 43
下列关于纯虚函数与抽象类的描述中,错误的是( )。
查看答案
C. 一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
32单选题32 / 43
若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
查看答案
B. Dataoperator+{Data};
33单选题33 / 43
下列关于构造函数和析构函数的描述,错误的是( )。
查看答案
D. 构造函数可以声明为虚函数
34单选题34 / 43
设有如下三个关系表:
下列操作中正确的是( )。
查看答案
C. T=R×S
35单选题35 / 43
类模板的使用实际上是将类模板实例化成一个具体的( )。
查看答案
A. 类
36单选题36 / 43
有如下程序:
#included
usingnamespacestd;
classTestClass{
protected:
TestClass( ){cout<<'X';}
TestClass(charc){cout<
classTestClassl:publicTestClass{
public:
TestClassl(charc){cout<
intmain( ){
TestClassld1('y');
return0;}
执行这个程序,屏幕上将显示输出( )。
查看答案
C. xy
37单选题37 / 43
下面程序的运行结果是( )。
#include
classbase{
protected:
inta;
public:
base(){cout<<"0";}
};
classbasel:virtualbase{
public:
basel(){cout<<"1";}
};
classbase2:virtualbase{
public:
base2(){cout<<"2";}
};
classderived:publicbasel,publicbase2{
public:
derived(){cout<<"3";}
};
voidmain()
{
derivedobj;
eout<
}
查看答案
A. 0123
38单选题38 / 43
下列字符串中可以用作C++语言标识符的是( )。
查看答案
A. 1234
39单选题39 / 43
下列有关数据库的叙述,正确的是( )。
查看答案
D. 如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
40单选题40 / 43
下面有关重载函数的描述中正确的是( )。
查看答案
C. 重载函数必须具有不同的形参列表
41主观题41 / 43
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错.请改正其中的错误,使程序正常运行,并使程序输出的结果为
Maxis7
提示:max函数用于找出两个数中的最大值,并作为函
数值返回。
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include
usingnamespacestd;
//******error******
intmax(inta,intb)
{
if(a<b)
{
intt=a;
a=b:
b=t;
}
returnb;
}
intmain()
{
intm=-3:
intn=7:
//******error******
max(-3,n);
cout<<"Maxis"<<m<
return0;
}
查看答案
(1)应改为“intmAx(int&A,int&B)”。
(2)应改为“mAx(m,n);”。
42主观题42 / 43
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法对数组数据进行排序。所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组变成有序的,并且按由大到小排序。
注意:不能修改和删除程序的其他部分,也不能修改程序的结构。
试题程序:
#include
#defineN10
voidsort(intA[N],intn)
{
}
intmain()
{
intA[N]={1,50,17,69,87,42,90,-6,O,-11};
sort(A,10);
for(inti=0;i<sizeof(a)/sizeof(int);i++)
{
cout<<a[i]<<'';
}
cout<
return0;
}
查看答案
inti,j,k,t;
For(i=0;i(n-1;i++)
{
For(k=i,j=i+1;j<n;j++)
iF(A[k]<A[j])//如果前面的比后面的小则需要交换
k=j;
iF(k!=i)//交换
{
t=AEi3;
A[i]=A[k];
A[k]=t;
}
43主观题43 / 43
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类
的定义补充完整,使得程序的输出结果为21。
(1)增加静态私有变量Num,类型为int,请在注释1后添加适当的语句。
(2)增加静态变量Num并初始化为10,请在注释2后添加适当的语句。
(3)完成静态函数get的定义,请在注释3后添加适当的语句。
(4)完成对象obj对静态函数get的调用,使得输出结果
为21,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include
classTC
{
//********1********
intOwn;
public:
TC(inti)
{
Own=i;
}
//********2********
{
returnNum+obj->Own;
}
};
//********3********
intmain()
{
TCobj(11);
//********4********
cout<<<
return0;
}
查看答案
(1)应添加“stAtiCintNum;”。
(2)应添加“intTC::Num=10;”。
(3)应添加“stAtiCintGEt(TC*oBj)”。
(4)将“Cout<<<<EnDl;”补充完整为“Cout<<oBj.GEt(&oBi)<<EnDl;”。