2013年9月全国计算机等级《二级C++》命题预测试卷二
-
使用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<
-
下列程序输出的结果是( )。
#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'); }
- A.BABBAB
- B.ABBBBA
- C.ABBABA
- D.ABABBA
-
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是一个4位长的整数,用每位数字加上3然后除以9的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,然后返回得到的密码。
程序输出结果为
1864
2075
注意:不能修改其他部分的代码。
试题程序:
#include
#include
intfun(intn)
{
}
intmain()
{
inti=1357:
cout<
i=2468;
cout<
return0;
}
-
使用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;
}
-
下列选项中属于面向对象设计方法主要特征的是( )。
- A.继承
- B.自顶向下
- C.模块化
- D.逐步求精
-
为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
- A.内联函数
- B.重载函数
- C.递归函数
- D.函数模板
-
有如下程序:
#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<
该程序的输出结果是( )。
- A.69825
- B.63825
- C.6385
- D.693825
-
有下列程序:
#include
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[O][k];
for(i=1;i
m)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));
}
程序的运行结果是( )。
- A.4
- B.34
- C.31
- D.32
-
下列程序的执行结果是( )。
#include
#include
classTestClass
{
public:
intX,y;
TestClass(){x=y=0;}
TestClass(inta,intb)(x=a;y=b;}voiddisp()
{
cout<<"x="<
}
};
voidmain()
{
TestClasss1(2,3);
s1.disp();
}
- A.x=2,y=2
- B.x=2,y=3
- C.x=3,y=2
- D.x=3,y=3
-
设有宏定义“#definelsDIV(k,n)((k%n==1?1:0)”且变量m已正确定义并赋值,则宏调用“lsDIV(m,5)&&IsDIV(m,7)”为真时所要表达的是( )。
- A.判断m是否能被5或者7整除
- B.判断m是甭能被5和7整除
- C.判断m被5或者7整除是否余1
- D.判断m被5和7整除是否都余l
-
以下程序的输出结果是( )。
#include
longfun(intn)
{longS;
if(n==1‖n==2)s=2;
elses=n-fun(n-1):
returnS;
}
voidmain(){cout<
- A.1
- B.2
- C.3
- D.4
-
有下列二叉树,对此二叉树前序遍历的结果是( )。
- A.ACFXDBEYZ
- B.ABEFXYZCD
- C.ABCDEFXYZ
- D.ABDYECFXZ
-
控制格式输入/输出的操作中,设置域宽的函数是( )。
- A.WS
- B.oct
- C.setfill(int)
- D.setw(int)
-
下列叙述中正确的是( )。
- A.算法就是程序
- B.设计算法时只需要考虑数据结构的设计
- C.设计算法时只需要考虑结果的可靠性
- D.以上三种说法都不对
-
下列关于宏的叙述中正确的是( )。
- A.宏名必须用大写字母表示
- B.宏定义必须位于源程序中所有语句之前
- C.宏替换没有数据类型限制
- D.宏调用比函数调用耗费时间
-
若已定义
inta[]={1,2,3,4,5,6,7,8,9,10},p=a,i=5;
则对数组元素不正确的引用是( )。
- A.a[p-a]
- B.*(&a[i])
- C.p[i]
- D.*(*(a+i))
-
数据库管理系统中负责数据模式定义的语有是( )。
- A.数据定义语言
- B.数据管理语言
- C.数据操纵语言
- D.数据控制语言
-
有如下程序:
#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
- B.132
- C.32
-
下列选项中不属于字符常量的是( )。
- A.'C'
- B."C"
- C.'\xCC'
- D.'\072'
-
有下列程序:
#include
voidmain( )
{char*s={"ABC");
do
{printf("%d",*s%10);s++;
}while(*s);
}
注意:字母A的ASCIl码值为65。程序运行后的输出结果是( )。
- A.5670
- B.656667
- C.567
- D.ABC
-
生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。
- A.无需任何条件
- B.基类中显式定义了构造函数
- C.派生类中显式定义了构造函数
- D.派生类构造函数明确调用了基类构造函数
-
在软件开发中,需求分析阶段产生的主要文档是( )。
- A.可行性分析报告
- B.软件需求规格说明书
- C.概要设计说明书
- D.集成设计计划
-
在软件开发中,需求分析阶段产生的主要文档是( )。
- A.软件集成测试计划
- B.软件详细设计说明书
- C.用户手册
- D.软件需求规格说明书
-
以下关于友元函数的叙述不正确的是( )。
- A.友元函数提供了类之间数据共享的一个途径
- B.一个友元函数可以访问任何类的任何成员
- C.友元函数破坏了数据的封装
- D.友元函数增加了程序设计的灵活性
-
Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。
Samplea[2],*p=newSample;
- A.0
- B.1
- C.2
- D.3
-
下面关于虚函数的描述中正确的是( )。
- A.虚函数是一个静态成员函数
- B.虚函数是一个非成员函数
- C.虚函数可以在函数说明时定义,也可以在函数实现时定义
- D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
-
下列错误的定义语句是( )。
- A.intx[][3]={{0},{1},{1,2,3}};
- B.intx[4][3]={{1,2,3},{1,2,3),{1,2,3),{1,2,3}};
- C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
- D.intx[][3]={1,2,3,4};
-
数据库管理系统是( )。
- A.操作系统的一部分
- B.在操作系统支持下的系统软件
- C.一种编译系统
- D.一种操作系统
-
下列虚基类的声明中正确的是( )。
- A.clasSvirtualB:publicA
- B.virtualclassB:publicA
- C.classB:publieAvirtual
- D.classB:virtualpublicA
-
设有定义“chars[8];inti=0;”,下列不能将一行(不超过80个字符)带有空格的字符国正确读入的语句或语句组是( )。
- A.gets(s);
- B.while((s[i++]=getchar( ))!='\n');s[i]='\0';
- C.seanf("%S",s);
- D.do{scanf("%C",&s[i]);}while(s[i++]!='\n');s[i]='\0';
-
有下列程序:
#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
- B.
- C.12,a,34,b
- D.
- A.12a34b
-
有下列程序:
#include
#definePT3.5;
#defineS(x)PT*x*x;
voidmain( )
(inta=1.b=2;printf("%4.1f\n",S(a+b));}
程序运行后的输出结果是( )。
- A.14.0
- B.31.5
- C.7.5
- D.程序有错,无输出结果
-
概要设计中要完成的事情是( )。
- A.系统结构和数据结构的设计
- B.系统结构和过程的设计
- C.过程和接口的设计
- D.数据结构和过程的设计
-
类MyClass的定义如下,若要对value赋值,则下面语句正确的是( )。
classMyClass
{
public:
MyClass( ){}
MyClass(inti){value=newint(i);}
int*value;
};
- A.MyClassmy;my.value=10;
- B.MyClassmy;*my.value=10;
- C.MyClassmy;my.*value=10;
- D.MyClassmy(10);
-
当变量C的值不为2、4、6时,值也为“真”的表达式是( )。
- A.(c==2)‖(c==4)‖(c==6)
- B.(c>一2&&c<=6)‖(C!=3)‖(C!=5)
- C.(c>=2&&c<=6)&&!(c%2)
- D.(c>=2&&c<=6)&&(c%2!=1)
-
对于模板定义关键字class和typename说法不正确的是( )。
- A.程序中的class并不能都替换为typename
- B.class和typename都可互相替换
- C.程序中的typename都能替换为class
- D.程序中的部分class可以替换为typename
-
下面程序的执行结果是( )。
#include"iostream.h"
voidmain()
{int*P,r;
P=newint:
*P=20:
r=sizeof(*p);
cout<
deleteP;}
- A.程序错误
- B.内存为20地址的大小
- C.20
- D.4
-
有如下程序:
#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.排序方法
-
有如下程序:
#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;
}
该程序运行后的输出结果是( )。
- A.printl
- B.print2
- C.printlprint2
- D.程序编译时出错
-
已知字母A的ASCIl代码值为65,若变量kk为char型,下列不能正确判断出kk中的值为大写字母的表达式是( )。
- A.kk>='A'&&kk<='Z'
- B.!(kk>='A'‖kk<='2')
- C.(kk+32)>='a'&&(kk+32)<='2'
- D.isalpha(kk)&&(kk<=91)
-
有如下程序:
#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
- B.BBDfDDDf
- C.DD
- D.DDBBBf
-
有下列程序:
#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)));
}
程序运行后的输出结果是( )。
- A.3
- B.6
- C.8
- D.12