2013年9月全国计算机等级《二级C++》命题预测试卷七
-
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Em-ployee的定义并不完整。请按要求完成下列操作,将类TC的定义补充完整。
(1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据。请在注释1之后添加适当的语句。
(2)完成默认构造函数TC的定义,使其把参数传递给私有数据成员name、streel、city、zipcode和age。请在注释2之后添加适当的语句。
(3)完成成员函数aherName(char*newName)的定义。请在注释3之后添加适当的语句。
(4)完成成员函数IsEqual(char*ename)的定义,实现当name相等时返回真,否则返回假的功能。请在注释4之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include
#include
#defineMAXLEN20
classTC
{
private:
//********、********
intage;
public:
TC(char*newName,char*newStreet,char*
newCt,char*newZp,intnewAge);
voidalterName(char*newName);
voiddisplay();
boolIsEqual(char*ename);
};
TC::TC(char*newName,char*newStreet,char*
newCt,char*newZp,intnewAge)
{
//********2********
age=newAge;
}
voidTC::alterName(char*newName)
{
//********3********
}
boolTC::IsEqual(char*ename)
{
//********4********
}
voidTC::display()
{
cout<
cout<
voidmain(void)
{
TCemployee[4]=
{
TC("张三","海淀区复兴路l号","北京","000001",18),
TC("李四","海淀区复兴路2号","北京","000002",19),
TC("王五","海淀区复兴路3号","北京","000003",20),
TC("赵六","海淀区复兴路4号","北京","000004",21)
};
for(inti=0;i<4;i++)
employee[i].display();
cout<<"\n修改\"李四\"的名字为\"李小四\"\n"<
for(intj=0;j<4;j++)
{
if(employee[j].IsEqual("李四"))
{
employee[j].aherName("李小四");
employee[j].display();
break;
}
}
}
-
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。
程序输出:
s1:n=20
s2:n=10
执行s3.add(s1,s2)
s3:n=30
s4:n=30
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
classTC
{
intn;
public:
TC{}
TC(intm)
{
n=m:
}
//********error********
TCadd(TCs1,s2)
{
this->n=s1.n+s2.n;
//********error********
return(this);
}
voiddisp
{
cout<<"n一="<
}
//********error********
}
voidmain
{
TCs1(20),s2(10),s3,s4;
cout<<"s1:";
s1.disp;
cout<<"s2:";
s2.disp;
s4=s3.add(s1,s2);
cout<("执行s3.add(s1,s2)\ns3:";
s3.disp;
COUt<<"s4:";s4.disp;
}
-
使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,
并且每输出一个3位数就换一行。
程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。
试题程序:
#include
voidfun(intN[4])
{
}
intmain()
intN[4]={1,2,3,0};
fun(N):
return0;
}
-
下列叙述中错误的是( )。
- A.用户定义的函数中可以没有return语句
- B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
- C.用户定义的函数中若没有return语句,则应当定义函数为void类型
- D.函数的return语句中可以没有表达式
-
下列描述中,抽象类的特性是( )。
- A.可以说明虚函数
- B.可以定义友元函数
- C.可以进行构造函数重载
- D.不能说明其对象
-
下列选项中不符合良好程序设汁风格的是( )。
- A.源程序要文档化
- B.数据说明的次序要规范化
- C.避免滥用goto语句
- D.模块设计要保证高耦合、高内聚
-
有以下程序:
#include
usingnamespacestd;
classA{
public:
- A(){cout<<"A";} };
- classB{public:B(){cout<<"B";}};
- classC:publicA{
- Bb; public:
- C(){cout<<"C";} };
- intmain(){Cobj;return0;} 执行后的输出结果是( )。
- A.CBA
- B.BAC
- C.ACB
- D.ABC
-
将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是( )。
- A.不合法的运算符
- B.一元运算符
- C.无操作数的运算符
- D.二元运算符
-
有如下程序:
#include
usingnamespacestd;
classCon
charID;
public:
Con():ID('A){cout<<1;}
Con(charID):ID(ID){eout<<2;}
Con(Con&c):ID(c.getID()){cout<<3;}
chargetID()corlst{returnID;}
};
voidshow(Conc)(cout<
intmain()
{
Conc1:
show(c1);
Conc2('B');
show(c2);
return0;
}
执行上面程序的输出是( )。
- A.13A23A
- B.23A13B
- C.13A23B
- D.13823A
-
使用白盒测试法时,确定测试数据应该根据( )和指定的覆盖标准。
- A.程序的内部逻辑
- B.程序的复杂结构
- C.使用说明书
- D.程序的功能
-
下列对于软件测试的描述中正确的是( )。
- A.软件测试的目的是证明程序是否正确
- B.软件测试的目的是使程序运行结果正确
- C.软件测试的目的是尽可能多地发现程序中的错误
- D.软件测试的目的是使程序符合结构化原则
-
下列结构体类型说明和变量定义中正确的是( )。
- A.typedefstruct; {intn;charC;}REC; RECt1,t2;
- B.structREC; {intn;charC;} RECt1,t2;
- C.typedefstructREC; {intn=0;charc='A';}t1,t2
- D.struct {intn;charC;}REC; RECt1,t2
-
所有在函数中定义的变量及函数的形式参数,都属于( )。
- A.全局变量
- B.局部变量
- C.静态变量
- D.常量
-
将x+y*z中的“+”用成员函数重载,“*”是友元函数重载应写为( )。
- A.operator+(operator*(y,z))
- B.x.operator+(operator*(y,z))
- C.x.operator+(X*(y,z))
- D.x+(operator*(y,z))
-
定义无符号整数为Uint,下面可以作为类Uint实例化值的是( )。
- A.-369
- B.369
- C.0.369
- D.整数集合{1,2,3,4,5}
-
对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。
- A.125
- B.n/Z
- C.n
- D.n+1
-
一个教师可讲多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是( )。
- A.1:1联系
- B.1:m联系
- C.m:1联系
- D.m:n联系
-
有如下程序;
#include
usingnamespacestd;
clasBasel{
public:
Basel(intd){cout<
-Basel(){}
};
classBase2{
public:
Base2(intd){out<
~Base2(){}
};
classDerived:publicBase1,Base2{
public:
Derived(inta,intb,intC,intd):
Basel(b),Base2(a),b1(d),b2(c){}
private:
intb1;
intb2;
};
intmain(){
Derivedd(1,2,3,4);
return0;
}
运行时的输出结果是( )。
- A.1234
- B.2134
- C.12
- D.21
-
下列关于构造函数的描述中,错误的是( )。
- A.构造函数名与类名相同
- B.构造函数可以有返回值
- C.构造函数可以重载
- D.每个类都有构造函数
-
数据库设计的根本目标是要解决( )。
- A.数据共享问题
- B.数据安全问题
- C.大量数据存储问题
- D.简化数据维护
-
下列叙述中,不属于测试的特征的是( )。
- A.测试的挑剔性
- B.完全测试的不可能性
- C.测试的可靠性
- D.测试的经济性
-
下面是类Shape的定义:
classShape{
public:
virtualvoidDraw( )=0;
}
下列关于Shape类的描述中,正确的是( )。
- A.类Shape是虚基类
- B.类Shape是抽象类
- C.类Shape中的Draw函数声明有误
- D.语句“ShapeS;”能够建立Shape的一个对象S
-
下面说法正确的是( )。
- A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
- B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
- C.类的内联函数必须在类体内定义
- D.类的内联函数必须在类体外通过加关键字inline定义
-
某二叉树共有七个结点,其中叶子结点只有一个,则该二叉树的深度为(假设根结点在第1层)( )。
- A.3
- B.4
- C.6
- D.7
-
下列关于派生类和基类的描述中,正确的是( )。
- A.派生类成员函数只能访问基类的公有成员
- B.派生类成员函数只能访问基类的公有和保护成员
- C.派生类成员函数可以访问基类的所有成员
- D.派生类对基类的默认继承方式是公有继承
-
以下定义语句中正确的是( )。
- A.inta=b=0;
- B.charA=65+1,b='b';
- C.floata=1,"b=&a,"c=&b;
- D.doublea=0.0;b=1.1;
-
两个或两个以上模块之问联系的紧密程度称为( )。
- A.耦合性
- B.内聚性
- C.复杂性
- D.数据传输特性
-
支持子程序调用的数据结构是( )。
- A.栈
- B.树
- C.队列
- D.二叉树
-
有如下程序:
#include
usingnamespacestd;
classTest
{
public:
Test(){n+=2;}
~Test(){n-=3;}
staticintgetNum(){returnn;}
private:
staticintn;
};
intTest::n=1;
intmain()
{
Test*p=neWTest;
deletep;
cout<<"n="<
return0;
}
执行该程序的输出结果是( )。
- A.n=0
- B.n=1
- C.n=2
- D.n=3
-
若有定义语句“doublex,y,*px,*Py;执行了px=&x;py=&y;”后,正确的输入语句是( )。
- A.scanf("%f%f",x,y);
- B.scanf("%f%f"&x,&y);
- C.scanf("%If%le",px,py);
- D.scanf("%lf%If"x,y);
-
有以下程序:
#include
usingnamespacestd;
classA{
public:
- A( ){cout<<"A";} };
- classB{public:B( ){cout<<"B";}};
- classC:publicA{
- Bb; public:
- C( ){cout<<"C";} };
- intmain( ){Cobj;return0;} 执行后的输出结果是( )。
- A.CBA
- B.BAC
- C.ACB
- D.ABC
-
有下列程序:
#include
voidmain( )
{
ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]=
{0},i;
for(i=0;i<12;i++)c[s[i]]++;
for(i=1;i<5;i++)printf("%d",c[i]);
printf("\n")
}
程序的运行结果是( )。
- A.1234
- B.2344
- C.4332
- D.1123
-
设R是一个二元关系,S是一个三元关系,则下列运算中正确的是( )。
- A.R-S
- B.R×S
- C.R∩S
- D.R∪S
-
软件详细设计产生的如下图所示。该图是( )。
- A.N—S图
- B.PAD图
- C.程序流程图
- D.E—R图
-
为了使模块尽可能独立,要求( )。
- A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
- B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
- C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
- D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
-
对于语句“cout<
- A.*********1*2
- B.********12
- C.*******1*2
- D.12********
-
下列叙述中正确的是( )。
- A.栈是“先进先出”的线性表
- B.队列是“先进后出”的线性表
- C.循环队列是非线性结构
- D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
-
下列运算符函数中肯定不属于类FunNumber的成员函数的是( )。
- A.intoperator-(FunNumber);
- B.FunNumberoperator-();
- C.FunNumberoperator-(int);
- D.intoperator-(FunNumber,FunNumber);
-
设有定义:
classC
{public:
intvalue;
…
};
intX,*P;
则以下引用形式中,正确的是( )。
- A.x=value;
- B.x=C::value;
- C.p=&value
- D.p=C::value
-
在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD( )。
#include
usingnamespacestd;
classA
{
public:A(){cout<<'A';}
};
classB:
{
public:B(){cout<<'B';}
};
classC:virtualpublicA
{
public:C(){cout<<'C';}
};
classD:publicB,publicD
{
public:D(){cout<<'D';}
};
voidmain(){D04;}
- A.publicA
- B.privateA
- C.protectedA
- D.virtualpublicA
-
将E-R图转换到关系模式时,实体与实体间的联系可以表示成( )。
- A.属性
- B.关系
- C.键
- D.域
-
有下列二叉树,对此二叉树中序遍历的结果是( )。
- A.ABCDEF
- B.BDAECF
- C.ABDCEF
- D.ABCDFE
-
数据流图中带有箭头的线段表示的是( )。
- A.控制流
- B.事件驱动
- C.模块调用
- D.数据流