历年二级C真题及答案.docx
《历年二级C真题及答案.docx》由会员分享,可在线阅读,更多相关《历年二级C真题及答案.docx(104页珍藏版)》请在冰豆网上搜索。
历年二级C真题及答案
公共基础知识及C++语言程序设计
(考试时间90分钟,满分100)分)
(1)C
(2)C(3)B(4)A(5)D
•、选择题(⑴〜(35)每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有•个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下面叙述正确的是
A)算法的执行效率与数据的存储结构无关
B)算法的空间复杂度是指算法程序中指令(或语句)的条数
C)算法的有穷性是指算法必须能在执行有限个步骤之后终II:
D)以上三种描述都不对
(2)以下数据结构中不属于线性数据结构的是
A)队列B)线性农C)二叉树D)栈
⑶在•棵二叉树上第5层的结点数最多是
A)8B)16C)32D)
(4)下面描述中,符合结构化程序设计风格的是
A)使用顺序、选择和重复(循环)三种基本控制结构农示程序的控制逻辑
B)模块只有-个入口,可以有多个出口
C)注重提高程序的执行效率
D)不使用goto语句
(5)下面概念中,不属于面向对象方法的是
A)对象B)继承C)类D)过程调用
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是
A)可行性分析B)需求分析C)详细设计D)程序编码
(7)在软件开发中,下面任务不属于设计阶段的是
A)数据结构设计B)给出系统模块结构
C)定义模块算法D)定义需求并建立系统模型
(8)数据库系统的核心是
A)数据模型C)软件工具
B)数据库管理系统D)数据库
(9)下列叙述中正确的是
A)数据库系统是•个独立的系统,不需耍操作系统的支持
B)数据库设计是指设计数据库管理系统
C)数据库技术的根本目标是要解决数据共学的问题
D)数据库系统中,数据的物理结构必须与逻辑结构-致
(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是
A)内模式B)外模式C)概念模式D)逻辑模式
(11)关于面向对象的程序设计方法,下列说法正确的是
A)“封装性”指的是将不同类型的相关数据组合在-起,作为•个整体进行处理
B)“多态性“指的是对象的状态会根据运行时要求自动变化
C)基类的私有成员在派生类的对象中不可访问,也不占内存空间
D)在而向对象的程序设计中,结构化程序设计方法仍有若重要作用
(12)判断字符型变量ch是否为大写英文字付,应使用农达式
A)ch>=A&ch<=*Z'B)chv=Allch>=Z
C),A*<=ch<=,Z,D)ch>二A&&chv二Z
(13)已知下列语句中的x和y都是int型变虽,其中错误的语句
A)x=y++:
B)x=++y;C)(x+y)++;D)++x二y;
(14)执行语句序列
intn:
cin»n;
switch(n)
{case1:
case2:
coutvvT;
case3:
case4:
cout«2;break:
default:
cout«3;
}
时,若键盘输入1,则屏幕显示
A)1B)2C)3D)12
(15)下列程序的输岀结果是
#include
usingnamespacestd:
intmainf)
{
chara[]=“Hello,World”;
char*ptr=a;
while(*ptr)
{
if(*ptr>='a*&&*ptr<=*zr)
cout«char(*ptr+'A'
elsecout«*ptr;
ptr++;
}
return0;
}
A)HELLO.WORLDB)Hello,World
C)hELLO.WORLDD)hello,world
(16)已知:
inlm=10;在下列定义引用的语句中,正确的是
A)int&x二m:
B)inty二&m:
C)int&z;D)int&t=&m;
(17)下列函数原型声明中错谋的是
A)voidFun(intx=0,inty=0);
B)voidFun(intx,inty);
C)voidFun(intx,inty=0);
D)voidFun(intx=0,inty);
(18)己知程序中己经定义了函数test,其原型是inttest(int,int.int);,则下列重载形式中正确的是
A)chartest(int.intjnt);
B)doubletest(int.int,double);
C)inttest(int,intjnt=O);
D)floattest(int,int,float=3.5F);
(19)有以下程序
#include
inti=0;
voidfun()
{{
staticinti=1;
std:
:
cout«i++«V;
}
std:
:
cout«i«V;
}
intmain()
{
fun();fun();
return0;
}
程序执行后的输出结果是
A)1,2,1,2,B)1.2,2.3,C)2.0,3,0.D)1.0.2A
(20)已知函数f的原型是:
voidf(int*a.long&b);变虽vl、v2的定义是:
intv1Jongv2:
.正确的调用语句是
A)f(vl.&v2);B)f(vl,v2);
C)f(&vl,v2);D)f(&vl.&v2);
(21)有以下类定义
classMyClass
{
public:
MyClass(){cout«1;}
};
则执行语句MyClassa.b[2).叩⑵;后,程序的输出结果是
A)llB)lllC)llllD)IIII1
(22)关于友元,下列说法错误的是
A)如果类A是类B的友元,那么类B也是类A的友元
B)如果函数fun()彼说明为类A的友元,那么在fun()中可以访问类A的私有成员
C)友元关系不能彼继承
D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元
(23)关于动态存储分配,下列说法正确的是
A)new和delete是C++语言中专门用于动态内存分配和释放的函数
B)动态分配的内存空间也可以彼初始化
C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间
D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
(24)有以下程序
#include
usingnamespacestd:
classMyClass
{
public:
MyClass(intn){number=n;}
〃拷贝构造函数
MyClass(MyClass&olher){number=other.number;}
^MyClass(){}
private:
intnumber:
};
MyClassfun(MyClassp)
{
MyClasstemp(p);
returntemp;
I
intmain()
{
MyClassobjl(10),obj2(0);
MyClassobj3(obj1);
obj2=fun(obj3);
return0;
}
程序执行时,MyClass类的拷贝构造函数彼调用的次数是
A)5B}4C)3D)2
(25)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的
A)公有成员和私有成员B)私有成员和保护成员
C)公有成员和保护成员D)私有成员、保护成员和公有成员
(26)在C++中用来实现运行时多态性的是
A)重载函数B)析构函数
C)构造函数D)虚函数
(27)•个类可以同时继承多个类,称为多继承。
下列关于多继承和虚基类的农述中,错误的是
A)每个派生类的构造函数都要为虚基类构造函数提供实参
B)多继承时有可能出现对基类成员访问的二义性问题
C)使用虚基类可以解决二义性问题并实现运行时的多态性
D)建立最派生类对象时,虚基类的构造函数会首先被调用
(28)在-个类体的下列声明中,正确的纯虚函数声明是
A)virtualvoidvf()=0;B)voidvf(int)=O;
C)virtualintvf(int);D)virtualvoidvf(int){}
(29)在下面的运算符重载函数的原型中,错谋的是
A)Volumeoperator-(double,double);
B)doubleVolume:
:
operator-(double);
C)VolumeVolume:
:
operator・(Volume);
D)Volumeoperator・(Volume,Volume);
(30)下列是模板声明的开始部分,其中正确的是
A)template
B)template
C)template
D)template
(31)执行语句序列
ofstreamoutfile(HDATA.DATH);
if(..・)cout«”OK”;elsecout«“FAIL”;
后,如果文件打开成功显示“OK”,否则就显示“F厶n。
”。
由此可知,上[fiiif语句的...处的农达式应是
A)outfile.fail()或outfileB)outfile.good()或loutfile
C)outfile.good()或outfileD)outfile.fail()或loutfile
(32)C++流中重载的运算符>>是•个()
A)用于输出操作的非成员函数B)用于输入操作的非成员函数
C)用于输出操作的成员函数D)用于输入操作的成员函数
(33)有以下类定义
classPoint{
public:
Point(intx=0.inty=0){_.x=x:
_.y=y;}
voidMove(intxOff,intyOff)
{_x+=xOff:
_.y+=yOff;}
voidPrint()const
{cout«f«_x««_y«y«endl:
}
private:
};
下列语句中会发生编译错误的是
A)Pointpt;pt.Print();
B)constPointpt;pt.Print();
C)Pointpt;pt.Move(l,2):
D)constPointpt:
pt.Move(l,2);
(34)有以下类定义
classMyClass
{
private:
intid;
chargender.
char*phone:
public:
MyCiass():
id(0),gender(,#,),phone(NULL){}
MyClass(intno,charge=#\char*ph=NULL){id=no;gende=ge:
phone=ph:
}
};
下列类对象定义语句中错误的是
A)MyClassmyObj;
B)MyClassmyObjd