2013年9月全国计算机等级《二级C++》上机模考试卷(3) - 233网校计算机二级题库:在线全真
1、 有下列程序:
#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");
}
程序运行后的输出结果是( )。
A.1012
B.810
C.1028
D.1016
2、有下列二叉树,对此二叉树中序遍历的结果县( )。
A.BDYEACFXZ
B.DYBEAFCZX
C.ABCDEFXYZ
D.ABDYECFXZ
3、
若变量已正确定义,有下列程序段
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);
其输出的结果是( )。
A.程序段有语法错
B.3,5,3
C.3,5,5
D.3,5,7
4、
若已定义
inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;
则对数组元素不正确的引用是( )。
A.a[p-a]
B.*(&a[i])
C.p[i]
D.*(*(a+i))
5、数据的存储结构是指( )。
A.数据所占的存储空间
B.数据的逻辑结构在计算机中的存放形式
C.数据在计算机中的顺序存储方式
D.存储在计算机外存中的数据
6、
下列有关模板的叙述中,正确的是( )。
A.函数模板不能含有常规形参
B.函数模板的一个实例就是一个函数定义
C.类模板的成员函数不能是模板函数
D.用类模板定义对象时,绝对不能省略模板实参
7、
设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为( )。
A.课号、成绩
B.学号、成绩
C.学号、课号
D.学号、姓名、成绩
8、
结构化程序所要求的基本结构不包括( )。
A.顺序结构
B.GOT0跳转
C.选择(分支)结构
D.重复(循环)结构
9、
已知主函数中通过如下语句序列实觋对函数模板swap的调用:
inta[10],b[1O];
swap(a,b,10);
下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是( )。
A.template
voidswap(Ta[],Tb[],intsize);
B.template
voidswap(intsize,Ta[],Tb[]);
C.template
voidswap(T1a[],T2b[],intsize);
D.template
voidswap(T1a[],T2b[],intsize);
10、
定义无符号整数为Uint,下面可以作为类Uint实例化值的是( )。
A.-369
B.369
C.0.369
D.整数集合{1,2,3,4,5}
11、
下列叙述中,不属于软件需求规格说明书的作用的是( )。
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
12、
下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
A.循环队列
B.栈
C.队列
D.二叉树
13、
有如下程序:
#include
usingnamespacestd;
classVAC{
public;
intf()const(return3;}
intf(){return5;}
};
Intmain(){
VACv1:
constVACv2;
则由关系R得到关系T的操作是( )。
下列操作中正确的是( )。
cout<
}
运行时的输出结果是()。
A.53
B.35
C.55
D.33
14、
将E—R图转换为关系模式时,实体和联系都可以表示为( )。
A.属性
B.键
C.关系
D.域
15、
在函数中,可以用aut0、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。
A.auto
B.extern
C.register
D.static
16、
下列关于函数模板的描述中,正确的是( )。
A.函数模板是一个实例函数
B.使用函数模板定义的函数没有返回类型
C.函数模板的类型参数与函数的参数相同
D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数
17、
下列关于文件流的描述中,正确的是( )。
A.文件流只能完成针对磁盘文件的输入、输出
B.建立一个文件流对象时,必须同时打开一个文件
C.若输入流要打开的文件不存在,将建立一个新文件
D.若输出流要打开的文件不存在,将建立一个新文件
18、
下列说法正确的是( )。
A.内联函数在运行时将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
19、
有下列程序:
#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文件的内容是( )。
A.China
B.Chinang
C.ChinaBeijing
D.BeijingChina
20、
下列叙述中正确的是( )。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述三种说法都不对
21、
设有定义语句int(*f)(int);,则下列叙述正确的是( )。
A.f是基类型为int的指针变量
B.f是指向函数的指针变量,该函数具有一个int类型的形态
C.f是指向int类型一维数组的指针变量
D.f是函数名,该函数的返回值是其类型为int类型的地址
22、
为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是( )。
A.+
B.=
C.<<
D.++
23、
有两个关系R和T如下所示:
A.选择
B.投影
C.交
D.并
24、
下列叙述中错误的是( )。
A.gets函数用于从终端读入字符串
B.getchar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
25、
下列程序的执行结果是( )。
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"<
cout<<"x!=y"<
voiddisp()
{
cout<<"x="<
voidmain()
{
Samples1(2,3);
s1.disp();
}
A.x=2,y=2
B.x=3,y=3
C.x=2,y=3
D.x=3,y=2
26、
有如下程序:
#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
B.yx
C.X
D.y
27、
已知类MyClass的定义如下:
ClassMyClass{
public:
MyClass(intd){data=d;}
~MyClass(){}
private:
intdata;
};
下列对MyClass类对象数组的定义和初始化语句中,正确的是( )。
A.MyClassarray[2];
B.MyClassarray[2]={MyClass(5)};
C.MyClassarray[2]={MyClass(5),Myclass(6)};
D.MyClass*array=newMyClass[2];
28、
下列关于二叉树的叙述中,正确的是( )。
A.叶子结点总是比度为2的结点少一个
B.叶子结点总是比度为2的结点多一个
C.叶子结点数是度为2的结点数的两倍
D.度为2的结点数是度为1的结点数的两倍
29、
下列是关于派生类声明的开始部分,其中正确的是( )。
A.classvirtualB:publicA
B.virtualclassB:publicA
C.classB:publicAvirtual
D.classB:virtualpublicA
30、
针对数组定义intdata[10];,下列表述中错误的是( )。
A.用*data可访问到数组的首元素
B.用data[9]可访问到数组的末元素
C.用data[10]访问数组元素会超出数组边界
D.data共有10个元素,其首元素是data[1]
31、
下列关于纯虚函数与抽象类的描述中,错误的是( )。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具有纯虚函数的类
C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
32、
若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
A.Data+{Data};
B.Dataoperator+{Data};
C.Data+operator{Data};
D.operator+{Data.Data};
33、
下列关于构造函数和析构函数的描述,错误的是( )。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D.构造函数可以声明为虚函数
34、设有如下三个关系表:
A.T=R∩S
B.T=R∪S
C.T=R×S
D.T=R/S
35、
类模板的使用实际上是将类模板实例化成一个具体的( )。
A.类
B.对象
C.函数
D.模扳类
36、
有如下程序:
#included
usingnamespacestd;
classTestClass{
protected:
TestClass( ){cout<<'X';}
TestClass(charc){cout<
public:
TestClassl(charc){cout<
TestClassld1('y');
return0;}
执行这个程序,屏幕上将显示输出( )。
A.y
B.yx
C.xy
D.yy
37、下面程序的运行结果是( )。
#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
B.3120
C.O312
D.3012
38、
下列字符串中可以用作C++语言标识符的是( )。
A.1234
B.foo~~bar
C.virtual
D.34var
39、
下列有关数据库的叙述,正确的是( )。
A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
40、
下面有关重载函数的描述中正确的是( )。
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须具有不同的形参列表
D.重载函数名可以不同
二、程序改错题(18分)
41、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错.请改正其中的错误,使程序正常运行,并使程序输出的结果为
Maxis7
提示:max函数用于找出两个数中的最大值,并作为函
数值返回。
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include
usingnamespacestd;
//******error******
intmax(inta,intb)
{
if(a
{
intt=a;
a=b:
b=t;
}
returnb;
}
intmain()
{
intm=-3:
intn=7:
//******error******
max(-3,n);
cout<<"Maxis"<
}
三、简单应用题(24分)
42、使用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
cout<
}
cout<
}
四、综合应用题(18分)
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<<<
}
题库优势
相关阅读