计算机类二级C++
2013年9月全国计算机等级《二级C++》上机模考试卷(2)
43 题含答案C++
1单选题1 / 43
有下列程序:
#include
intfun(intx,inyy)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
voidmain( )
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是( )。
查看答案
B. 6
2单选题2 / 43
已知字母A的ASCIl代码值为65,若变量kk为char型,下列不能正确判断出kk中的值为大写字母的表达式是( )。
查看答案
B. !(kk>='A'‖kk<='2')
3单选题3 / 43
有如下程序:
#included
usingnamespacestd;
classTestClass
{
private:
intx,Y;
public:
TestClass(inti,intj)
{
x=i:
y=j;
}
voidprint()
{
cout<<"printl"<
}
voidprint()const
{
cout<<"print2"<
}
};
intmain()
{
constTestClassa(1,2);
print();
return0;
}
该程序运行后的输出结果是( )。
查看答案
B. print2
4单选题4 / 43
有如下程序:
#include
usingnamespacestd;
classBase
{
public:
Base(){cout<<"BB";f();}
voidf(){cout<<"BF";}
};
classDerived:publicBase
{
public:
Derived(){cout<<"DD";}
voidf(){eout<<"Df";}
};
intmain(){Derivedd;return0;}
执行上面的程序将输出( )。
查看答案
A. BBBfDD
5单选题5 / 43
在计算机中,算法是指( )。
查看答案
C. 解题方案的准确而完整的描述
6单选题6 / 43
有如下程序:
#include
usingnamespacestd;
intmain( ){
intf,f1=0,f2=1;
for(inti=3;i<=6;i++){
f=f1+f2:
f1=f2;f2=f;
}
cout<<f<
return0;
}
运行时的输出结果是( )。
查看答案
C. 5
7单选题7 / 43
对于模板定义关键字class和typename说法不正确的是( )。
查看答案
B. class和typename都可互相替换
8单选题8 / 43
下面程序的执行结果是( )。
#include"iostream.h"
voidmain()
{int*P,r;
P=newint:
*P=20:
r=sizeof(*p);
cout<<r<
deleteP;}
查看答案
D. 4
9单选题9 / 43
类MyClass的定义如下,若要对value赋值,则下面语句正确的是( )。
classMyClass
{
public:
MyClass( ){}
MyClass(inti){value=newint(i);}
int*value;
};
查看答案
D. MyClassmy(10);
10单选题10 / 43
当变量C的值不为2、4、6时,值也为“真”的表达式是( )。
查看答案
B. (c>一2&&c<=6)‖(C!=3)‖(C!=5)
11单选题11 / 43
概要设计中要完成的事情是( )。
查看答案
A. 系统结构和数据结构的设计
12单选题12 / 43
有下列程序:
#include
#definePT3.5;
#defineS(x)PT*x*x;
voidmain( )
(inta=1.b=2;printf("%4.1f\n",S(a+b));}
程序运行后的输出结果是( )。
查看答案
D. 程序有错,无输出结果
13单选题13 / 43
有下列程序:
#include
voidmain( )
{inta1,a2charc1,c2;
scanf("%d%c%d%C",&a1,&c1,&a2,&c2);
printf("%d%c%d%C",a1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是12,a,34.
查看答案
A. 12a34b
14单选题14 / 43
下列虚基类的声明中正确的是( )。
查看答案
D. classB:virtualpublicA
15单选题15 / 43
设有定义“chars[8];inti=0;”,下列不能将一行(不超过80个字符)带有空格的字符国正确读入的语句或语句组是( )。
查看答案
C. seanf("%S",s);
16单选题16 / 43
下面关于虚函数的描述中正确的是( )。
查看答案
D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
17单选题17 / 43
下列错误的定义语句是( )。
查看答案
C. intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
18单选题18 / 43
数据库管理系统是( )。
查看答案
B. 在操作系统支持下的系统软件
19单选题19 / 43
Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。
Samplea[2],*p=newSample;
查看答案
D. 3
20单选题20 / 43
以下关于友元函数的叙述不正确的是( )。
查看答案
B. 一个友元函数可以访问任何类的任何成员
21单选题21 / 43
在软件开发中,需求分析阶段产生的主要文档是( )。
查看答案
B. 软件需求规格说明书
22单选题22 / 43
在软件开发中,需求分析阶段产生的主要文档是( )。
查看答案
D. 软件需求规格说明书
23单选题23 / 43
生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。
查看答案
D. 派生类构造函数明确调用了基类构造函数
24单选题24 / 43
下列选项中不属于字符常量的是( )。
查看答案
B. "C"
25单选题25 / 43
有下列程序:
#include
voidmain( )
{char*s={"ABC");
do
{printf("%d",*s%10);s++;
}while(*s);
}
注意:字母A的ASCIl码值为65。程序运行后的输出结果是( )。
查看答案
C. 567
26单选题26 / 43
数据库管理系统中负责数据模式定义的语有是( )。
查看答案
A. 数据定义语言
27单选题27 / 43
有如下程序:
#include
usingnamespacestd;
classAA{
public;
AA( ){cOUt<<'1';)
};
classBB:publicAA{
intk;
public:
BB( ):k(0){tout<<'12';}
BB(intn):k(n)(cout<<'3';)
};
intmain( ){
BBb(4),c;
return0;
}
运行时的输出结果是( ).
查看答案
A. 1312
28单选题28 / 43
下列关于宏的叙述中正确的是( )。
查看答案
C. 宏替换没有数据类型限制
29单选题29 / 43
下列叙述中正确的是( )。
查看答案
D. 以上三种说法都不对
30单选题30 / 43
若已定义
inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;
则对数组元素不正确的引用是( )。
查看答案
D. *(*(a+i))
31单选题31 / 43
控制格式输入/输出的操作中,设置域宽的函数是( )。
查看答案
D. setw(int)
32单选题32 / 43
有下列二叉树,对此二叉树前序遍历的结果是( )。
查看答案
D. ABDYECFXZ
33单选题33 / 43
设有宏定义“#definelsDIV(k,n)((k%n==1?1:0)”且变量m已正确定义并赋值,则宏调用“lsDIV(m,5)&&IsDIV(m,7)”为真时所要表达的是( )。
查看答案
D. 判断m被5和7整除是否都余l
34单选题34 / 43
以下程序的输出结果是( )。
#include
longfun(intn)
{longS;
if(n==1‖n==2)s=2;
elses=n-fun(n-1):
returnS;
}
voidmain(){cout<<fun(3);}
查看答案
A. 1
35单选题35 / 43
下列程序的执行结果是( )。
#include
#include
classTestClass
{
public:
intX,y;
TestClass(){x=y=0;}
TestClass(inta,intb)(x=a;y=b;}voiddisp()
{
cout<<"x="<<x<<",y="<<y<
}
};
voidmain()
{
TestClasss1(2,3);
s1.disp();
}
查看答案
B. x=2,y=3
36单选题36 / 43
有下列程序:
#include
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[O][k];
for(i=1;im)m=s[i]
[k];
returnm;
}
voidmain( )
{inta[4][4]=({1,2,3,4),{11,12,13,14},{21,
22,23,24},{31,32,33,34)};
printf(”%d\n”,fun(a,4,O));
}
程序的运行结果是( )。
查看答案
C. 31
37单选题37 / 43
有如下程序:
#include
voidmain()
{charch[2][5]={"6937","8254"),*p[2];
inti,j,s=0;
for(i=0;i(2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0';j+=2)
s=10*s+p[i][j]-'0';
cout<<s;}
该程序的输出结果是( )。
查看答案
C. 6385
38单选题38 / 43
为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
查看答案
A. 内联函数
39单选题39 / 43
下列选项中属于面向对象设计方法主要特征的是( )。
查看答案
A. 继承
40单选题40 / 43
下列程序输出的结果是( )。
#include
funl(chara,charb){charC;c=a;a=b;b=C;)
fun2(char*a,charb){charC;c=*a;*a=b;b=c;)
fun3(char*a,char*b){charC;C=*a;*a=*b;*b=C;)
voidmain( )
{
chara,b;
a='A';b='B';fun1(a,b);putchar(a);putchar(b);
a='A';b='B';fun2(&a,b);putchar(a);putchar(b);
a='A';b='B';fun3(&a,&b);putchar(a);putchar(b);
putchar('\n');
}
查看答案
B. ABBBBA
41主观题41 / 43
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序输出:
Hello
test
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在
//******error******的下面。
试题程序:
#include
//********error********
template
voidfun(Tt)
{
std::cout<<"test"<
}
//********error********
template
voidfun(boolt)
{
std::cout<<(t?"Hell0":"Hi")<
}
intmain()
{
//********error********
boolflag=TRUE;
fun(flag);
fun((int)flag);
return0;
}
查看答案
(1)应改为“tEmplAtE<ClAssT>”。
(2)删除“tEmplAtE(Bool)”。
(3)应改为“BoolFlAG=truE;”。
42主观题42 / 43
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是一个4位长的整数,用每位数字加上3然后除以9的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,然后返回得到的密码。
程序输出结果为
1864
2075
注意:不能修改其他部分的代码。
试题程序:
#include
#include
intfun(intn)
{
}
intmain()
{
inti=1357:
cout<<fun(i)<
i=2468;
cout<<fun(i)<
return0;
}
查看答案
inti,A[4],t;
A[0]=n%10;//取整型n的第1位数字
A[1]=n%100/10;//取整型n的第2位数字
A[2]=n%1000/100;//取整型n的第3位数字
A[3]=n/1000;//取整型n的第4位数字
For(i=0;i<=3;i++)//每位数字加3,取余
{
A[i]+=3;
A[i]%=9;
}
t=A[0];//根据加密算法交换
A[0]=A[3];
A[3]=t;
t=A[1];
A[1]=A[2];
A[2]=t;
rEturnA[3]*1000+A[2]*100+A[1]*10+A[0];
//重组,返回加密数字
43主观题43 / 43
(1)应添加“#defineTRUE1”。
(2)应添加“classA1;”。
(3)应添加“friendboolfunc(A2&objl,Al&obj2);”。
(4)将“retllin”补充完整为“returnobjl.m_A2==TRUE&&obj2.m_A1==TRUE;”。
查看答案
使用VC++6.0打开考生文件夹下的源程序文件3.Cpp。其中定义的类不完整,按要求完成下列撮作,将类的定义补充完整。 (1)利用DEFinE定义常量TRUE为1,定义常量FALSE为0,请在注释1后添加适当的语句。 (2)在类A2前增加A1的声明,请在注释2后添加适当的语句。 (3)在类Cl中声明友元函数BoolrunE(A2&A,A1&B),请在注释3后添加适当的语句。(4)实现函数BoolFunC(A2&oBj1,Al&oBj2)的功能,检查两个类的值都为TRUE,则返回TRUE,请在注释4后添加适当的语句。 注意:除在指定位置添加语句之外,不要改动程序中的其他内容。
试题程序:
#inCluDE(iostrEAm.h>
//********1********
#DEFinEFALSE0
//********2********
ClAssA2
{
private:
boolm_A2;
friendboolfunc(A2&objl,A1&obj2);
public:
A2()
{
m_A2=FALSE。
}
public:
voidsetA2(booln)
{
m_A2=n;
}
};
elaSSA1
{
private: boolm_A1;
//********3*********
public: A1(){m_A1=TRUE;
}
public:
voidsetAl(booln)
{
m_A1=n;
}
};
boolfunc(A2&objl,A1&obj2)
{
//********4********
return
}
intmain()
{
A20bj0;
A10bj1;
cout<<fune(obj0,objl)<<endl;
obj0.setA2(TRUE);
objl.setAl(TRUE);
cout<<func(obj0,objl)<<endl;
return0;
}