2013年9月全国计算机等级《二级C++》考前冲刺试卷六
-
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。
(1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllN0,请在注释1后添加适当的语句。
(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。
(3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。
(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include(iostream.h>
classTCFruit
{
private:
floatWeight;
//********1********
staticintAllNo;
public:
TCFruit(floatw)
{
//********2********
AllWeight+=w:
AllNo++:
}
~TCFruit
{
//********3********
AllWeight-=Weight:
}
voiddisplay
{
cout<<"SellaFruitwith"<
endl;
cout<<”Allsellnumber:"
}
};
//********4********
floatTCFruit::AllWeight=0.0;
intmain
{
TCFruitFruitl(1.2);
Fruitl.display;
TCFruitFruit2(2.3);
Fruit2.display;
return0;
}
-
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为
Constructor,i=0,
Destructor
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include(iostream.h)
classTC
{
inti;
public:
TC;
voiddisplay;
~TC;
};
//******error******
TC:TC
{
cout<<"Constructor"<<",";
i=0;
)
//******error******
TC:display
{
tout<<"i="<
}
//******error******
TC:TC
{
COUI<<"Destructor"<
}
voidmain
{
TCa;
a.display;
}
-
使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)返回1,2,3,…,n的和。其中n大于0。
程序要求使用递归实现上述功能。
注意:不能修改程序的其他部分,只能补充sum函数。
试题程序:
#include
#include
intsum(intn)
{
}
voidmain()
{
cout<<"1+2+3+…+100="<
endl;
return;
}
-
数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( )。
- A.需求分析阶段
- B.逻辑设计阶段
- C.概念设计阶段
- D.物理设计阶段
-
下列函数的运行结果是( )。
#include
intadd(inta,intb);
voidmain()
{
externintX,y;
cout<}
intx(20),y(5);
intadd(inta,intb)
{
ints=a+b:
returns;
}
- A.25
- B.30
- C.20
- D.15
-
下列工具中为需求分析常用工具的是( )。
- A.PAD
- B.PFD
- C.N-S
- D.D.DFD
-
若有定义语句“doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x”,则错误引用X数组元素的是( )。
- A.*p
- B.x[5]
- C.*(p+1)
- D.*x
-
有以下程序:
#include
usingnamespacestd;
#defineP13.14
classPoint
{private:
intX,y;
public:
Point(inta,intb)
{x=a:
y=b;}
intgetx()
{returnX;}
intgety()
{returny;}};
classCircle:publicPoint
{private:
intr;
public:
Circle(inta,intb,intc):Point(a,b)
{r=C;}
intgetr()
{returnr;}
doublearea()
{returnPI*r*r;}};
intmain()
(Circlec1(5,7,10);
cout<
return0;}
程序执行后的输出结果是( )。
- A.314
- B.157
- C.78.5
- D.153.86
-
有如下程序:
#include
usingnamespacestd;
intmain(){
intf,f1=0,f2=1
for(inti=3;i<=6;i++){
f=f1+f2:
f1=f2:f2=f
}
cout<
return0;
}
运行时的输出结果是()。
- A.2
- B.3
- C.5
- D.8
-
按照“后进先出”原则组织数据的数据结构是( )。
- A.队列
- B.栈
- C.双向链表
- D.二叉树
-
关于静态数据成员的描述中正确的是( )。
- A.类的静态数据成员不是类的所有对象共享的数据
- B.类的静态数据成员不能被类的成员函数调用
- C.类的静态数据成员不能被类的构造函数调用
- D.类的静态数据成员必须进行初始化
-
有如下程序:
#include
#includediomanip>
usingnamespacestd;
intmain( ){
ints[]={123,234);
cout<
for(inti=0;i<2;i++){cout<
return0;
}
运行时的输出结果是( )。
- A.123
- B.***123 234234
- C.***123
- D.***123 ***234234***
-
下列描述中正确的是( )。
- A.软件工程只是解决软件项目的管理问题
- B.软件工程主要解决软件产品的生产率问题
- C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
- D.软件丁二程只是解决软件开发中的技术问题
-
下列关于类模板的描述中,错误的是( )。
- A.类模板的成员函数都是模板函数
- B.可以为类模板参数设置默认值
- C.类模板描述了一组类
- D.类模板中只允许有一个类型参数
-
关于continue语句叙述不正确的是( )。
- A.continue语句用于循环体中,结束循环
- B.continue语句用于循环体中,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断
- C.continue可以用于if语句中
- D.continue语句不能代替break语句
-
有如下类模板定义:
template
classBigNumber{
longn;
public;
BigNumber{Ti}:n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber{n+b.n);
}
};
已知b1、b2是BigNumber的两个对象,则下列表达中踏误的是( )。
- A.b1+b2
- B.b1+3
- C.3+b1
- D.3+3
-
下列关于栈的叙述正确的是( )。
- A.栈顶元素最先被删除
- B.栈顶元素最后才能被删除
- C.栈底元素永远不能被删除
- D.以上三种说法都不对
-
重载输人流运算符>>必须使用的原型为( )。
- A.istream&operator>>(istream&,<类名>&);
- B.istream&operator>>(istream,<类名>);
- C.istreamoperator>>(istream,<类名>&);
- D.<类名>operator>>(istream&,<类名>&);
-
定义如下枚举类型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};则下列选项正确的是( )。
- A.表达式Wednesday==Friday的值是true
- B.Dayday;day=3;
- C.Dayday;day=Monday+3;
- D.Daydayday=Tuesday+10;
-
负责数据库中查询操作的数据库语言是( )。
- A.数据定义语言
- B.数据管理语言
- C.数据操纵语言
- D.数据控制语言
-
有定义语句“chars[10];”,若要从终端给S输入5个字符,错误的输入语句是( )。
- A.gets(&s0);
- B.scanf("%s",s+1);
- C.gets(s);
- D.scanf("%s",s[1]);
-
存取指针所指的值时,采用的运算符是( )。
- A.#
- B.&
- C.%
- D.*
-
若为Fraction类重裁前增1运算符++,应在类体中将其声明为( )。
- A.Fraction&poerator++( );
- B.Fraction&poeralor++(int);
- C.friendFraction&operator++( ):
- D.friendFraction&operator++(int);
-
若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。
- A.m[--i]
- B.m[2*2]
- C.m[m[o]]
- D.m[m[i]]
-
下列对重载函数的描述中,错误的是( )。
- A.重载函数中不允许使用默认参数
- B.重载函数中编译是根据参数表进行选择的
- C.不要使用重载函数来描述毫不相干的函数
- D.构造函数重载将会给初始化带来多种方式
-
有下列程序:
#include
voidmain( )
{chara=4;
printf("%d\n",a=a<<1);
}
程序的运行结果是( )。
- A.40
- B.16
- C.8
- D.4
-
若有以下定义:
inta[]={1,2,3,4,5,6,7};
charc1='b',c2='2';
则数值不为2的表达式是( )。
- A.a[1]
- B.'d'c1
- C.a['3'-c2]
- D.c2-0
-
结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法。
- A.对象
- B.数据结构
- C.数据流
- D.目标
-
有如下模板声明:
template
classA; 下列声明中,与上述声明不等价的是( )。
- A.template
classA; - B.template
classA; - C.template
classA; - D.template
classA;
- A.template
-
有如下类定义:
classFoo
{
public:
Foo(intv):value(v){}//①
~Foo(){}//②
private:
Foo(){}//③
intvalue=0;//④
};
其中存在语法错误的行是( )。
- A.①
- B.②
- C.③
- D.④
-
有下列程序:
#include
voidf(int*P,int*q);
voidmain( )
(intm=1,n=2,*r=&m;
f(r,&n);printf("%d,%d",m,n);
}
voidf(int*P,int*q)
{p=p+1;*q=*q+1;}
程序运行后的输出结果是( )。
- A.1,3
- B.2,3
- C.1,4
- D.1,2
-
下列关于栈的描述正确的是( )。
- A.在栈中只能插入元素而不能删除元素
- B.在栈中只能删除元素而不能插入元素
- C.栈是特殊的线性表,只能在一端插入或删除元素
- D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
-
某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。
- A.10
- B.8
- C.6
- D.4
-
有如下程序:
#include
usingnamespacestd;
classPair{
intm,n;
public;
Pair(intj,intk):m(j),n(k){}
intget(){returnm;}
intget()const{returnm+n;}
};
intmain(){
Paira(3,5);
constPairb(3,5);
cout
}
运行时的输出结果是( )。
- A.33
- B.38
- C.83
- D.88
-
下列程序的运行结果为( )。
#include
template
classFF
{TTa1,a2,a3;
public:
FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}
TTSum(){returna1+a2+a3;}};
voidmain()
{FF
x(int(1.1),2,3),y(int(4.2),5,6); cout<
- A.6.115.2
- B.615
- C.615.2
- D.6.115
-
能正确表示逻辑关系”a≥10或a≤0”的C++语言表达式是( )。
- A.a>=10ora<=0
- B.a)一01a(一10
- C.a>=10&&a<=0
- D.a>=10
- E.
- F.a(=0
-
有如下程序:
#include
usingnamespacestd;
classA{
public:
- A(inti=O):rl(i){} voidprint( ){cout<<'E'<
- intr1; };
- intmain( ){
- Aal:
- constAa2(4);
- a1.print(2);
- a2.print( ); return0; } 运行时的输出结果是( )。
- A.P8一E4
- B.P8一C16一
- C.P0一E4一
- A(inti=O):rl(i){} voidprint( ){cout<<'E'<
-
下列叙述中正确的是( )。
- A.有一个以上根结点的数据结构不一定是非线性结构
- B.只有一个根结点的数据结构不一定是线性结构
- C.循环链表是非线性结构
- D.双向链表是非线性结构
-
已知类MyClass的定义如下:
classMyClass{
public:
voidfunctionl(MyClass&c){out<
statievoidfunction2(MyClas&c){cout<
voidfunction3(){out<
statiCvoidfunction4(){COut<
private:
intdata;
}:
其中有编译错误的函数是( )。
- A.function1
- B.function2
- C.function3
- D.function4
-
计算斐波那契数列第n项的函数定义如下:
intfib(intn){
if.(n==0)return1;
elseif(n==1)return2:
elsereturnfib(n-1)+fib(n-2);
}
若执行函数调用表达式fib(2),函数fib被调用的次数是( )。
- A.1
- B.2
- C.3
- D.4
-
下面程序的运行结果是( )。
#include
voidmain( )
{
inti=1:
while(i<=8)
if(++i%3!=2)continue;
elsecout<
}
- A.25
- B.36
- C.258
- D.369
-
执行下列程序后,w的值为( )。
intw='A',x=14,y=15;
w=((x‖y)&&(w<'a'));
- A.-l
- B.NULL
- C.1
- D.0
-
有下列程序:
#include
voidfun(char*s)
{while(*s)
{if(*s%2==(1)printf("%C",*s);
s+十:
}
}
voidmain( )
{chara[]={"good");
fun(a);printf("n");
}
注意:字母a的ASCIl码值为97,程序运行后的输出结果是( )。
- A.d
- B.go
- C.god
- D.good