1、全国计算机等级考试二级 C+真题题库 2+2016 年 3 月及答案解析(总分:100.00,做题时间:120 分钟)一、选择题(每小题 1 分,共 40 分)(总题数:40,分数:40.00)1.假定 int 类型变量占用两个字节,其有定义 int x10=0,2,4;,则数组 x 在内存中所占字节数是( )。(分数:1.00)A.3B.6C.10D.202.有两个关系 R,S 如下: (分数:1.00)A.选择B.投影C.插入D.连接3.对于循环队列,下列叙述中正确的是( )。(分数:1.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以
2、大于队尾指针,也可以小于队尾指针4.下列有关函数重载的叙述中,错误的是( )。(分数:1.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同D.重载函数的参数可以带有默认值5.有三个关系 R S 和 T 如下 (分数:1.00)A.自然连接B.并C.交D.差6.下面关于类和对象的描述中,错误的是( )。(分数:1.00)A.类就是 C 语言中的结构体类型,对象就是 C 语言中的结构体变量B.类和对象之间的关系是抽象和具体的关系C.对象是类的实例,一个对象必须属于一个已知的类D.类是具有共同行为的若干对象的统一描述体7.有如下程序: #
3、inClude using namespaCe std; Class test private: int a; publiC: test( )Cout(i);C.east(i);D.east(i);9.下面程序的运行结果是( )。 #include void fun(int *a,int *B int x=*a: *a=*b;*b=X; coutk=k; public: void setN(int n)this 一n=n; ; class BB:public AA/*类体略*“ ; int main() BB X; A n=1;/1 B setN(2);/2 C k=3;/3 D setK(4
4、);/4 return 0; 在标注号码的四条语句中正确的是( )。(分数:1.00)A.1B.2C.3D.440.有如下头文件: int fl(); static int f2(); class MA public: int f3(); static int f4(); 在所描述的函数中,具有隐含的 this 指针的是( )。(分数:1.00)A.f1B.f2C.f3D.f4二、基本操作题(18 分)(总题数:1,分数:18.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 projl 下的工程 projl,该工程中包含程序文件mainepp,其中有类 Door(“门”)和主函数
5、 main 的定义。程序中位于每个“/ERROR*found *”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 打开 503 号门门是锁着的,打不开。 打开 503 号门的锁锁开了。 打开 503 号门门打开了。 打开 503 号门门是开着的,无须再开门。 锁上 503 号门先关门门锁上了。 注意:只修改每个“/ERROR*found *”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Door int Bum;/门号 bool closed;/true 表示门关着 bool locked:/true 表示门锁着
6、public: Door(int nHm) /ERROR*found* nun=this 一ann: closed=locked=true: bool isClosed()constrehlrn closed; /门关着时返回 true,否则返回 false bool isOpened()constreturn!closed; /门开着时返回 true,否则返回 false b001 isLocked()constretum locked; /门锁着时返回 true,否则返回 false bool isUnlocked()constreturn!locked; /门未锁时返回 true,否则返
7、回 false void open() /开门 coutprintarea(); retun 0;(分数:24.00)_四、综合应用题(18 分)(总题数:1,分数:18.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 DataList 类,是一个用于表示数据表的类。s0rt 成员函数的功能是将当前数据表中的元素升序排列。请编写这个 sort 函数。程序的正确输出应为: 排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12 要求: 补充编制的内容写在“/*33*”与
8、“/*666*”两行之问。不得修 改程序的其他部分。 注意:程序最后将结果输出到文件。utdat 中。输出函数 writeToFile 已经编译为。obj 文件,并且在本程序 调用。 /DataListh #inClude using namespaCe std; Class DataList/数据表类 int len; double*d: publiC: DataList(int len,double data=NULL);。DataList()deleted; int length(Constt retum len;/数据表长度(即数据元素的个数) double getElement(in
9、t i)Constreturn di; void sort();/数据表排序 void show()Const;/显示数据表 void writeToFile(Char*,Const DataList&)/mainCpp #inClude”DataListh” DataList:DataList(int len,double data):len(1en) d=new double1en; for(int i_0;i(i);C.east(i);D.east(i); 解析:本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代
10、表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省实参,函数模板的实例就是一个函数的定义。所以本题答案为 D。9.下面程序的运行结果是( )。 #include void fun(int *a,int *B int x=*a: *a=*b;*b=X; coutk=k; public: void setN(int n)this 一n=n; ; class BB:public AA/*类体略*“ ; int main() BB X; A n=1;/1 B setN(2);/2 C k=3;/3 D setK(4);/4 return 0; 在标注号码的四条语句中正
11、确的是( )。(分数:1.00)A.1B.2 C.3D.4解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以本题中 n、k 和 setK 变为了派生类的保护成员,不能直接使用,即 1、3、4 错误,所以 B 选项正确。40.有如下头文件: int fl(); static int f2(); class MA public: int f3(); static int f4(); 在所描述的函数中,具有隐含的 this 指针的是( )。(分数:1.00)A.f1B.f2C.f3 D.f4解析:只有类的非静态成
12、员函数才隐含 this 指针。其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。所以本题答案为 C。二、基本操作题(18 分)(总题数:1,分数:18.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 projl 下的工程 projl,该工程中包含程序文件mainepp,其中有类 Door(“门”)和主函数 main 的定义。程序中位于每个“/ERROR*found *”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 打开 503 号门门是锁着的,打不开。 打开 503 号门的
13、锁锁开了。 打开 503 号门门打开了。 打开 503 号门门是开着的,无须再开门。 锁上 503 号门先关门门锁上了。 注意:只修改每个“/ERROR*found *”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Door int Bum;/门号 bool closed;/true 表示门关着 bool locked:/true 表示门锁着 public: Door(int nHm) /ERROR*found* nun=this 一ann: closed=locked=true: bool isClosed()constreh
14、lrn closed; /门关着时返回 true,否则返回 false bool isOpened()constreturn!closed; /门开着时返回 true,否则返回 false b001 isLocked()constretum locked; /门锁着时返回 true,否则返回 false bool isUnlocked()constreturn!locked; /门未锁时返回 true,否则返回 false void open() /开门 coutnum=num; (2)if(!closed) (3)void lock()解析:三、简单应用题(24 分)(总题数:1,分数:24
15、.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,该工程中包含一个程序文件 main.cpp,其中有类 CPolygon(“多边形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为: 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。 #include toutprintarea(); retun 0;(分数:24.00)_正确答案:(1)virtual int area(void)=0; (
16、2)area() (3)length*height (4)CPolygon)解析:四、综合应用题(18 分)(总题数:1,分数:18.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 DataList 类,是一个用于表示数据表的类。s0rt 成员函数的功能是将当前数据表中的元素升序排列。请编写这个 sort 函数。程序的正确输出应为: 排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:l,2,3,4,5,6,7,8,9,10,11,12 要求: 补充编制的内容写在“/*33*”与“/*666*”两行之问。不得修 改程
17、序的其他部分。 注意:程序最后将结果输出到文件。utdat 中。输出函数 writeToFile 已经编译为。obj 文件,并且在本程序 调用。 /DataListh #inClude using namespaCe std; Class DataList/数据表类 int len; double*d: publiC: DataList(int len,double data=NULL);。DataList()deleted; int length(Constt retum len;/数据表长度(即数据元素的个数) double getElement(int i)Constreturn di;
18、 void sort();/数据表排序 void show()Const;/显示数据表 void writeToFile(Char*,Const DataList&)/mainCpp #inClude”DataListh” DataList:DataList(int len,double data):len(1en) d=new double1en; for(int i_0;ilen 一 1;i+)Coutdid1en 一 1endl_正确答案:(for(inti=0;idj) /dj和 dj比较人,如果大于,就 di和 dj值交换 inttemp=di; /把临时整型变量 temp 赋值为 cJi di=dj;/把 dj赋值给 di dj=temp;/把 temp 值赋给 dj )解析: