二级C++试题,这次是来真的了

发布于 2018-09-19 11:51  编辑:大黎
0
计算机等级考试题库 扫码微信刷题

二级C++试题,计算机等级考试

1[单选题]下列关于面向对象概念的描述中,错误的是(  )。

A.面向对象方法比面向过程方法更加先进

B.面向对象方法中使用了一些面向过程方法中没有的概念

C.面向对象方法替代了结构化程序设计方法

D.面向对象程序设计方法要使用面向对象的程序设计语言

参考答案:C

 

2[简答题]编写一程序,将两个文件合并成一个文件。

参考解析:

#include

#include

using namespace std;

int main(){

int i=1;

char c[1000];

ifstream ifile1("D:\\10_4_3.cpp");

ifstream ifile2("D:\\10_4_4.cpp");

ofstream ofile("D:\\r10_4.cpp");

while(!ifile1.eof()){

ifile1.getline(c,999);

ofile<

}

while(!ifile2.eof()){

ifile2.getline(c,999);

ofile<

}

ifile1.close();

ifile2.close();

ofile.close();

return 0;

}

 

3[单选题]已知一棵二叉树的先根序列为ABCDEFK,中根序列为DGBAFCK,则结点的后根序列为(  )。

A.ACFKDBGB.GDBFKCAC.KCFAGDBD.ABCDFKG

参考答案:B

参考解析:通过两种树的遍历序列来推断第三种树的遍历时,反复利用前序和中序遍历的性质,就可以确定二叉树,具体:前序遍历的第一个结点A为树的根结点。中序遍历中A左边的结点在A的左子树中,A的右边的结点在A的右子树中。再分别对A的左右子树进行前丽步骤重复处理,直到每个结点都找到正确的位置。

具体:前序遍历的第一个结点A为树的根结点。中序遍历中A左边的结点在A的左子树中,A的右边的结点在A的右子树中。再分别对A的左右子树进行前面步骤重复处理,直到每个结点都找到正确的位置。

 

4[单选题]下列的方法中,不属于软件调试技术的是(  )。

A.强行排错法B.集成测试法C.回溯法D.原因排除法

参考答案:B

参考解析:调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。

 

5[单选题]已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量"\101"是(  )。

A.字符AB.字符aC.字符eD.非法的常量

参考答案:A

参考解析:首先将八进制数转换成十进制数,则发现是65,故答案为A。

 

6[单选题]下面关于函数模板的表述中不正确的是(  )。

A.类模板的成员函数都是模板函数

B.类模板本身在编译过程中不会产生任何代码

C.类模板只能有虚拟类型的参数

D.用类模板定义一个对象时,实参不能省略

参考答案:C

 

7[单选题] 在软件开发中,需求分析阶段产生的主要文档是(  )。

A.软件集成测试计划

B.软件详细设计说明书

C.用户手册

D.软件需求规格说明书

参考答案:D

参考解析:需求分析阶段只能产生需求分析规格说明书,A测试说明书是软件测试阶段生成的,B软件详细设计说明数是设计阶段生产,C用户手册是软件发布时随软件一同交付给用户的。

 

8[单选题] 有下列程序:

#include

voidmain(  )

{inti=5;

do

{if(i%3=1)

if(i%5==2)

{printf("*%d",i);break;}

i++:

}while(i!=O);

printf("\n");

}

程序的运行结果是(  )。

A.*7B.*3*5C.*5D.*2*6

参考答案:A

参考解析:本题考查d0…while循环,先执行循环体,再判断条件是否成立,函数实现的功能是找出满足一个数,它除3时余1,除5时余2,然后打印“*”和这个数从5开始,等于7时恰好符合条件,输出,最后循环结束。

 

9[简答题]使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

(1)不能删除assert()语句。

(2)只能修改后面的数字。

提示:assert函数如果为假,则会产生一个中断异常。

试题程序:

#include

#include

voidmain()

{

char*s1="abc":

//********error********

assert(sizeof(s1)==3):

cout<<"sizeof(s1)=5"<

chars2[10]="ab":

//********error********

assert(sizeof(s2)==2);

cout<<"sizeof(s2)=10"<

chars3=23:

//********error********

assert(sizeof(s3)==4);

cout<<"sizeof(s3)=1"<

return;

}

参考解析:

(1)应改为“assert(sizeof(s1)==4);”。

(2)应改为“assert(sizeof(s2)==1O);”。

(3)应改为“assert(sizeof(s3)==1);”。

【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)==3);”语句中“sizeof(s1)==3”为假,这会使程序产生异常,不能正常执行。因为str1的值为abc,但是它还有一个尾符,它的长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(s1)==4);”。str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)==10);”。charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为“assert(sizeof(s3)==1);”。

 

10[简答题]请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数0perator=,以实现深层复制。

要求:

补充编制的内容写在“//************333************”与“//****************666*************”之间。不得修改程序的其他部分。

注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。

//CDeepCopy.h

#include

#include

using namespace std;

class CDeepCopy

{

public:

int n;//动态数组的元素个数

int *p;//动态数组首地址

CDeepCopy(int);

~CDeepCopy();

CDeepCopy&operator=(const CDeepCopy&r);//赋值运算符函数

};

void writeToFile(char});

//main.cpp

#include”CDeepCopy.h”

CDeepCopy::一CDeepCopy(){delete[]P;}

CDeepCopy::CDeepCopy(int k){n=k;p=new int[n];}//构造函数实现

CDeepCopy&CDeepCopy::0perator=(const CDeepCopy&r)//赋值运算符函数实现

{

//***********333*********

//***********666***********

}

int main()

{

CDeepCopy a(2),d(3);

a.p[O]=1;d.p[O]=666;//对象a,d数组元素的赋值

{

CDeepCopy b(3);//调用赋值运算符函数

a.p[O]=88;b=a;

cout<

}

cout<

cout<<”d fade away;\n”;

cout<

writeToFile(””);

return 0;

}

参考解析:

lq=r.n;//把对象r字符长度赋值给n

delete[]P;//删除动态数组P

P=new int[n];//给动态数组P分配空间为n

for(int i=0;i

//遍历对象r中的数组P

P[i]=r.P[i];//把r.P[i]赋值给P[i]

retum*this://返回被赋值的对象

 

11[单选题]有如下程序:

#include

class BASE{

char c;

public:

BASE(char n):c(n){}

virtual~BASE(){cout<

};

class DERIVED:public BASE{

char c;

public:

DERIVED(char n):BASE(n+1),c(n){}

~DERIVED(){cout<

};

int main()

{ DERIVED("X");

return 0;

}

执行上面的程序将输出( )

A.XY B.YX C.X D.Y

参考答案:A

 

12[单选题]下列有关数据库的描述,正确的是

A.数据库是一个DBF文件

B.数据库是一个关系

C.数据库是一个结构化的数据集合

D.数据库是组文件

参考答案:C

 

13[判断题]构造函数和析构函数都是系统自动调用的成员函数。

参考答案:对

 

14[单选题]字面常量42、4.2、42L的数据类型分别是(  )。

A.long、double int

B.long、float、int

C.int、double、long

D.int、float、long

参考答案:D

 

15[单选题] 若有如下类声明:

Class MyClass{ publiC:

MyClass(  ){Cout<<1;} };

执行下列语句

MyClass a,b[2],*p[2]; 程序的输出结果是(  )。

A.11B.111C.1111D.11111

参考答案:B

参考解析:本题考查默认构造函数和带参数的构造函数,题目中定义一一个对象a以及对象数组b[2],共执行3次构造函数,对象指针不调用构造函数。所以本题答案为B。

 

16[单选题]下面程序段的正确输出是:

int w=4,=3,=2,=1;

out<<(w

A.OB.1C.2D.3

参考答案:B

参考解析:本题为表达式作为变量进行输出,而且表达式为两个三目表达式的嵌套,只要掌握了 该三目表达式的含义,可以正确得出答案为B。

 

17[单选题]下面的描述中,不属于面向对象方法的是(  )。

A.多态B.继承C.类D.过程调用

参考答案:D

参考解析:面向对象方法是运用对象、类和实例、消息、继承、多态等概念来构造。

 

18[单选题] C++系统预定义了3个用于标准数据流的对象,下列选项中不属于此类对象的是(  )。

A.coutB.cinC.cerrD.cset

参考答案:D

参考解析:C++的标准数据流对象有3个:cout标注输出流,cin标准输入流,cerr标准错误流。

 

19[单选题]有如下程序:

#include

using namespace std;

class point {

public:

static int number;

public:

point(){number++;

~point(){number-;}

};

imt point::number=0;

void main(){

point*ptr;

printA,B;

{

point*ptr_point=new point{3};

ptr=ptr_point;

}

pointC;

cout < delete[]ptr;

}

运行时输出的结果是(  )。

A.3 B.4 C.6 D.7

参考答案:D

 

在坚持的道路上,我们为你喝彩!以下是小编为大家准备的二级C++试题,欢迎大家随时阅读。希望大家在计算机等级考试取的好成绩。

 

文章推荐:

全国计算机等级考试可以不考一级直接考二级吗?

2018年全国计算机等级考试题库“二级MS Office 高级应用考试大纲”

全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)

 

 

温馨提示:

考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office

想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库

想知道更多关于计算机等级考试题库的最新资讯吗?点击进入>>>计算机等级考试题库资讯

 

 

 

 


本文网址:http://www.k51.com.cn/info/jsjdjks/1809/1947999.html
选择分享到: