一起答

自考C++程序设计2014年10月试题及答案解析

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 定义堆栈类模板Stack(先进后出),栈的大小由使用者确定。要求该类模板对外提供如下二种基本操作:

    (1)push入找

    (2)pop出栈,用数组来实现

    #include ﹤iostream﹥

    using namespace std;

    template﹤class T, int size﹥

    class Stack {

    T x[size];

    int current;

    public:

    Stack( ) { current =0; }

    ....push(....);

    ....pop(....);

    }

    请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)

  2. 给出下面程序的输出结果

    #include ﹤iostream﹥

    using namespace std;

    class Simple

    {

    int x, y;

    public:

    Simple( ) { x=y=0; }

    Simple( int i, int j) { x=i; y =j; }

    void copy( Simple &s);

    void setxy { int i, int j) { x=i; y=j; }

    void print( ) { cout ﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y ﹤﹤ endl; }

    };

    void Simple:: copy( Simple &s)

    {

    x=s.x; y=s.y;

    }

    void func ( Simple s1, Simple &s2)

    {

    s1. setxy(30, 40);

    s2. setxy(70, 80);

    }

    vpid main( )

    {

    Simple obj1(1, 2), obj2;

    obj2. copy(obj1);

    func(obj1, obj2);

    obj1. print( );

    obj2. print( );

    }

  3. 请写出myText1. txt文本文件中的内容

    #include ﹤iostream﹥

    #include ﹤string﹥

    using namespace std;

    #include ﹤fstream﹥

    void main( )

    {

    ofstream myFile1;

    myFile1. open("myText1. txt");

    cout﹤﹤"Enter the data in Chinese format(e. g. , 2008, May 25): "﹤ endl;  string Date("2008, January 1");

    string Year=Date. substr(0,4);

    int k=Date. find( ",");

    int i= Date. find(" ");

    string Month= Date. substr(k+1, i-k-1);

    tring Day = Date. substr(i+1, 2);

    string NewDate=Day +" "+Month+" "+Year;

    myFile1﹤﹤"original date: "﹤﹤ Date ﹤﹤ endl;

    myFile1﹤﹤"Converted date: "﹤﹤NewDate ﹤﹤ endl;

    myFile1. close( );

    }

  4. 在下面下划线处填上正确的语句使序输出结果为  201  402  3  4  5

    #include ﹤iostream﹥

    using namespace std;

    template ﹤class T﹥

    T f(T &a, T &b, int n) {

    for(int i=0; i﹤n; i++) {

    a[i]=a[i]+b[i];

    }

    return a;

    }

    void main( ) {

    int a[5]={1,2,3,4,5};

    int b[5]={100,200,300,400,500}, *p;

    for(int i=0; i﹤2; i++) {

    p=_________;

    }

    for( ; p﹤a+5; p++){

    cout ﹤﹤_________﹤﹤endl;

    }

    }

  5. 完成下面类的定义,使其可以正确的初始化成员变量m和n:

    class point {

    private: int m, n;

    public:

    point( int, int);

    point(point &t);

    };

    point:: point(int a, int b) {

    m=a;  _________=b;

    }

    point:: point( _________ ) {

    m=t. m;

    n=t. n;

    }

  6. 在下面横线处填上适当的语句完成类的定义。

    #include ﹤iostream﹥

    using namespace std;

    class Base {

    int x;

    static const int b;

    public:

    Base (int, int);

    const int *a;

    };

    _________ b=15;

    Base:: Base( int i, int j): _________ { }

  7. 输入一个字符串,将其逆序输出:

    #include ﹤iostream﹥

    using namespace std;

    void main( ) {

    char a[50];

    memset(a, 0, sizeof(a));

    int i=0, j;

    char t;

    cin. getline( a, 50, '\n');

    for(i=0, j=_________; i﹤_________; i++, j--) {

    t=a[i];

    a[i]=a[j];

    a[j]=t;

    }

    cout ﹤﹤a﹤﹤ endl;

    }

  8. 程序的输出结果如下:

    Parent:: Parent( ) called.

    Child:: Child( ) called.

    Child:: ~Called( ) called.

    Parent:: ~Parent( ) called.

    根据输出结果在下面程序中的下划线出填写正确的语句

    include ﹤iostream﹥

    using namespace std;

    class Parent

    {

    public:

    Parent( ) { cout ﹤﹤"Parent:: Parent( ) called. \n"; }

    vintual ~Parent( ) { cout ﹤﹤"Parent:: ~Parent( ) called. \n"; }

    }:

    class Child: public Parent

    {

    public:

    Child(int i) {

    cout﹤﹤"Child:: Child( ) called. \n";

    buf=new char[i];

    }

    virtual ~Child( ) {

    delete [ ]buf;

    cout﹤﹤"Child:: ~Child( ) called. \n";

    }

    private:

    char * buf;

    };

    void disp( _________ *a)

    {

    _________;

    }

    woid main( )

    {

    Parent *a=new Child(20);

    disp(a);

    int d;

    cin ﹥﹥d;

    }

  9. #include ﹤iostream.h﹥

    main( ) {

    int x=5, y=6;

    const int *p=&x;

    *p=y;

    cout﹤﹤*p﹤﹤endl;

    }

  10. #include ﹤iostream﹥

    using namespace std;

    main( ) {

    int num;

    max=10;

    num=1;

    while( num﹤max) num++;

    cout ﹤﹤"num="﹤﹤num;

    }

  11. #include ﹤iostream.h﹥

    class f {

    private:

    int x, y;

    public:

    void set( ) {

    x=0; y=0;

    }

    void print( ) {

    cout﹤﹤x﹤﹤" "﹤﹤y﹤﹤endl;

    }

    }

    main( ) {

    f a;

    a. set(1,2);

    a. print( );

    }

  12. #include ﹤iostream.h﹥

    class f {

    private:

    int x =0, y =0;

    public:

    void set( int a, int b) {

    x=a;  y=b;

    }

    void get( ) {

    cout﹤﹤x﹤﹤"; "﹤﹤y ﹤﹤endl;

    }

    };

    main( ) {

    f a;

    a.set(1,3);

    a. get( );

    }

  13. 使用引用作为函数参数,实参对象和形参对象代表同一对象。改变形参对象的值就是改变_______对象的值。

  14. UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的_______ 关系。

  15. #include ﹤iostream.h﹥

    class point{

    private:

    float x, y;

    public:

    void f1(float a, float b){

    x=a; y=b;

    }

    void get( ) {

    cout ﹤﹤a﹤﹤b﹤﹤endl;

    }

    };

    main( ) {

    point a;

    a. f1(2.2,3.3);

    a. get( );

    }

  16. C++函数中传递对象地址值时使用_______作为参数。

  17. 为了使用C++语言标准程序库提供的string类,在程序中必须使用宏语句是_______。

  18. 若一个程序中使用如下语句申请了一个对象数组:point *prt=new point[2];则在需要释放pn指向的动态数组对象时,所使用的语句是_______.

  19. 设要把一个文件输出流对象myFile与文件“f:\myText.txt”相关联,所用的C++语句是_______。

  20. 定义虚函数所用的关键字是_______。

  21. 重载运算符保持其原有的操作符个数,_______和结合性不变。

  22. 类A有如下成员函数  int A:: fun(double x) { return (int)x/2; }  int A:: fun(int x) { return x*2; }  在主函数中有int s=fun(6.0)+fun(2),则执行该语句后s的值为_______。

  23. 私有派生时,在派生类中基类的public权限变为_______。

  24. C++重载“=”运算符的函数名是_______。

  25. 在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是_______。

  26. string类中用于查找字符串中是否含有某一字符串的成员函数的第1个参数是_______。

  27. C++类的构造函数名与_______名称一样,且没有返回值。

  28. 虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数的调用使用_______。

  29. 执行下列代码  cout﹤﹤showpoint﹤﹤123.0;  程序的输出结果是_______。

  30. C++语言中用于释放动态分配内存的关键字是_______。

  31. 若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。

  32. 在C++的类声明中,用public关键字声明的类成员的访问权限是_______。

  33. 函数模板template﹤typename T﹥void Func(T,T)不能具有哪种实例化形式?(  )

    • A.void Func(int, int)
    • B.void Func(bool, bool)
    • C.void Func(double, int)
    • D.void Func(char, char)
  34. 在标准C++输入/输出方式中,用于设置转换基数为十进制的操控符是_______。

  35. 在定义结构时,为产生封装性,则需使用哪个关键字数据成员?(  )

    • A.public
    • B.publish
    • C.protected
    • D.private
  36. 用于标识十六进制常量的前缀或后缀是(  )

    • A.无
    • B.后缀L或l
    • C.前缀零
    • D.前缀0x
  37. 在类中使用static关键字修饰的成员函数称为(  )

    • A.全局成员函数
    • B.公有成员函数
    • C.静态成员函数
    • D.非静态成员函数
  38. 使用new Point(5,7)创建对象,调用的是下列哪个构造函数?(  )

    • A.Point:: Point( )
    • B.Point:: Point(int, int)
    • C.Point:: Creat( )
    • D.Point:: Creat(int, int)
  39. 类中的protected成员在何处访问?(  )

    • A.只类自身成员函数中
    • B.只子类成员函数中
    • C.类和子类的成员函数中
    • D.通过对象类外访问
  40. 下列表达式,哪个是声明P为指向常量的常量指针?(  )

    • A.const int*P
    • B.int *const P
    • C.const int * const P
    • D.int *P
  41. 类声明的内容用花括号括起来,在花括号后跟哪个符号表示类声明结束(  )

    • A.:
    • B.;
    • C.,
    • D..
  42. C++中函数中的return指令可以(  )

    • A.只能有一条
    • B.0或多条
    • C.至少有一条
    • D.只能主函数调用
  43. 函数重载必须满足的条件是(  )

    • A.函数名相同
    • B.参数个数不同
    • C.参数类型不同
    • D.函数名不相同
  44. 下列哪种类型的函数适合声明为内联函数?(  )

    • A.函数体语句较多
    • B.函数体逻辑较复杂
    • C.函数执行时间较长
    • D.函数语句较少,执行速度要求高
  45. 析构函数的返回值类型为(  )

    • A.void
    • B.bool
    • C.int
    • D.无类型
  46. 设类A中有静态数据成员x,两个A类对象a和b,若

    • A.x=10,则
    • B.x的值为(  )
    • C.9
    • D.10
    • E.11
    • F.不能确定
  47. C ++允许在结构中定义函数,这些函数称为(  )

    • A.静态函数
    • B.构造函数
    • C.析构函数
    • D.成员函数
  48. 头文件扩展名为(  )

    • A..cpp
    • B..h
    • C..ub
    • D..ob
  49. 声明函数为内联使用的关键字为(  )

    • A.const
    • B.inline
    • C.short
    • D.signed
  50. 不同对象调用同名函数,但导致完全不同行为的现象称为(  )

    • A.抽象
    • B.封装
    • C.继承
    • D.多态性
  51. 基类中的protected成员,通过哪种派生,其在派生类中的可见性为protected?(  )

    • A.public和private
    • B.public和protected
    • C.protected和private
    • D.仅protected
  52. 基类中的public成员,通过public派生,基在派生类中的可见性为(  )

    • A.不可访问
    • B.private
    • C.protected
    • D.public
  53. 在编译指令中,宏定义使用的指令是(  )

    • A.#include
    • B.#define
    • C.#if
    • D.#else