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