无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(7) - 233网校计算机二级题库:在线

2013-12-20来源/作者:管理员点击次数:472

一、选择题(每小题1分,共40分)
1、 索引属于(  )。
A.模式
B.内模式
C.外模式
D.概念模式

2、 下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是(  )。
A.if(a<=b)n=0;
B.if((a>b)‖(b>c))n=1;elsen=0;
C.if(a>b)if(b>c)n=1;elsen=;elsen=0;
D.if(a>b)n=1;elseif(b<=c)n=1;elseif(b>c)n=1;elsen=0;

3、有以下程序:
#include
usingnamespacestd;
classR
{public:
R(intr1,intr2)
{R1=r1;
R2=r2;}
voidprint();
voidprint()const;
private:
intR1,R2;};
voidR::print()
{cout< voidR::print()const
{cout< intmain()
{Ra(5,4);
constRb(20,52);
print(); 
return0;}
执行后的输出结果是(  )。
A.5,4
B.20,52
C.0,0
D.4,5

4、 已经有“语句intm=10;”则下列表示引用的表示中正确的是(  )。
A.int&x=m;
B.int&y=10;
C.int&z;
D.float&t=8m;

5、 有下列程序:
#include
voidmain(  )
{intx=1,y=2,z=3;
if(x>y)
if(y elseprintf("%d",++y);
printf(”%d\n”,x++);
}
程序的运行结果是(  )。
A.331
B.41
C.2
D.1

6、 下列关于析构函数的描述中,错误的是(  )。
A.析构函数可以重载
B.析构函数由系统自动调用
C.每个对象的析构函数只被调用一次
D.每个类都有析构函数

7、 派生类的成员函数不能访问基类的(  )。
A.公有成员和保护成员
B.公有成员
C.私有成员
D.保护成员

8、 有如下程序:
#include
usingnamespacestd;
classDA{
intk;
public:
DA(intx=1):k(x){}
~DA(){cout< };
intmain(){
DAd[]={DA(3),DA(3),DA(3));
DA+p=newDA[2];
delete[]p;
return();
}
这个程序的输出结果是(  )。
A.111
B.333
C.11333
D.11133

9、 有如下程序:
#include
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;)
~Toy(  ){count一一;)
char*GetName(  ){returnname;}
staticintgetCount(  ){returncount;)
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmain(  ){
Toyt1("snoopy"),t2("Mickey"),t3("Barbie");
tout< return0;
)
运行时的输出结果是(  )。
A.1
B.2
C.3
D.运行时出错

10、 下列选项中不属于结构化程序设计方法的是(  )。
A.自顶向下
B.逐步求精
C.模块化
D.司复用

11、 下列叙述中正确的是(  )。
A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严格,要求一行内只能写一个语句
C.C程序书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中

12、 有如下程序:
#include
usingnamespacestd;
classTestClass
{public:
virtualvoidfunl()
{cout<<"funlTestClass";}
virtualvoidfun2()
{cout<<“fun2TestClass”;}};
classTestClassl:publicTestClass
{voidfun()
{cout<<“funlTestClassl”;}};
intmain()
{TestClassobj1,*P;
TestClasslobj2;
p=&obj2;
p->fun1();
p->fun2();
return0;}
该程序执行后的输出结果是(  )。
A.funlTestClasslfun2TestClass
B.funlTestClass1fun2TestC1ass1
C.funlTestClassfun2TestClass
D.funlTestClassfun2TestClassl

13、 下面关于运算符重载的描述错误的是(  )。
A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B.不是所有的运算符都可以进行重载
C.运算符函数的调用必须使用关键字0perator
D.在C++语言中不可通过运算符重载创造出新的运算符

14、 有如下程序:
#include
usingnamespacestd;
classMyClass{
public:
MyClass(intx):val(x){}
voidPrint()const{cout<<"const:val="<< voidPrint(){cout<<"val="< private:
intval;
};
intmain(){
constMyClassobj1(10);
MyClassobj2(20);

obj1.Print();
obj2.Print();
return0;
}
程序的输出结果是(  )。
A.va1=10const:va1=20
B.const:va1=10const:va1=20
C.const:va1=10val=20
D.val=10va1=20

15、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是(  )。
A.编译程序
B.操作系统
C.教务管理系统
D.汇编程序

16、有下列程序:
#include
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i }
voidmain(  )
{intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}),
y[N],i;
fun(x,y);
for(i=0;i printf("\n");
}
程序的运行结果是(  )。
A.1,2,3,4,
B.1,0,7,0,
C.1,4,5,9,
D.3,4,8,10,

17、 有如下的程序:
#include
#include
usingnamespacestd;
classMyString
{public:
MyString(constchar*s);
MyString(){delete[]data;}
protected:
unsignedlem
char*data;};
MyStrin9::MyString(constchar*s)
{len=strlen(s);
data=newchar[len+1];
strcpy(data,s);}
intmain()
{MyStringa("C++Programing");
MyStringb(a);
return0;}
在运行上面的程序时出错,出错的原因是(  )。
A.构造函数的实参不允许是本类的对象
B.没有定义实现深层复制的复制构造函数
C.构造对象a时实参与形参类型不符
D.系统不能生成默认的复制构造函数

18、 设变量已正确定义并赋值,以下正确的表达式是(  )。
A.x=y+5=x+z
B.int(15.8%5)
C.x=y+z+5,++y
D.x=25%5.0

19、 下面描述中错误的是(  )。
A.系统总体结构图支持软件系统的详细设计
B.软件设计是将软件需求转换为软件表示的过程
C.数据结构与数据库设计是软件设计的任务之一
D.PAD图是软件详细设计的表示工具

20、 程序段“intx=12;doubley=3.141593;printf(”%d%8.6'f",X,y);”的输出结果是(  )。
A.123.141593
B.123.141593
C.12,3.141593
D.123.1415930

21、 有如下程序:
#include
usingnamespacestd;
classB{
public:
virtualvoidshow(){cout<<"B";}};
classD:publicB{
public:
voidshow(){cout<<"D";}
};
voidfun1(B*ptr){ptr->show();
}voidfun2(B&ref){ref.show();
}voidfun3(BB){b.show();
}
intmain(){
Bb,*p=newD;
Dd;
funl(p);
fun2(b);
fun3(d);
return0;
}
程序的输出结果是(  )。
A.BBB
B.BBD
C.DBB
D.DBD

22、 下列不构成无限循环的语句或语句组是(  )。
A.n=0;
do{++n;)while(n<=0);
B.n=0;
while(1){n++;)
C.while(n=1O);{n--;}
D.for(n=0,i=1;;i++)n+=i

23、 有下列程序:
#include
voidmain(  )
{
intx=8;
for(;x>0;x--)
{
if(x%3){printf("%d,",x--),continue;}
printf(”%d,”,--x);
}
}
程序的运行结果是(  )。
A.7,4,2
B.8,7,5,2
C.9,7,6,4
D.8,5,4,2

24、 设有下列程序段:
chars[20]="Beijing",*P;
P=S;
则执行“p=s;”语句后,下列叙述正确的是(  )。
A.可以用*P表示s[0]
B.S数组中元素的个数和P所指字符串长度相等
C.S和P都是指针变量
D.数组s中的内容和指针变量P中的内容相同

25、 对于语句“cout<A.*********1*2
B.********12
C.*******1*2
D.12********

26、若函数中有定义语句“intk;”.则(  )。
A.系统将自动给k赋初值0
B.这时k中的值无定义
C.系统将自动给k赋初值-1
D.这时k中无任何值

27、 下列程序段中的变量已正确定义:
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf("*");
程序段的输出结果是(  )。
A.********
B.****
C.**
D.*

28、 下列程序中横线处应填入的语句是()。
classBase
{
public:
voidfun(){cout<<"Baseoffun"< classDerived:publicBase
{
voidfun()
{
//显示基类的成员函数fun
cout<<"Derivedoffun"< }
};
A.fun();
B.Base.fun();
C.Base::fun();
D.Base->fun();

29、 若有定义语句“inti=2,j=3;”,则表达式i/j的结果是(  )。
A.0
B.0.7
C.0.66667
D.0.66666667

30、 下列叙述中错误的是(  )。
A.在程序中凡是以“#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.C程序中预处理命令行的处理是在程序执行的过程中进行的

31、 下列关于栈的叙述正确的是(  )。
A.栈按“先进先出”组织数据
B.栈按“先进后出”组织数据
C.只能在栈底插入数据
D.不能删除数据

32、 对于类定义:
classA{
public:
virtualvoidfuncl(){}
voidfunc2(){}
};
classB:publicA{
public:
voidfuncl(){cout<<"classBfunc1"< virtualvoidfunc2(){cout<<"classBfunc2"
< };
下面正确的叙述是(  )。
A.A::func2(  )和B::func1(  )都赵虚函数
B.A::rune2(  )和B::func1(  )都不是虚函数
C.B::func1(  )是虚函数,而A::fune2(  )不是虚函数
D.B::func1(  )不是虚函数,而A::func2(  )是虚函数
33、 有下列程序:
#include
voidmain(  )
{char*a[]={"abed","ef","gh","ijk");inti;
for(i=0;i<4;i++)printf("%C",*a[i]);
}
程序运行后的输出结果是(  )。
A.aegi
B.dfhk
C.abed
D.abcdcfghijk

34、 函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[o]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为(  )。
A.1,1
B.1,2
C.2,2
D.2,1

35、 已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则(  )。
A.FA必须定义在FB之前
B.FB必须定义在FA之前
C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

36、下列表达式的值为false的是(  )。
A.1<3&&5<7
B.!(2>4)
C.3&0&&l
D.!(5<8)‖(2<8)

37、 下列叙述中错误的是(  )。
A.在程序中凡是以“#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.C++中预处理命令行的处理是在程序执行的过程中进行的

38、 有下列程序:
#include
voidmain(  )
{inti=5;
do
{if(i%3=1)
if(i%5==2)
{printf("*%d",i);break;}
i++:
}while(i!=O);
printf("\n");
}
程序的运行结果是(  )。
A.*7
B.*3*5
C.*5
D.*2*6

39、 类A是类B的友元,类B是类C的友元,则下列说法正确的是(  )。
A.类B是类A的友元
B.类C是类A的友元
C.类A是类C的友元
D.以上都不对

40、 有如下程序:
#included
usingnamespacestd;
classTestClass
{inta;
pubIic:
TestClass(intx){a=x;}
voidshow(){cout< classTestClassl:publicTestClass
{intb;
public:
TestClassl(inti):TestClass(i+1),b(i){}
voidshow(){cout< intmain()
{TestClassb(5),*P;
TestClassld(1):
p=&d;
p->show();
return0;}
该程序运行后的打印结果是(  )。
A.5
B.1
C.0
D.2

二、程序改错题(18分)
41、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
number=1
number=10
number=100
注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
classTC
{
public:
TC(inti)
{
number=i;
}
voidSetNumber(intm)
{
number=m;
}
intGetNumber()const
{
returnnumber;
}
voidPrint()const
{
cout<<"number="< }
private:
intnumber;
};
voidmain()
{
//********error********
TCobjl;
objl.Print();
TCobj2(3);
//********error********
objl.number=10;
//********error*‰******
TC.SetNumber(100);
objl.Print();
obj2.Print();
}
三、简单应用题(24分)
42、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。
(1)funl(intn)求出n的阶乘,必须使用递归调用。
(2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。
注意:不能修改函数的其他部分。
试题程序:
#include
//必须使用递归
intfunl(intn)
{
}
//不能使用递归
intfun2(intn)
{
}
voidmain()
{
inti;
cout<<"请输入一个整数:"< cin>>i;
cout<<"输入数字的阶乘是:"< cout<<"输入数字的阶乘是:"< return;
}
四、综合应用题(18分)
43、使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成类的构造函数功能,请在注释1后添加适当的语句。
(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。
(3)定义类的友元函数fun,请在注释3后添加适当的语句。
(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include
classPeople
{
public:
//********1********
{
inti;
for(i=0;sUserName[i]!=0;i++)
{m_UserName[i]=sUserName[i];
}



//********2********
m_Old=nOld;
}
private:
charm_UserName[32];
intm_Old;
//********3********
};
voidfun(char*s,People&personl,People&person2
{
//********4********
if()
{
for(inti=0;personl.m_UserName[i]!=0;i+
+)
{
s[i]=personl.m_UserName[i];
s[i+1]=0;
}
}
else
{
for(inti=0;person2.m_UserName[i]!=0;i+
+)
{s[i]=person2.m_UserName[i];
s[i+1]=0;
}
}
}
voidmain()
{
chars[32];
Peoplepl("abc",20);
Peoplep2("def",30):
fun(S,p1,p2);
cout< return;
}

只看不练,假把式······
进入233题库【模拟考场】,在线做题测试,在线查看成绩及详细答案解析!
马上进入

题库优势

更好的做题体验
233计算机二级题库有四种做题模式,可选择自己的喜欢和当前适合的做题模式进行训练。
更多的习题、真题
233计算机二级题库题量储备百万道,包含历年真题,模拟试题等题型,题题结合考试大纲贴近考试 考点。
更专业的试题解析
233计算机二级题库结合考试大纲,将各试题划分了详细的章节知识,更全面的详细的展示答案解析。
进入计算机二级模拟考场>>




相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策