一起答

自考C++程序设计模拟试题及答案(七)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 写一个程序,定义一个抽象类Shape,由它派生3个类Square(正方形),Trapezoid(梯形)和Triangle三角形。用虚函数分别计算几种图形面积并求它们的和。要求用基类指针数组,使它的每一个元素指向一个派生类对象。

    #include

    class Shape

    {public:

    virtual double area()const=0;

    };

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

    #include

    class A

    {private:

    int a;

    public:

    void set(int x){a=x;}

    void show()cout<<"a="<

    };

    class B:public A

    {private:

    int b;

    public:

    void set(int x=0){A::set(x);b=x+10;}

    void set(int x,int y){A::set(x);b=y;}

    void show(){A::show();cout<<"b="<

    };

    void main()

    {B b;

    b.set(10);b.show();

    b.set(30,50);b.show();

    }

  3. 给出下面程序的输出结果。

    #include

    template

    class Num

    {T x,y;

    public:

    Num(T i,T j=0){x=i;y=j;}

    void set(T i,T j=0){x=i;y=j;}

    void show()

    {cout<

    if(y!=0)

    cout<<(y>0'+':'-')<<(y>0?y:-y)<'i';

    cout<

    }

    };

    void main()

    {Numn(1);

    n.show();

    n.set(2,3);

    n.show();

    Numm(3,-4);

    m.show();

    }

  4. 一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用show()函数输出num的值10。

    #include

    class Test

    {private:

    static int num;

    public:

    Test(int);

    void show();

    };         

    _________

    Test:: Test(int n)

    {num=n;}

    void Test::show()

    {cout<

    void main()

    {Test t(10);

    _________       

    }

  5. 下面程序段用来求三角形的面积,首先进行判断,三边不符合组成三角形时,返回-1;符合时输出三角形面积。

    #include

    #include

    double area(double a,double b,double c)

    {if (_________)

    Return -1;

    else

    {

    double ar,1;

    1=(a+b+c)/2;

    ar=sqrt(1*(1-a)*(1-b)*(1-c));

    retum ar;

    }

    }

    void main()

    {double i=0,j=0,k =0;

    Cout<<”输入三角形三边:”;

    cin>>i>>j>>k;

    double s=area(i,j,k);

    if(s<0)

    cout<<"不是三角形"<

    else

    __________

    }

  6. 在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。

    #include

    using namespace std;

    void main()

    {float a,b;

     _________//函数cha的原型声明

    a=12.5;

    b=6.5;

    float c=_________;//调用函数cha

    cout<

    }

    float cha( float x, float y)

    {float w;

    w=x-y;

    return w;

    }

  7. 下面程序中用来求数组和。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为s=150。

    #include

    class Arr

    {int*a,n;

    public:

    Arr():a(0),n(0){}

    Arr(int*aa,int nn)

    {n=nn;

    a=new int[n];

    for(int i=0;i

    *(a+i)=*(aa+i);

    }

    ~Arr(){deletea;}

    ____________

    {return*(a+i);}

    };

    void main()

    {int b[5]={10,20,30,40,50}

    Arr a1(b,5);

    int i=0,s=0;

    ____________

    s+=a1.GetValue(i);

    cout<<"s="<

    }

  8. #include

    class Base

    {protected:

    int x;

    public:

    virtual void fun()=0;

    }

    class Derived:public Base

    {int z;

    public:

    Derived(int i){z=5;}

    void fun()

    cout<<"派生类fun():"<<"z="<

    };

    void main()

    Derived b(5);

    Base*p=new Base(6);

    p= &b;

    p->fun();

    }

  9. 写出模板函数实现数值型数组元素值按从小到大排序的程序。

    #include

    using namespace std;

    ____________

    void sort(Tb[ ],int n)

    {T temp;

    int i,j;

    T*a=newT[n];

    for(i=0;i

    {a[i]=b[i];}

    for(i=0;i

    {for(j=i+;j

    if(a[i]>a[j])

    {temp=a[i];

    a[i]=a[j];

    a[j]=temp;

    }

    }

    }

    for(i=0;i

    {cout<

    cout<

    delete a;

    }

    void main()

    {int i,n=6;

    int a[]={5,1,9,10,3,8}

    sort___________;

    for(i=0;i

    {cout<

    cout<

    }

  10. #include

    class A

    {private:

    int x;

    protected:

    int y;

    public:

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

    };

    class B:public A

    {public:

    B(int a,int b):A(a,b){}

    void show()cout<

    };

    void main()

    {B b(8,9);

    B.show();

    }

  11. #include

    class A

    {private:

    int a;

    public:

    void func(B &);

    A(int i){i=a;}

    };

    class B

    {private:

    int b;

    friend void A::func(B&)

    public:

    B(int i){b=i;}

    };

    void::func(B&r)

    {a=r.b;

    cout<

    }

    void main()

    {B bt(3);

    A at(10);

    at.func(bt);

    }

  12. #include

    void main()

    {int i(3),j(8);

    Int*const p=&i;

    cout<<*p<

    p=&j;

    cout<<*p<

    }

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

  14. #include

    #include

    class Bas

    {public:

    Bas(char*s="\0"){strcpy(name,s);}

    void show();

    protected:

    char name[20];

    };

    Bas b;

    void show()

    {cout<<”name:”<

    void main()

    Bas d2("hello");

    Show();

    }

  15. 设类A有成员函数void f(void);,若要定义一个指向类成员函数的指针变量pf来指向f该指针变量的声明语句是_________。

  16. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。

  17. 文件流类的________成员函数的功能是打开一个文件。

  18. 在C++中,利用向量类模板定义一个具有20个int的向量A,其元素均被置为5,实现操作的语句是_______。

  19. 表达式cout<<hex还可表示为________。

  20. C++类的_________函数名与类名称一样,且没有返回值。

  21. ________可以视为是单一继承的扩展。

  22. 类模板用来表达具有__________的模板类对象集。

  23. 在C++中,访问指针所指向的对象的成员使用________运算符。

  24. 执行_________操作将释放由指针所指向的动态分配的内存空间。

  25. 定义虚函数所用的关键字是_________。

  26. 在C++中,虚函数帮助实现了类的_________。

  27. 一个抽象类的派生类可以实例化的必要条件是实现了所有的_________。

  28. 若要把 FriendClass定义为类 Myclass的元类,则应在类 MyClass的定义中加人语句_________。

  29. 对数组进行升幂排序、反转、复制数组的内容等操作需要包含头文件_______。

  30. 如果调用函数时,需要改变实参或者返回多个值,应该采取_______方式。

  31. 假定AB为一个类,则语句AB(int i=0);为该类_________函数的原型说明。

  32. 语句序列ifstream infile;infile.open("data.dat");的功能可用一个语句实现,这个语句是_________。

  33. C++程序一般可以分为4个部分:程序的主函数、全局说明、_______和用户自定义的函数。

  34. 将一个函数声明为内联函数时所使用的关键字为()

    • A.signed
    • B.short
    • C.const
    • D.inline
  35. 设存在函数intsum(int,int)返回两个参数的和,若求2045100三个数的和,下列表达式不正确的是()

    • A.int m=sum(20,45,100);
    • B.int m=sum(sum(20,45),100)
    • C.int m=sum(20,sum(45,100))
    • D.int m=sum(45,sum(20,,100))
  36. 基类的protected成员,通过protected派生,其在派生类中为()

    • A.public
    • B.private
    • C.protected
    • D.不可访问
  37. 已知f和g是同一类中的两个成员函数,若f的实现代码体内不能调用g则可能的情况是()

    • A.f和g都是常成员函数
    • B.f是常成员函数,g不是
    • C.f不是常成员函数,g是常成员函数
    • D.g和f都不是常成员函数
  38. 下列有关重载函数的说法中正确的是()

    • A.重载函数必须具有不同的返回值类型
    • B.重载函数参数个数必须相同
    • C.重载函数必须有不同的形参列表
    • D.重载函数名可以不同
  39. 下列对派生类的描述中,错误的是()

    • A.一个派生类可以作为另一个派生类的基类
    • B.派生类至少有一个基类
    • C.派生类的默认继承方式是private
    • D.派生类只继承了基类的公有成员和保护成员
  40. C++类体系中,不能被派生类继承的有()

    • A.常成员函数
    • B.构造函数
    • C.虚函数
    • D.静态成员函数
  41. 下列各项不是C++中的标准设备名的是()

    • A.stdin
    • B.cout
    • C.clog
    • D.cerr
  42. 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序为()

    • A.自己所属类、对象成员所属类、基类的构造函数
    • B.对象成员所属类基类自己所属类的构造函数
    • C.基类、对象成员所属类、自己所属类的构造函数
    • D.基类、自己所属类、对象成员所属类的构造函数
  43. 下列关于构造函数的描述中,错误的是()

    • A.构造函数可以设置默认的参数
    • B.构造函数在定义类对象时自动执行
    • C.构造函数可以是内联函数
    • D.构造函数不可以重载
  44. 继承机制的作用是()

    • A.信息隐藏
    • B.数据封装
    • C.定义新类
    • D.数据抽象
  45. 下列关于构造函数的描述中,错误的是()

    • A.构造函数可以设置默认参数
    • B.构造函数在说明类对象时自动执行
    • C.构造函数可以对静态数据成员进行初始化
    • D.构造函数可以重载
  46. 下列关于运算符重载的描述中,正确的是()

    • A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
    • B.一元运算符只能作为成员函数重载
    • C.二元运算符重载为非成员函数时,参数表中有一个参数
    • D.C++中可以重载所有的运算符
  47. C++中注释“∥”的有效范围是()

    • A.从“∥”开始到行尾
    • B.从“∥”开始到下一个“∥”
    • C.“∥”及其后一个字符
    • D.从“∥”开始到程序尾
  48. 下列哪种默认参数的声明是不正确的()

    • A.int max(int a,int b,int c, int d=0);
    • B.int max(int a,int b,int c=0,int d=0);
    • C.int max(int a=0,int b,int c=0,int d=0);
    • D.int max(int a,int b=0,int c=0,int d=0);
  49. 下列模板定义中不正确的是()

    • A.templateQ F(Q x) {returnQ+x;}
    • B.templateF (Q x){returnx+x;}
    • C.templateT F(T x){returnx*x;}
    • D.templateT F(T x){return x;}
  50. 语句int*p=&k;定义了指针p,与这个语句等效的语句序列是()

    • A.int *p;p=&k;
    • B.int *p;p=k;
    • C.int *p;p*=&k;
    • D.int *p;*p=k;
  51. 下列选项中不是C+关键字的是()

    • A.bool
    • B.operator
    • C.inc
    • D.friend
  52. 假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete[]px;语句时调用该类析构函数的次数为()

    • A.0
    • B.1
    • C.n
    • D.n+1
  53. 对于类中的成员,使用protected修饰,表明该成员的访问权限是()

    • A.公有的
    • B.私有的
    • C.保护的
    • D.不可见