计算机类二级C++
2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(1)
43 题含答案C++
1单选题1 / 43
如果表达式-x/y中的“--”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为( )。
查看答案
B. operator/(operator--(x),y);
2单选题2 / 43
有下列程序:
#include
intfun(inta.intb)
{if(b==0)relurna;
elsereturn(fun(--a,--b));
}
voidmain( )
{printf("%d\n",fun(4,2));}
程序的运行结果是( )。
查看答案
B. 2
3单选题3 / 43
有下列程序:
#includeintf(intx,inty)
{return((y-x)*x);}
voidmain( )
{inta=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n",d);
}
程序运行后的输出结果是( )。
查看答案
B. 9
4单选题4 / 43
有如下程序:
#include
Usingnamespacestd;
classBase{
public:
Base(intx=O):valB(x){cout<<valb;)
~Base( ){cout<<valb;)
Private:
intvalB:
};
classDerived:publicBase{
public:
Derived(intX=0,inty=0):Base(x),valD(y)(cout<<vald;)
~Derived( ){cout<<vald;)
private:
intvalD;
};
intmain( ){
Derivedobj12(2,3);
return0;
}
运行时的输出结果是( )。
查看答案
A. 2332
5单选题5 / 43
执行下列语句序列:
inti=0;while(i<25)i+=3;cout<
输出结果是( )。
查看答案
C. 27
6单选题6 / 43
有下列程序:
#include
#include"string.h"
voidfun(char*s[],intn)
{
char*t;inti,j
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i]>strlen(s[j])){t=s[i];s[i]=s
[j];s[j]=t;}
}
voidmain( )
{
char*ss[]=("bcc","bbcc","xy","aaaacc","aab—
cc"};
fun(ss,5);printf("%s,%s\n",ss[O],ss[4]);}
程序的运行结果是( )。
查看答案
A. xy,aaaacc
7单选题7 / 43
有如下程序:
#include
usingnamespacestd;
classAA{
intn;
public:
AA(intk):n(k){}
intget(){returnn;}
intget()const{returnn+1;}
};
intmain()
{
AAa(5);
constAAb(6);
cout<<a.get()<
return0;
}
执行后的输出结果是()。
查看答案
B. 57
8单选题8 / 43
假定已建立以下链表结构,且指针P和q已指向如下图所示的结点:
则下列选项中可将q所指点从链表中删除并释放该结点的语句组是( )。
查看答案
D. p->next=q->next;free(q);
9单选题9 / 43
下列关于函数的描述中,错误的是( )。
查看答案
D. 函数不能被定义为模板
10单选题10 / 43
若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。
查看答案
A. operatorlong()const;
11单选题11 / 43
用树型结构表示实体之间联系的模型是( )。
查看答案
C. 层次模型
12单选题12 / 43
有如下两个类定义:
classXX{
private:
doublexl;
protected:
doublex2;
public:
doublex3;
};
claseYY:protectedXX{
private:
doubleyl;
protected:
doubley2;
public:
doubley3;
};
在类YY中保护成员变量的个数是( )。
查看答案
C. 3
13单选题13 / 43
如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是( )。
查看答案
B. e2、e4、e3、e1
14单选题14 / 43
当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是( )。
查看答案
B. 公有或保护
15单选题15 / 43
设有定义“intx=2;”,下列表达式中,值不为6的是( )。
查看答案
D. 2*x,x+=2
16单选题16 / 43
在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
查看答案
C. O(log2n)
17单选题17 / 43
有以下程序:
#include
usingnamespacestd;
classA
{private:
inta:
public:
A(inti)
{a=i;}
voiddisp()
{cout<<a<<",";));
classB
(private:
intb;
public:
B(intj)
{b=j;}
voiddisp()
{cout<<b<<",";}};
classC:publicB,publicA
{private:
intC;
public:
c(intk):A(k-2),B(k+2)
{c=k;
}
voiddisp()
{
a::disp();
B::disp();
COUt<<c<
}
};
intmain()
{
Cobj(10);
obj.disp();
return0;
}
程序执行后的输出结果是( )。
查看答案
D. 8,12,10
18单选题18 / 43
为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
查看答案
A. 内联函数
19单选题19 / 43
类MyClass的定义如下:
classMyClass
{
public:
MyClass(){value=0;}
SetVariable(inti){valtic=i;}
private:
intvalue;
};
MyClass*P,my;p=&my;
则对下列语句序列正确的描述是( )。
查看答案
D. 语句P->SetVariable(5)与语句my.SetVariable(5)等价
20单选题20 / 43
若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。
查看答案
A. operatorlong( )const;
21单选题21 / 43
有如下程序:
#include
usingnamespacestd;
voidf1(int&X,int&y){intz=X;x=y;y=z}
voidf2(intX,inty){intz=x;x=y;y=z}
intmain( ){
intx=10,y=26
f1(x,y);
f2(X,y);
cout<<y<
return0;
}
运行时的输出结果是( )。
查看答案
A. 10
22单选题22 / 43
下面程序的输出结果是( )。#include
#include
voidmain()
{
charp1[10],p2[10];
strcpy(p1,"abc");
strcpy(p2,"ABC");
charstr[50]="xyz":
strcpy(str+2,strcat(p1,p2));
cout<
}
查看答案
C. xyabcABC
23单选题23 / 43
有下列程序:
#include
voidmain( )
{FILE*f;
f=fopen("filea.txt","w");
fprintf(f,"abe");
fclose(f);
}
若文本文件filea.txt中原有内容hell0,则运行以上程序后,文件Iilea.txt中的内容为( )。
查看答案
C. abe
24单选题24 / 43
若执行下面的程序时,从键盘上输入5和2,则输出结果是( )。
#include(iostream.h)
voidmain( )
(inta,b,k;
cin>>a>>b;
k=a:
if(a<b)
k=a%b;
else
k=b%a:
cout((k<<endl;)
查看答案
C. 2
25单选题25 / 43
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
查看答案
D. 函数调用可以作为一个函数的形参
26单选题26 / 43
考虑以下的函数原型:
voldA(inta,intb=5,charZ='*');
下面的函数调用中,不正确的是( )。
查看答案
C. A(16,'#')
27单选题27 / 43
下列叙述中正确的是( )。
查看答案
A. 顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的
28单选题28 / 43
有如下程序:
#include
usingnamespacestd;
classTest(
public:
Test( ){}
Test(constTest8Lt){cout<<1;}
};
Testfun(Test&u){Testt=U;returnt;}
intmain( ){Testx,y;x=fun(y);return0;}
运行这个程序的输出结果是( )。
查看答案
C. 1l
29单选题29 / 43
与语句cout<
查看答案
D. cout<<'\0';
30单选题30 / 43
软件(程序)调试的任务是( )。
查看答案
A. 诊断和改正程序中的错误
31单选题31 / 43
下列关于C++函数的说明中,正确的是( )。
查看答案
C. 标准C++要求在调用一个函数之前,必须先声明其原型
32单选题32 / 43
程序中有语句:for(inti=0;i<5;i++)cout<<*(p+i)<<",";能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。
查看答案
A. int*p=a;
33单选题33 / 43
以下程序的输出结果是( )。min( )
{
inti=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0)break;
elsei--:
}
i+=11;a+=i;
}
cout<<a<
}
查看答案
B. 32
34单选题34 / 43
设有程序段:
intk=10。
while(k=O)k=k-1;
则下面描述中正确的是( )。
查看答案
C. 循环体语句一次也不执行
35单选题35 / 43
有如下类定义:
classXX{
intxdata;
public:
XX(intn=0):xdata(n){}
};
classYY:publicXX{
intydata;
public:
YY(intm=0,intn=O):XX(m),ydata(n){}
};
YY类的对象包含的数据成员的个数是( )。
查看答案
B. 2
36单选题36 / 43
下列关于类模板的描述中,错误的是( )。
查看答案
D. 类模板中只允许有一个类型参数
37单选题37 / 43
有以下程序:
#include
usingnamespaeestd;
classMyClass
{
public:
MyClass(intn){number=n;}
//拷贝构造函数
MyClass(MyClass&other){number=other.number;}
~MyClass(){}
private:
intnumber;
};
MyClassfun(MyClassp)
{
MyClasstemp(p);
returntemp;
}
intmain()
{
MyCIassobj1(10),obj2(O);
MyClassobj3(obj1);
obj2=fun(obj3);
return0;
程序执行时,MyClass类的拷贝构造函数被调用的次数是( )。
查看答案
B. 4
38单选题38 / 43
下列工具中为需求分析常用工具的是( )。
查看答案
D. DFD
39单选题39 / 43
下面的函数调用语句中func函数的实参个数是( )。
func(f2(vl,v2),(v3,v4,v5),(v6,max(v7,v8)));
查看答案
A. 3
40单选题40 / 43
数据流程图(DFD)是( )。
查看答案
C. 结构化方法的需求分析工具
41主观题41 / 43
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:
9,8,7,6,5
注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。
试题程序:
#include(iostream.h>
classTC
{
/********error********/
TC(inti)
{
m_i=i;
}
voidprint()
{
cout<<--m_i<<',';
}
public:
intm_i;
};
intmain()
{
/********error********/
inti();
TC04(10);
while(i>5)
{
/********errOr********/
i++:
04.print();
}
cout<
return0;
}
查看答案
(1)应添加“puBliC:”。
(2)“inti()”应改为“inti(10);”。
(3)“i++;”应改为“i--;”。
42主观题42 / 43
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数num(ehar*str)用于返回字符串中非数字的个数。
例如:abcl23abc45
返回值为:6
将函数num补充完整。
注意:请勿改动主函数main。
试题程序:
#include
intnum(char*str)
{
}
intmain()
{
charstr[1024];
cout<<"pleaseinputastring:"<
cin.getline(str,1024);
cout<<"charnumberis"<<num(str)<
return0;
}
查看答案
intnumBEr=0;
For(inti=0;sir[i]!=0;i++)
iF(str[i]>'9'‖str[i]<'0')//非数字字符
numBEr++:
returnnumber;
43主观题43 / 43
(1)应添加“virtualvoidGetNamt!()=0;”。
(2)应添加“constchar*GetName2()”。
(3)应添加“TC2(char*str)”。
(4)应添加“m_str[i]=0;”。
查看答案
使用VC++6.0打开考生文件夹下的源程序文件3.Cpp。程序通过继承关系,实现对姓名的控制。类TC1实现对名字访问的接口,TC2实现对名字的设置和输出。 程序输出为 TC2NAmEMAy其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)在类TCl中定义接口函数GEtNAmE为纯虚函数。请在注释1后添加适当的语句。
(2)函数GEtNAmE2用于获得名字的缓存,但只获得允许读操作这个缓存,请在注释2后添加适当的语句。
(3)实现TC2的构造函数,请在注释3后添加适当的语句。
(4)完成TC2的构造函数,实现对名字的处理。请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include<iostream.h>
classTC1
{
public:
//********1********
};
classTC2:publicTCl
{
public:
voidGetName()
{
cout<<"TC2Name"<<endl;
}
//********2********
{
returnm_str;
}
//********3********
{
inti:
for(i=0;str[i]!=0;i++)
m_str[i]=str[i];
//********4********
}
private:
charm_str[32];
};
voidmain()
{
TCl*P;
TC20bj1("May");
p=&objl;
p->GetName();
cout<<obj1.GetNamc2()<<endl;
return;
}