2015春年1月湖南电大《面向对象程序设计》模拟练习(2

时间:2024-04-27 19:31:24 5A范文网 浏览: 复习资料 我要投稿

一、单项选题

1.设x和y均为bool量,则x && y为真的条件是(    )。

   A. 它们均为真      B. 其中一个为真  C. 它们均为假      D. 其中一个为假

2. 在下面循环语句中循环体执行的次数为(    )。

  int i=0,s=0;

while(s<20) {i++; s+=i;}

   A. 4          B. 5         C. 6        D. 7

3. 假定p是具有int**类型的指针变量,则给p赋值的正确语句为(    )。

A. p=new int;      B. p=new int*;  C. p=new int**;    D. p=new int[10];

4. 以下关于函数模板叙述正确的是(    )。

   A. 函数模板也是一个具体类型的函数

   B. 函数模板的类型参数与函数的参数是同一个概念

   C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数

   D. 用函数模板定义的函数没有类型

5. 在多文件结构的程序中,通常把类的声明单独存放于(    )中。

   A. 主文件      B. 实现文件      C. 库文件      D. 头文件

6. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为(    )。

   A. pb=b;       B. pb=&b[0];       C. pb=new int;       D. pb=b[5];

7. 假定一个类的构造函数为“A(int aa=1, int bb=0) {a=aa; b=bb;}”,则执行“A x(0);”语句后,x.a和x.b的值分别为(    )。

    A. 0和0        B. 0和1        C. 1和0       D. 1和1

8. 假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(    )。

  A. x.a       B. x.a()      C. x->GetValue()      D. x.GetValue()

9. C++的继承性允许派生类继承基类的(   )。

     A. 部分特性,并允许增加新的特性或重定义基类的特性

     B. 部分特性,但不允许增加新的特性或重定义基类的特性

     C. 所有特性,并允许增加新的特性或重定义基类的特性

     D. 所有特性,但不允许增加新的特性或重定义基类的特性

10. 假定AB为一个类,则执行“AB x;”语句时将自动调用该类的(    )。

     A. 带参构造函数         B. 无参构造函数   C. 拷贝构造函数         D. 赋值重载函数

11. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(   )。

       A. int *p=new int[30];    B. int *p=new int(30);   C. int *p=new [30];    D. *p=new int[30];

   12. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句为(   )。

       A. strcpy(book->title,”Wang Tao”);  B. strcpy(book.title,”Wang Tao”);    

       C. strcpy(*book.title,”Wang Tao”);  D. strcpy((*book)->title,”Wang Tao”);

   13. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为(    )。

       A. pb=b;       B. pb=&b[0];       C. pb=new int;       D. pb=b[5];

   14. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句(    )。

   A. delete p;     B. delete *p;     C. delete &p;     D. delete []p;

   15. 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的(    )。

       A. 可维护性    B. 可复用性    C. 兼容性        D. 正确性

   16. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(   )放在函数原型或函数头的前面。

       A. in            B. inline          C. inLine      D. InLiner

  17. 在关键字public后面定义的成员为类的(   )成员。

       A. 私有      B. 公用      C. 保护      D. 任何

18. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(   )。

       A. x.a      B. x.a()      C. x->a      D. x->a()

  19. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(   )。

       A. int AA::a()      B. int AA:a()    C. AA::a()          D. AA::int a()

  20. 在多文件结构的程序中,通常把类的定义单独存放于(   )中。

       A. 主文件      B. 实现文件      C. 库文件      D. 头文件


二、填空题

1. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。

2. 执行char *p=new char(’a’)操作后,p所指向的数据对象的值为________。

3. 变量v定义为“double  v=23.4;”,要使指针pv指向v,则定义pv的语句为______________。

4. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。

5. 假定用户只为类AB定义了一个构造函数"AB(int aa, int bb=0) {a=aa; b=bb;}",则定义该类的对象时,其实参表中至少带有_________个实参。

6.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为__________。

 7. 一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。

8. 重载一个函数的条件是:该函数必须在参数的个数或参数对应的__________上与其它同名函数不相同。

 9. 一个指针类型的对象占用内存的________个字节的存储空间。

   10. 假定一个数据对象为int*类型,则指向该对象的指针类型为_______。

   11.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为________。

   12.假定p所指对象的值为25,p+1所指对象的值为42,则执行*(p++)或*p++运算后,p所指对象的值为________。

13. 一个数组的数组名实际上是指向该数组________元素的指针,并且在任何时候都不允许________它。

14. 重载一个函数的条件是:该函数必须在参数的________或参数对应的__________上与其它同名函数不相同。

15. 指针变量pv和pc定义为“void *pv =”Hello, word!”; char *pc;”,要将pv值赋给pc,则正确的赋值语句是pc=___________pv。

16. 若p指向x,则________与x的表示是等价的。

   17. 假定p为指向二维数组int d[4][6]的指针,则p的类型为________。

   18. 若y是x的引用,则对y的操作就是对_______的操作。

   19. 执行char *p=new char(’a’)操作后,p所指向的数据对象的值为________。

   20. 执行________操作将释放由p所指向的动态分配的数据空间。



三、程序填充题,根据题意在横线上填写合适的内容。

2、已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符[ ]要对下标是否越界进行检查。

class ARRAY{  

int *v;       //指向存放数组数据的空间

int s;        //数组大小  

public:  

ARRAY(int a[], int n);

   ~ ARRAY(){delete []v;}

   int size(){ return s;}

int& operator[](int n);

};

___(1)___ operator[](int n)  //[ ]的运算符成员函数定义

{

if(n<0 || ___(2)___) {cerr<<"下标越界!"; exit(1);}

   return ___(3)___;

}

(1)                        (2)                       (3)      

3.类A的定义

class A {

           char *a;

         public:

           A() {a=NULL;}        

           A(char *aa) {

               a=___(1)____ char[strlen(aa)+1];

               strcpy(a,aa);    

        }

           ___(2)______     //定义析构函数,删除a所指向的动态存储空间

       };

(1)                   (2)    

4. 已知一个类的定义如下:

#include<iostream.h>

class AA {

int a[10];

int n;

public:

void SetA(int aa[], int nn); //用数组aa初始化数据成员a,

                            //用nn初始化数据成员n

int MaxA();  //从数组a中前n个元素中查找最大值

void SortA();  //采用选择排序的方法对数组a中前n个元素

              //进行从小到大排序

   void InsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序

void PrintA();  //依次输出数组a中的前n个元素

};

   该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。

int ____(1)_____

{

int x=a[0];

for(int i=1; i<n; i++)

if(a[i]>x) ___(2)___;

___(3)___;

}

(1)                   (2)                   (3)

四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。

1. #include<iostream.h>

       void main()

       {

       int i,s=0;

       for(i=2;i<=30;i+=2) s+=i*i;

       cout<<"s="<<s<<endl;

       }

  函数功能:

2. #include<iostream.h>

      double f1(int n) {

      double sign=1,s=1;

      for(int i=2;i<=n; i++) {

      s+=sign/(i*i);

      sign*=-1;

      }

      return s;

      }

      void main()

      {

          int a;

      cin>>a;

      cout<<f1(a)<<endl;

      }

函数功能:

3.#include<iostream.h>

      class A {

          int a,b;

        public:

          A() {a=b=0;}

          A(int aa, int bb) {a=aa; b=bb;}

          int Sum() {return a+b;}

          int* Mult() {

              int *p=new int(a*b);

              return p;

          }

      };

   void main() {

          A x(4,5), *p;

          p=new A(2,3);

          cout<<x.Sum()<<’ ’<<*(x.Mult())<<endl;

          cout<<p->Sum()<<’ ’<<*(p->Mult())<<endl;

      }

运行结果:

4. #include<iostream.h>

       void main() {

       int a[10]={76,83,54,62,40,75,90,92,77,84};

       int b[4]={60,70,90,101};

       int c[4]={0};

       for(int i=0;i<10;i++) {

       int j=0;

       while(a[i]>=b[j]) j++;

       c[j]++;

       }

       for(i=0;i<4;i++) cout<<c[i]<<’ ’;

       cout<<endl;

       }

运行结果:

五、编程题  

根据下面类中拷贝构造函数的原型写出它的类外定义。

  class Array {

    int *a;               //指向动态分配的整型数组空间

    int n;                //记录数组长度

    public:

     Array(int aa[], int nn);  //构造函数,利用aa数组长度nn初始化n,                               //利用aa数组初始化a所指向的数组空间

     Array(Array& aa);         //拷贝构造函数

};


参考答案

一、单选题

1. A    2. C   3. B   4. C    5. D    6. D   7. A   8. D    9. C    10. B   11. A    12. A   13. D   14. A   15. B   16. B   17. B  18. B   19. A    20. D

二、填空题

1. 4   11   2. ‘a’   3. double *pv=&v;  4. 类名  5. 1     6. ~AB() {}   7.10  19     8.  类型    9. 4      10. int**         11. 12    

12. 42      13. 第一个、  修改    14. 个数(或数目)  类型   15. char *   16. *p  17. int(*)[6]  18. x    19. ’a’     20. delete p

三、程序填充题,根据题意在横线上填写合适的内容。

   1. (1) i<=temp    (2) break       2. (1) int& ARRAY::   (2) n>=s          (3) v[n] (或*(v+n))

3. (1)new      (2)~A() {delete []a;}     4. (1) AA::MaxA()     (2) x=a[i]       (3) return x

四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。

1. 计算并输出22+42+62++302的值。

2.  计算并输出1+ 的值,其中a的值由键盘输入。

3. 9  20   5  6                  

4. 2 1 5 2

五、编程题

  1、  Array::Array(Array& aa) {

          n=aa.n;                                

          a=new int[n];                          

          for(int i=0; i<n; i++) a[i]=aa.a[i];    

      }

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

相关文章:

2022年初中物理牛顿是基本单位吗04-27

2022年中考物理光的折射考点:透镜04-27

2022年初中物理重力加速度在赤道大还是在两极大04-27

2022年中考物理光的折射考点:凸透镜成像的规律04-27

2022年初中物理知识点:光的折射定律04-27

2022中考物理光的折射同步检测题04-27

2022年初中物理知识点:光的折射现象和应用04-27

2022年初中物理知识点:实像与虚像的区别04-27

2022年初中物理折射率公式三个公式04-27

2022年初中物理—光的折射知识总结04-27

热搜文章
最新文章