计算机等级考试二级C++模拟题及解析10(上机)

日期:12-29| http://www.59wj.com |二级C++上机题库|人气:754

计算机等级考试二级C++模拟题及解析10(上机)

计算机等级考试二级C++模拟题及解析10上机部分

  一、改错题

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

  Previous=9,Next=11

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

  #include<iostream.h>

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

  intmain()

  { intx=10,y,z;

    prevnext(x,y,z);

    cout<<"Previous="<<y<<",Next="<<z<<endl;

    return0; }

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

  voidprevnext(intx,intprev,intnext)

  { /*****************found*****************/

    prev=x--;

    next=++x; }

  【参考答案】

  (1)在main()函数前缺少prevnext函数声明

       应添加:void prevnext (int,int &,int &);

  (2)将void prevnext (int x, int prev,int next)

       改为:void prevnext (int x, int &prev,int &next)

  (3)将prev=x--;改为:prev=x-1;

  【试题解析】

  (1)函数在使用前必须已经被定义,main()中调用prevnext函数,而该函数的实现在main()之后,所以在main()之前必须添加该函数的声明;

  (2)由运行结果可知,通过函数prevnext调动要改变main()中的实参值,所以prev和next都应为引用型参数;

  (3)由运行结果prev=x-1,而源程序的prev=x,x=x-1,这里涉及运算符的优先级问题。

  二、简单应用题

  请编写一个函数fun(intx,intn),该函数返回x的n次幂的值,其中x和n都是非负整数。x的n次幂的计算方法是1与x相乘n次,如x的20次幂的计算为1与x相乘20次。

  注意:部分源程序已存在文件kt15_2.cpp中。

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

  如输入3和4,输出结果如下:

  34

  81

  文件kt15_2.cpp清单如下:

  #include<iostream.h>

  doublefun(intx,intn)

  {

  }

  voidmain()

  { intx,n;

    cin>>x>>n;

    cout<<fun(x,n)<<endl; }

  【参考答案】

  if(x==0) return 0;

  if(n==0) return 1;

  int y=1;

  for(int i=0;i<n;i++) y*=x;

  return y;

  【试题解析】

  本题主要考查用基本控制结构与函数知识解决实际问题的能力。求x的n次幂是数学中常用的运算,编程时在x=0与n=0时需特殊处理。

  .
       
        www.59wj.com

  三、综合应用题

  使用VC6打开考生文件夹下的工程kt15_3。此工程包含一个kt15_3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。

  (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//**1**”之后添加适当的语句。

  (2)定义类A1的构造函数,该构造函数有两个整型参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“//**2**”后添加适当的语句。

  (3)定义类A2的构造函数,该构造函数有三个整型的参数x,y和z,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//**3**”之后添加适当的语句。

  (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//**4**”之后添加适当的语句。

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

  程序输出结果如下:

  9

  6

  962

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

  #include<iostream.h>

  classA

  { inta;

    public:

    //**1**

    intgeta(){returna;} };

  classA1:publicA

  { intb;

    public:

    //**2**

    intgetb(){returnb;} };

  classA2:publicA1

  { intc;

    public:

    //**3**

    voidshow()

    { //**4** } };

  voidmain()

  { A2a(2,6,9);

    cout<<a.geta()<<endl;

    cout<<a.getb()<<endl;;

    a.show(); }

  【参考答案】

  (1)A(int x) {a=x;}

  (2)A1(int x,int y) : A(y){b=x;}

  (3)A2(int x,int y,int z):A1(y,z){c=x;}

  (4)cout<<geta()<<" "<<getb()<<" ";

   cout<<c<<"\n";

  【试题解析】

  本题主要考查对继承和派生的掌握程度,涉及派生类构造函数的定义、基类成员函数的访问等内容。派生类的构造函数的格式请牢记,另外派生类构造函数及析构函数的执行顺序也是需要掌握的。

  .
       
        www.59wj.com 如果觉得《计算机等级考试二级C++模拟题及解析10(上机)》二级C++上机题库,jsj不错,可以推荐给好友哦。
本文Tags: 计算机等级考试 - 上机题库 - 二级C++上机题库,jsj,
在百度中搜索相关文章:计算机等级考试二级C++模拟题及解析10(上机)
在谷歌中搜索相关文章:计算机等级考试二级C++模拟题及解析10(上机)
在soso中搜索相关文章:计算机等级考试二级C++模拟题及解析10(上机)
在搜狗中搜索相关文章:计算机等级考试二级C++模拟题及解析10(上机)
相关分类导航|
热门推荐|