全国二级c++1来源于网络 4.docx

上传人:b****7 文档编号:10545393 上传时间:2023-02-21 格式:DOCX 页数:18 大小:21.14KB
下载 相关 举报
全国二级c++1来源于网络 4.docx_第1页
第1页 / 共18页
全国二级c++1来源于网络 4.docx_第2页
第2页 / 共18页
全国二级c++1来源于网络 4.docx_第3页
第3页 / 共18页
全国二级c++1来源于网络 4.docx_第4页
第4页 / 共18页
全国二级c++1来源于网络 4.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

全国二级c++1来源于网络 4.docx

《全国二级c++1来源于网络 4.docx》由会员分享,可在线阅读,更多相关《全国二级c++1来源于网络 4.docx(18页珍藏版)》请在冰豆网上搜索。

全国二级c++1来源于网络 4.docx

全国二级c++1来源于网络4

 笔试部分

  一、选择题

  1.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为()

  A.GEDHFBCAB.DGEBHFCA

  C.ABCDEFGHD.ACBFEDHG

  【参考答案】B

  2.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()

  A.e3,e1,e4,e2B.e2,e4,e3,e1C.e3,e4,e1,e2D.任意顺序

  【参考答案】B

  3.程序设计语言的基本成分是数据成分、运算成分、控制成分和()

  A.对象成分B.变量成分C.语句成分D.传输成分

  【参考答案】D

  4.下列不属于软件工程的3个要素的是()

  A.工具B.过程C.方法D.环境

  【参考答案】D

  5.将E-R图转换到关系模式时,实体与联系都可以表示成()

  A.属性B.关系C.键D.域

  【参考答案】B

  6.在深度为5的满二叉树中,叶子结点的个数为()

  A.32B.31C.16D.15

  【参考答案】B

  7.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。

而实现递归调用中的存储分配通常用()

  A.栈B.堆C.数组D.链表

  【参考答案】A

  8.开发软件时对提高开发人员工作效率至关重要的是()

  A.操作系统的资源管理功能B.先进的软件开发工具和环境

  C.程序人员的数量D.计算机的并行处理能力

  【参考答案】B

  9.数据处理的最小单位是()

  A.数据B.数据元素C.数据项D.数据结构

  【参考答案】C

  10.下述关于数据库系统的叙述中正确的是()

  A.数据库系统减少了数据冗余

  B.数据库系统避免了一切冗余

  C.数据库系统中数据的一致性是指数据类型一致

  D.数据库系统比文件系统能管理更多的数据

【参考答案】B

11.以下各选项组中,均是C++语言关键字的组是()

  A.publicoperatorthis

  B.shodstringstatic

  C.itwhile>=

  D.privatecoutprintf

  【参考答案】A

  12.下列描述正确的是()

  A.表示m>n为true或mn&&m

  B.switch语句结构中必须有default语句

  C.if语句结构中必须有else语句

  D.如果至少有一个操作数为true,则包含“||”运算符的表达式为true

  【参考答案】D

  13.下面关于break语句的描述中,不正确的是()

  A.break可以用于循环体内

  B.break语句可以在for循环语句中出现多次

  C.break语句可以在switch语句中出现多次

  D.break语句可用于if条件判断语句内

  【参考答案】D

  14.下面程序错误的是()

  ①#include

  ②voidmain()

  ③{

  ④int*p=newint[1];

  ⑤p=9;

  ⑥cout<<*p<

  ⑦delete[]p;

  ⑧}

  A.④B.⑤C.⑥D.⑦

  【参考答案】B

  15.不能作为重载函数的调用的依据是()

  A.参数个数B.参数类型C.函数类型D.函数名称

  【参考答案】D

  16.在C++语言中,数据封装要解决的问题是()

  A.数据的规范化B.便于数据转换

  C.避免数据丢失D.防止不同模块之间数据的非法访问

  【参考答案】D

  17.类的构造函数和析构函数描述正确的是()

  A.构造函数可以重载,析构函数不能重载

  B.构造函数不能重载,析构函数可以重载

  C.构造函数可以重载,析构函数也可以重载

  D.构造函数不能重载,析构函数也不能重载

  【参考答案】A

  18.对静态数据成员的描述中,正确的是()

  A.静态数据成员是类的所有对象共享的数据

  B.类的每个对象都有自己的静态数据成员

  C.类的不同对象有不同的静态数据成员值

  D.静态数据成员不能通过类的对象调用

  【参考答案】A

  19.可以用p.a的形式访问派生类对象p的基类成员a,其中a是()

  A.私有继承的公有成员B.公有继承的私有成员

  C.公有继承的保护成员D.公有继承的公有成员

  【参考答案】D

  20.下面关于虚函数的描述,错误的是()

  A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数

  B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数

  C.虚函数可以是另一个类的友元函数,但不能是静态成员函数

  D.基类中说明的纯虚函数在其任何派生类中都必须实现

  【参考答案】B

21.语句ofstreamf(″SALARY.DAT″,

  ios:

:

app|ios:

:

binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,且()

  A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

  B.若文件存在,将其置为空文件;若文件不存在,找开失败

  C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件

  D.若文件存在,找开失败;若文件不存在,建立一个新文件

  【参考答案】A

  22.下面程序的运行结果是()

  #include

  voidfun(int*a,int*b)

  {intx=*a;

  �*a=*b;*b=x;

  �cout<<*a<<*b<<″″;}

  voidmain()

  {intx=1,y=2;

  fun(&x,&y);

  �cout<

  A.1212B.1221C.2112D.2121

  【参考答案】D

  23.以下哪个特征不是面向对象思想中的主要特征?

()

  A.多态B.继承C.封装D.垃圾回收

  【参考答案】D

  24.C++中运算符优先级由高到低排列正确的是()

  A.:

:

+++||B.<*||,

  C.sizeof%+:

:

D.,&&newsizeof

  【参考答案】A

  25.以下for语句中不是死循环的是()

  A.for(inti=0;i<1;++i);B.for(inti=0;;++i);C.for(inti=1;i>0;++i);D.for(;;);

  【参考答案】A

26.以下定义数组中错误的是()

  A.inta[10];B.inta[2][20];C.inta[20][];D.inta[];

  【参考答案】C

  27.下面程序错误的语句是()

  #include″iostrteam.h″

  ①voidmain()

  ②{

  ③intA=0;

  ④int&B;

  ⑤B=A;

  ⑥cout<

  ⑦cout<

  ⑧}

  A.②B.③C.④D.⑥

  【参考答案】C

  28.函数inttest(inta,intb=1,intc=0),下列调用不合法的个数是()

  test(0);test(0,0);test();test(0,0,0);

  A.0B.1C.2D.3

  【参考答案】C

  29.C++语言中关于构造函数的说法正确的是()

  A.构造函数的函数名不必和类名相同B.构造函数只能每一个

  C.每个类必定有构造函数D.构造函数必有返回值

  【参考答案】C

  30.下面程序的执行结果为()

  #include″iostream″

  usingnamespacestd;

  classA

  {

  inta;

  public:

  voidSeta(intx){a=x;}

  voidDisplay_a(){cout<

  };

  classB

  {

  intb;

  public:

  voidSetb(intx){b=x;}

  voidDispaly_b(){cout<

  };

  classC:

publicA,privateB

  {private:

  intc;

  public:

  voidSetc(intx,inty,intz)

  {c=z;Seta(x);Setb(y);}

  voidDisplay_c(){cout<

  ①voidmain()

  ②{

  ③Ccc;

  ④cc.Seta

(1);

  ⑤cc.Display_a();

  ⑥cc.Setc(2,2,3);

  ⑦cc.Dispaly_b();

  ⑧cc.Display_c();

  }

  A.输出为223B.有错误在第5行C.输出为123D.有错误在第7行

  【参考答案】D

 31.多态性指的是()

  A.以任何方式调用一个虚函数

  B.以任何方式调用一个纯虚函数

  C.借助于指向对象的基类指针或引用调用一个虚函数

  D.借助于指向对象的基类指针或引用调用一个纯虚函数

  【参考答案】C

  32.只能作为成员函数重载的是()

  A.=B.++C.*D.new

  【参考答案】A

  33.语句cout<

  A.1024.4567B.1024C.1024.45D.1e+003

  【参考答案】D

  34.下列程序的结果是()

  #include″iostream.h″

  voidmain()

  {

  char*str;

  �str=″test!

″;

  �cout<

  }

  A.程序错误B.!

C.′\0′D.为空字符

  【参考答案】D

  35.C++语言函数中不能由系统自动生成的是()

  A.析构函数B.构造函数C.内联函数D.拷贝构造函数

  【参考答案】C

二、填空题

  1.数据结构分为逻辑结构与存储结构,线性链表属于【1】。

  【参考答案】

  【1】存储结构

  2.耦合和内聚是评价模块独立性的两个主要标准,其中【2】反映了模块内各成分之间的联系。

  【参考答案】

  【2】内聚

  3.数据库设计分为以下6个设计阶段:

需求分析阶段、【3】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

  【参考答案】

  【3】数据库概念设计阶段

  4.面向对象的模型中,最基本的概念是对象和【4】。

  【参考答案】

  【4】类

  5.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【5】和物理数据模型。

  【参考答案】

  【5】逻辑数据模型

  6.开发一个C++语言程序的步骤通常包括编辑、【6】、链接、运行和调试。

  【参考答案】

  【6】编译

  7.下面程序的输出结果为【7】。

  #include

  voidmain()

  {

  intnum=0,i=8;

  do{

  i--;

  num++;

  }while(--i);

  cout<

  }

  【参考答案】

  【7】-4

 8.下面程序的运行结果为【8】。

  #include

  voidfun(intx=0,inty=0)

  {cout<

  voidmain()

  {fun(5);}

  【参考答案】

  【8】50

  9.C++语言支持的两种多态性分别是编译时的多态性和【9】的多态性。

  【参考答案】

  【9】运行时

  10.cout.put(′A′);,还可以表示为【10】。

  【参考答案】

  【10】cout<<′A′;

  11.将以下程序写成三目运算表达式是【11】。

  if(a>b)max=a;

  elsemax=b;

  【参考答案】

  【11】max=(a>b)?

a:

b;

  12.下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。

  #include

  #include

  voidmain()

  {chara[]=″clanguage″,t;

  inti,j,k;

  �k=strlen(a);

  �for(i=0;i<=k-2;i+=2)

  �for(j=i+2;j<=k;【12】)

  �if(【13】)

  �{t=a[i];a[i]=a[j];a[j]=t;}

  �cout<

  �cout<

  【参考答案】

【12】j+=2【13】a[i]>=a[j]或a[i]>a[j]

  13.请定义一个函数名为A,返回值为int,没有参数的纯虚函数的定义是【14】。

  【参考答案】

  【14】virtualintA()=0;

  14.假设fin是一个文件流对象,则关闭文件的语句是【15】。

  【参考答案】

  【15】fin

  上机部分

  一、改错题

  使用VC6打开考生文件夹下的工程kt5_1,此工程包含一个源程序文件kt5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

  (1,2)

  5,6

  (6,9)

  源程序文件kt5_1.cpp清单如下:

  #include

  classA{

  public:

  A(inti,intj){a=i;b=j;}

  /****************found*******************/

  voidMove(intx,inty){a+=x;b+=y}

  voidShow(){cout<<"("<

  private:

  inta,b;

  };

  classB:

privateA

  {

  public:

  /****************found*******************/

  B(inti,intj,intk,intl):

(i,j){x=k;y=l;}

  voidShow(){cout<

  voidfun(){Move(3,5);}

  /****************found*******************/

  voidf1(){Show();}

  private:

  intx,y;

  };

 voidmain()

  {

  Ae(1,2);

  e.Show();

  Bd(3,4,5,6);

  d.fun();

  d.Show();

  d.f1();

  }

  【参考答案】

  

(1)将voidMove(intx,inty){a+=x;b+=y}

  改为:

voidMove(intx,inty){a+=x;b+=y;}

  

(2)将B(inti,intj,intk,intl):

(i,j){x=k;y=l;}

  改为:

B(inti,intj,intk,intl):

A(i,j){x=k;y=l;}

  (3)将voidf1(){Show();}

  改为:

voidf1(){A:

:

Show();}

  【试题解析】

  

(1)主要考查对表达式定义规则的掌握,此处缺少一个“;”,任何一个表达式都应该以分号作为结束标志;

  

(2)主要考查对派生类构造函数定义的掌握,参数列表中基类的成员应使用基类构造函数初始化,因此必须向基类传递参数,传递时直接使用基类名;

  (3)主要考查对基类函数调用方法的掌握,为了调用基类的函数应该使用作用域符“:

:

”以限定访问的位置。

 二、简单应用题

  请编写一个函数intpattern_index(charsubstr[],charstr[]),该函数执行含通配符"?

"的字符串的查找时,该通配符可以与任一个字符匹配成功。

当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。

要求使用for循环实现。

输出结果如下:

  子串起始位置:

5

  注意:

部分源程序已存在文件kt5_2.cpp中。

  请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。

  文件kt5_2.cpp的内容如下:

  #include

  intpattern_index(charsubstr[],charstr[])

  {

  }

  voidmain()

  {

  char*substring,*string;

  intsame;

  substring="?

?

?

gram";

  string="thisprogramreturnindexofsubstring";

  same=pattern_index(substring,string);

  if(same)

  cout<<"子串起始位置:

"<

  else

  cout<<"匹配不成功"<

  }

  【参考答案】

  intpattern_index(charsubstr[],charstr[])

  {inti,j,k;

  for(i=0;str[i];i++)

  for(j=i,k=0;(str[j]==substr[k])||(substr[k]=='?

');j++,k++)

  if(!

substr[k+1])

  return(i);

  return(0);}

  【试题解析】

  本题主要考查使用for循环和一维数组的能力。

对于复杂查找,往往使用for的多重循环。

来源:

考试大-计算机二级考试

三、综合应用题

  使用VC6打开考生文件夹下的工程kt5_3,此工程包含一个源程序文件kt5_3.cpp,其中定义了用于表示复数的类comp,但类comp的定义并不完整。

请按要求完成下列操作,将类comp的定义补充完整。

  

(1)定义comp的构造函数,函数含参数x和y,它们都是int型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。

请在注释“//**1**”之后添加适当的语句。

  

(2)完成类comp的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句;

  (3)完成类comp的友元函数friendcompplus(comp&x,comp&y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。

输出结果如下:

  10+20i

  2+3i

  result:

12+23i

  注意:

除在指定位置添加语句之外,请不要改动程序中的其他内容。

  源程序文件kt5_3.cpp清单如下:

  #include

  classcomp

  {inta;

  intb;

  public:

  //**1**

  friendcompplus(comp&x,comp&y);

  voidinput(intx,inty)

  {//**2**}

  voidoutput()

  {cout<

  compplus(comp&x,comp&y)

  {//**3**

  c.b=x.b+y.b;

  returnc;}

  voidmain()

  {compx(10,20),y,z;

  y.input(2,3);

  z=plus(x,y);

  x.output();

  y.output();

  cout<<"result:

";

  z.output();}

  【参考答案】

  

(1)comp(intx=0,inty=0):

a(x),b(y){}

  

(2)a=x;

  b=y;

  (3)compc;

  c.a=x.a+y.a;

  【试题解析】

  本题主要考查类的定义和友元函数定义的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1