1、面向对象程序设计形成性考核册作业三一、填空题: 1. 关于面向对象系统分析,下列说法中不对的是( B )。 A. 术语“面向对象分析”可以用缩写OOA表达 B. 面向对象分析阶段对问题域描述比实现阶段更详细 C. 面向对象分析涉及问题域分析和应用分析两个环节 D. 面向对象分析需要辨认对象内部和外部特性 2. 在核心字public背面定义成员为类( B )成员。 A. 私有 B. 公用 C. 保护 D. 任何3. 假定AA为一种类,a()为该类公有函数成员,x为该类一种对象,则访问x对象中函数成员a()格式为( B )。 A. x.a B. x.a() C. x-a D. x-a() 4. 假
2、定AA为一种类,int a()为该类一种成员函数,若该成员函数在类定义体外定义,则函数头为( A )。 A. int AA:a() B. int AA:a() C. AA:a() D. AA:int a() 5. 在多文献构造程序中,普通把类定义单独存储于( D )中。 A. 主文献 B. 实现文献 C. 库文献 D. 头文献 6. 一种C+程序文献扩展名为( C )。 A. .h B. .c C. .cpp D. .cp 7. 假定AA是一种类,abc是该类一种成员函数,则参数表中隐含第一种参数类型为( D )。 A. int B. char C. AA D. AA* 8. 假定AA是一种类
3、,“AA* abc()const;”是该类中一种成员函数原型,若该函数返回this值,当用x.abc()调用该成员函数后,x值( C )。 A. 已经被变化 B. 也许被变化 C. 不变 D. 受到函数调用影响 9. 当类中一种字符指针成员指向具备n个字节存储空间时,它所能存储字符串最大长度为( C )。 A. n B. n+1 C. n-1 D. n-2 10. 在一种用数组实现队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾后一种位置为( D )。 A. length+1 B. first+length C. (first+length-1)%MS D
4、. (first+length)%MS 11. 在一种用链表实现队列类中,假定每个结点包括值域用elem表达,包括指针域用next表达,链队队首指针用elemHead表达,队尾指针用elemTail表达,若链队非空,则进行插入时必要把新结点地址赋给( C )。 A. elemHead B. elemTail C. elemHead和elemTail D. elemHead或elemTail 12. 对于一种类构造函数,其函数名与类名( A )。 A. 完全相似 B. 基本相似 C. 不相似 D. 无关系 13. 类析构函数是一种对象被( B )时自动调用。 A. 建立 B. 撤除 C. 赋值
5、D. 引用 14. 假定AB为一种类,则执行 “AB x;”语句时将自动调用该类( B )。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 15. 假定AB为一种类,则执行 “AB r1=r2;”语句时将自动调用该类( D )。 A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数 16. 假定一种类构造函数为 “A(int aa,int bb) a=aa;b=aa*bb;”,则执行 “A x(4,5);”语句后,x.a和x.b值分别为( C )。 A. 4和5 B. 5和4 C. 4和20 D. 20和5 17. 假定一种类构造函数
6、为 “B(int ax,int bx):a(ax),b(bx) ”,执行 “B x(1,2),y(3,4);x=y;”语句序列后x.a值为( C )。 A. 1 B. 2 C. 3 D. 4 18. 对于任一种类,顾客所能定义构造函数个数至多为( D )。 A. 0 B. 1 C. 2 D. 任意个二、填空题1. 若p指向x,则_*p_与x表达是等价。 2. 假定p为指向二维数组int d46指针,则p类型为_ int(*)6_。 3. 若y是x引用,则对y操作就是对_x_操作。 4. 执行char *p=new char(a)操作后,p所指向数据对象值为_a_。 5. 执行_ delete
7、p _操作将释放由p所指向动态分派数组空间。 6. 已知语句“couts;”输出是“apple”,则执行语句“coutname等价表达式是_(*p).name _。 8. 已知有定义“int x,a=5,7,9,*pa=a;”,在执行“x=+*pa;”语句后,x值是_6_。 9. 以面向对象办法构造系统,其基本单位是_对象_。 10. 复杂对象可以由简朴对象构成,这种现象称为_聚合_。 11. 如果一种派生类基类不止一种,则这种继承称为_多继承(或多重继承)_。 12. 面向对象软件开发生命周期分为三个阶段,即分析、_设计_和_实现_。 13. 类中数据成员访问属性普通被指明为_ privat
8、e(私有)_。 14. 为了使类中成员不能被类外函数通过成员操作符访问,则应把该成员访问权限定义为_ private _。 15. 若在类定义体中只给出了一种成员函数原型,则在类外给出完整定义时,其函数名前必要加上类名和两个_冒号(:)_分隔符。 16. 成员函数参数表在类作用域中,成员函数返回值类型_不在_类作用域中。 17. 若采用x.abc(y)表达式调用一种成员函数,在成员函数中使用_*this _就代表了类外x对象。 18在一种用数组实现队列类中,包具有两个数据成员,一种指明队首元素位置,另一种指明_队列长度_。19. 在一种用数组实现队列类中,假定数组长度为MS,队首元素位置为fi
9、rst,队列长度为length,则删除一种元素后队首位置为_(first+1)%MS _。三、程序填空:1. 已知一维数组类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(n0 | _(2)_) cerr=s (3) v
10、n 或*(v+n) 2. 已知一种类定义如下:#includeclass AA int a10;int n;public:void SetA(int aa,int nn);/用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选取排序办法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序办法对数组a中前n个元素进行从小到大排序void PrintA(); /依次输出数组a中前n个元素; /该类中MaxA()函数实现如下,请在标号位置补充恰当内容。int _(1)_
11、int x=a0;for(int i=1;ix) _(2)_;_(3)_;(1) AA:MaxA() (2) x=ai (3) return x 3. 已知一种类定义如下:#includeclass AA int a10;int n;public:void SetA(int aa,int nn);/用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选取排序办法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序办法对数组a中前n个元素进行从小到大排序void Pri
12、ntA(); /依次输出数组a中前n个元素 /最后输出一种换行; /使用该类主函数如下:void main()int a10=23,78,46,55,62,76,90,25,38,42;AA x; _(1)_;int m=_(2)_;_(3)_;coutmendl; 该程序运营成果为:23 78 46 55 62 7678(1) x.SetA(a,6) (2) x.MaxA() (3) x.PrintA()四、写出程序运营成果 1. #include void main() int a10=76,83,54,62,40,75,90,92,77,84; int b4=60,70,90,101;
13、int c4=0; for(int i=0;i=bj) j+; cj+; for(i=0;i4;i+) coutci ; coutendl; 程序运营成果为:2 1 5 2Press any key to continue 2. #include void main() char s35=1234,abcd,+-*/; char *p3; for(int I=0;I=0;I-) coutpI ; coutendl; 程序运营成果为:+-*/ abcd 1234Press any key to continue 3. #include class CE private: int a,b; int
14、 getmax() return (ab?a:b); public: int c; void SetValue(int x1,int x2,int x3) a=x1;b=x2;c=x3; int GetMax(); ;int CE:GetMax() int d=getmax();return (dc?d:c);void main()int x=5,y=12,z=8;CE ex,*ep=&ex;ex.SetValue(x,y,z);coutex.GetMax()SetValue(x+y,y-z,20);coutGetMax()endl;程序运营成果为:1220Press any key to c
15、ontinue五、指出程序或函数功能 1. void f4(char aMN) int c1,c2,c3; c1=c2=c3=0; for(int i=0;iM;i+) if(strlen(ai)=5 & strlen(ai)15) c2+; else c3+; coutc1 c2 c3ms) coutError!endl;exit(1);MS=ms;n=nn;a=new intMS;for(int i=0;ib.n) k=b.n;else k=n;for(int i=0;ib.ai) return 1;else if(aib.ai) return -1; if(k=n & k=b.n) re
16、turn 0;else if(kn) return 1;else return -1; 2. 依照下面类中构造函数原型和注释写出它类外定义。class Array int *a; /指向动态分派整型数组空间int n; /记录数组长度public:Array(int aa,int nn); /构造函数,运用aa数组长度nn初始化n, /运用aa数组初始化a所指向数组空间Array(Array& aa); /拷贝构造函数Array& Give(Array& aa); /实现aa赋值给*this功能并返回*this Array Uion(Array& aa); /实现*this和aa中数组合并 /
17、功能,把合并成果存入暂时对象并返回int Lenth() return n; /返回数组长度void Print() /输出数组for(int i=0;in;i+)coutai ; coutendl;/Array(int aa,int nn)类外定义如下:Array:Array(int aa,int nn) n=nn;a=new intn;for(int i=0;in;i+) ai=aai;3.依照下面类中Give函数原型和注释写出它类外定义。(此题作业本上缺漏)#includeclass Arrayint *a;/指向动态分派整型数组空间int n;/记录数组长度public:Array(i
18、nt aa,int nn);/构造函数,运用aa数组长度nn初始化n, /运用aa数组初始化a所指向数组空间Array(Array& aa); /拷贝构造函数Array& Give(Array& aa);/实现aa赋值给*this功能并返回*thisArray Uion(Array& aa);/*this和aa中数组合并 /功能,把合并成果存入暂时对象并返回int Lenth()return n; /返回数组长度void Print() /输出数组for (int i=0;in;i+)coutai ;coutendl;Give函数类外定义为:Array& Array:Give(Array& aa) delete a;n=aa.n;a=new intn;for(int i=0;in;i+) ai=aa.ai;return *this;