试题

下半年计算机二级C++考前模拟试题及答案二

时间:2025-05-09 13:45:53 试题 我要投稿

2015下半年计算机二级C++考前模拟试题及答案(二)

  一、填空题

2015下半年计算机二级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

  void main()

  {

  int num=0,i=8;

  do{

  i--;

  num++;

  }while(--i);

  cout<

  }

  【参考答案】

  【7】-4

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

  #include

  void fun(int x=0,int y=0)

  {cout<

  void main()

  {fun(5);}

  【参考答案】

  【8】50

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

  【参考答案】

  【9】运行时

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

  【参考答案】

  【10】cout<<′A′;

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

  if(a>b)max=a;

  else max=b;

  【参考答案】

  【11】max=(a>b)?a:b;

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

  #include

  #include

  void main()

  { char a[]=″clanguage″,t;

  int i,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】virtual int A()=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)将void Move( int x, int y) {a+=x;b+=y}

  改为:void Move( int x, int y) {a+=x;b+=y;}

  (2)将B(int i,int j,int k,int l):(i,j) {x=k;y=l;}

  改为:B(int i,int j,int k,int l):A(i,j) {x=k;y=l;}

  (3)将void f1(){Show();}

  改为:void f1(){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<<"匹配不成功"<

  }

  【参考答案】

  int pattern_index(char substr[],char str[])

  {int i,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(int x=0,int y=0):a(x),b(y){}

  (2)a=x;

  b=y;

  (3)comp c;

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

  【试题解析】

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

【下半年计算机二级C++考前模拟试题及答案二】相关文章:

计算机二级C++模拟试题及答案09-22

2015下半年计算机二级C++考前模拟试题及答案(三)07-23

2015下半年计算机二级C++考前模拟试题及答案(一)07-03

2016计算机二级C++上机模拟试题及答案07-16

计算机二级c++试题及答案08-27

2016年计算机二级《C++》模拟试题及答案06-11

2016最新计算机二级VB考前模拟试题及答案07-12

计算机二级C语言考前模拟试题及答案201607-31

计算机二级考试C++考前冲刺试题10-13