计算机类二级C++

2013年9月全国计算机等级《二级C++》上机模考试卷(7)

43 题含答案C++
共 43 题返回本类
1单选题1 / 43
数据流图中带有箭头的线段表示的是(  )。
查看答案
D. 数据流
2单选题2 / 43
有下列二叉树,对此二叉树中序遍历的结果是(  )。
  
查看答案
B. BDAECF
3单选题3 / 43
将E-R图转换到关系模式时,实体与实体间的联系可以表示成(  )。
查看答案
B. 关系
4单选题4 / 43
在下列程序的横线处填上适当的内容,使程序执行后的输出结果为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;}
查看答案
D. virtualpublicA
5单选题5 / 43
下列运算符函数中肯定不属于类FunNumber的成员函数的是(  )。
查看答案
D. intoperator-(FunNumber,FunNumber);
6单选题6 / 43
设有定义:
classC
{public:
intvalue;
…
};
intX,*P;
则以下引用形式中,正确的是(  )。
查看答案
B. x=C::value;
7单选题7 / 43
下列叙述中正确的是(  )。
查看答案
D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
8单选题8 / 43
为了使模块尽可能独立,要求(  )。
查看答案
B. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
9单选题9 / 43
对于语句“cout<<setfill('*')<<setw(10)<<1<<setfill('*')<<setw(2)<
查看答案
A. *********1*2
10单选题10 / 43
设R是一个二元关系,S是一个三元关系,则下列运算中正确的是(  )。
查看答案
B. R×S
11单选题11 / 43
软件详细设计产生的如下图所示。该图是(  )。
  
查看答案
C. 程序流程图
12单选题12 / 43
有以下程序:
#include
usingnamespacestd;
classA{
public:
A(  ){cout<<"A";}
};
classB{public:B(  ){cout<<"B";}};
classC:publicA{
Bb;
public:
C(  ){cout<<"C";}
};
intmain(  ){Cobj;return0;}
执行后的输出结果是(  )。
查看答案
D. ABC
13单选题13 / 43
有下列程序:
#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")
}
程序的运行结果是(  )。
查看答案
C. 4332
14单选题14 / 43
若有定义语句“doublex,y,*px,*Py;执行了px=&x;py=&y;”后,正确的输入语句是(  )。
查看答案
C. scanf("%If%le",px,py);
16单选题16 / 43
有如下程序:
#include
usingnamespacestd;
classTest
{
public:
Test(){n+=2;}
~Test(){n-=3;}
staticintgetNum(){returnn;}
private:
staticintn;
};
intTest::n=1;
intmain()
{
Test*p=neWTest;
deletep;
cout<<"n="<<test::getnum()<
return0;
}
执行该程序的输出结果是(  )。
查看答案
A. n=0
17单选题17 / 43
两个或两个以上模块之问联系的紧密程度称为(  )。
查看答案
A. 耦合性
18单选题18 / 43
以下定义语句中正确的是(  )。
查看答案
B. charA=65+1,b='b';
19单选题19 / 43
某二叉树共有七个结点,其中叶子结点只有一个,则该二叉树的深度为(假设根结点在第1层)(  )。
查看答案
D. 7
20单选题20 / 43
下列关于派生类和基类的描述中,正确的是(  )。
查看答案
B. 派生类成员函数只能访问基类的公有和保护成员
21单选题21 / 43
下面说法正确的是(  )。
查看答案
B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
22单选题22 / 43
下列叙述中,不属于测试的特征的是(  )。
查看答案
C. 测试的可靠性
23单选题23 / 43
下面是类Shape的定义:
classShape{
public:
virtualvoidDraw(  )=0;
}
下列关于Shape类的描述中,正确的是(  )。
查看答案
B. 类Shape是抽象类
24单选题24 / 43
下列关于构造函数的描述中,错误的是(  )。
查看答案
B. 构造函数可以有返回值
25单选题25 / 43
数据库设计的根本目标是要解决(  )。
查看答案
A. 数据共享问题
26单选题26 / 43
有如下程序;
#include
usingnamespacestd;
clasBasel{
public:
Basel(intd){cout<<d;}
-Basel(){}
};
classBase2{
public:
Base2(intd){out<<d;}
~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;
}
运行时的输出结果是(  )。
查看答案
D. 21
27单选题27 / 43
对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为(  )。
查看答案
C. n
28单选题28 / 43
一个教师可讲多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是(  )。
查看答案
D. m:n联系
29单选题29 / 43
将x+y*z中的“+”用成员函数重载,“*”是友元函数重载应写为(  )。
查看答案
B. x.operator+(operator*(y,z))
30单选题30 / 43
定义无符号整数为Uint,下面可以作为类Uint实例化值的是(  )。
查看答案
B. 369
31单选题31 / 43
所有在函数中定义的变量及函数的形式参数,都属于(  )。
查看答案
B. 局部变量
32单选题32 / 43
下列对于软件测试的描述中正确的是(  )。
查看答案
C. 软件测试的目的是尽可能多地发现程序中的错误
33单选题33 / 43
下列结构体类型说明和变量定义中正确的是(  )。
查看答案
A. typedefstruct;
{intn;charC;}REC;
RECt1,t2;
34单选题34 / 43
有如下程序:
#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<<c.getid();}
intmain()
{
Conc1:
show(c1);
Conc2('B');
show(c2);
return0;
}
执行上面程序的输出是(  )。
查看答案
C. 13A23B
35单选题35 / 43
使用白盒测试法时,确定测试数据应该根据(  )和指定的覆盖标准。
查看答案
A. 程序的内部逻辑
36单选题36 / 43
将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是(  )。
查看答案
B. 一元运算符
37单选题37 / 43
有以下程序:
#include
usingnamespacestd;
classA{
public:
A(){cout<<"A";}
};
classB{public:B(){cout<<"B";}};
classC:publicA{
Bb;
public:
C(){cout<<"C";}
};
intmain(){Cobj;return0;}
执行后的输出结果是(  )。
查看答案
D. ABC
38单选题38 / 43
下列选项中不符合良好程序设汁风格的是(  )。
查看答案
D. 模块设计要保证高耦合、高内聚
39单选题39 / 43
下列叙述中错误的是(  )。
查看答案
B. 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
40单选题40 / 43
下列描述中,抽象类的特性是(  )。
查看答案
D. 不能说明其对象
41主观题41 / 43
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。
程序输出:
s1:n=20
s2:n=10
执行s3.add(s1,s2)
s3:n=30
s4:n=30
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h)
classTC
{
intn;
public:
TC(){}
TC(intm)
{
n=m:
}
//********error********
TCadd(TCs1,s2)
{
this->n=s1.n+s2.n;
//********error********
return(this);
}
voiddisp()
{
cout<<"n一="<<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();
}
查看答案
(1)应改为“TCADD(TCs1,TCs2)”。
(2)应改为“rEturn(*this);”。
(3)应改为“};”。
42主观题42 / 43
使用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;
}
查看答案
inti,j,k;
For(i=0;i<4;i++)//百位循环
{
For(j=0;j<4;j++)//十位循环
For(k=0;k<4;k++)//个位循环
{
iF(i!=j&&j!=k&&k!=i&&N[i]!=0)//
当三位数不同,并且百位不为0
{
Cout<<N[i]<(N[i]<<N[k]<<EnDl;
//输出这三位数组成的数字
}
}
}
43主观题43 / 43
使用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<string.h)
#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<<name<<""<<street<<"";
cout<<city<<""<<zipcode<<""<<age<
}
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;
}
}
}
查看答案
(1)应添加“ChArnAmE[MAXLEN],strEEt[MAX-LEN],City[MAXLEN],zipCoDE[MAXLEN];”。
(2)应添加“strCpy(nAmE,nEwNAmE);strCpy(strEEt,nEwStrEEt);strCpy(City,nEwCt);strCPy(zipEoDE,DE-wZp);”。
(3)应添加“strCpy(nAmE,nEwNAmE);”。
(4)应添加“rEturnstrCmp(nAmE,EnAmE)==0;”。
← 上一卷下一卷 →