面向对象程序设计期末综合练习六(程序设计)---习题
Visual_C++面向对象与可视化程序设计期末复习题
《VC程序设计》习题一、单项选择题1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为( B )A、2B、3C、4D、52、对于结构中定义的成员,其隐含访问权限为(C )A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的( B )A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A )A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为( D )#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类CNum的缺省构造函数和析构函数是( A )A、CNum ( )和~CNum ( )B、CNum (int)和~CNum( )C、CNum ( )和~CNum (delete )D、CNum ( )和int~CNum ( )7、在C++中,若对函数未加说明,则函数的隐含类型是(A )A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则(D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是( D )A、在Windows中只有一个消息系统,即系统消息队列。
面向对象程序设计样卷
面向对象程序设计样卷一、选择题( 本大题共10小题, 每题2分, 共20分)4.在下列定义的引用中, ( B )是错误的。
A. int i;B. int i;int &j = i; float &j=i;C. float i;D. char d;float &j = i; char &e = d;5. 假定BB为一个类,则执行BB y;语句时将自动调用该类的( B )A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数7.下列对派生类的描述中, ( C )是错误的。
A. 一个派生类能够作为另一个派生类的基类B.派生类至少应有一个基类C. 基类中成员访问权限继承到派生类中都保持不变D.派生类成员除了自己定义的成员外, 还包含了它的基类成员10.控制输出格式的控制符中, ( D )是设置输出宽度的。
A.wsB.endsC. setfill()D.setw()二、填空题( 本大题共10小题, 每题2分, 共20分)1.以/*开始, 以*/结束, 在/*和*/之间的部分即为注释。
2.重载函数在参数类型或参数个数上不同, 但函数名和类名_相同。
3. 假如一个类的名称为MyClass, 使用这个类的一个对象初始化该类的另一个对象时, 能够调用__拷贝______构造函数来完成此功能。
4.当删除对象时, 程序自动调用析构函数。
5. 对于每一个类的非静态成员函数, 都有一个隐含的_this_______指针。
8. 抽象类是指类里有一个函数, 是纯嘘函数。
三、改错题( 下面程序或程序段中有一处错误, 请用注释标明错误所在行的出错原因。
本大题共5小题, 每题2分, 共10分) 1. #include<iostream>using namespace std;int main(){ cout<<"This is a program."<<endl;return 0;}2. #include<iostream>using namespace std;int main(){x=3;int y=x*x;cout<<"y="<<y<<"\n";return 0;}3. #include<iostream>using namespace std;class Aa{public:Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; } ~Aa(){ cout<<"Destructor "<<a<<endl; }void print( ){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}4.class A{int a,b;public:A(int aa,int bb=78){a=aa;b=bb;} };int main(){A x(2), y(4,9);return 0;}5. #include<iostream>using namespace std;class Test{public:static int x;};int Test :: x=20;int main(){cout<<Test::x;return 0;}四、程序分析题( 分析程序, 写出运行结果。
《面向对象程序设计》期末考核试题样例及解答
《面向对象程序设计》期末考核试题样例及解答一、单项选择(每小题1分,12小题,共12分)1. 源程序文件的缺省扩展名为( )。
A. B. C. D.2. x>0 5的相反表达式为()。
A. x<=0 5B. x<=0 5C. x>0 5D. x>0 53. 在下面的字符数组定义中,有语法错误的是( )。
A. a[20]=“”;B. a[]=“55.”;C. a[15];D. a[10]=’5’;4. 以下正确的函数原型语句是( )。
A. ( y)B. ( y)C. ();D. ( );5. 在下面存储类中,()的对象不是局部变量。
A. 外部静态类B. 自动类C. 函数形参D. 寄存器类6. 假定有“ { [40]; ;}; * ;”,则正确的语句是()。
A. (>,””);B. (,””);C. (*,””);D. ((*)->,””);7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。
A. 可维护性B. 可复用性C. 兼容性D. 正确性8. 在多文件结构的程序中,通常把含有()函数的文件称为()。
A. 主文件B. 实现文件C. 程序文件D. 头文件9. 在一个用链表实现的队列类中,假定每个结点包含的值域用表示,包含的指针域用表示,链队的队首指针用表示,队尾指针用表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。
A. B.C. 和D. 或10. 假定为一个类,则执行“ a, b(2), c[3], *;”语句时共调用该类无参构造函数的次数为( )。
A. 5B. 6C. 3D. 411. 引入友元的主要目的是为了()。
A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性12. 如果是类B在类A的基础上构造,那么,就称()。
A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类二、填空(每空1分,15小题,共18分)1. 语言是在语言的基础上发展起来的。
面向对象程序设计习题及答案
面向对象程序设计一、选择填空1.对于 C++与 C 语言的关系描绘中,( D)是错误的。
(A) C 语言是 C++的一个子集(B)C语言与C++是兼容的(C) C++对 C 语言进行了一些改良(D)C++和C语言都是面向对象的2.下边对于对象观点的描绘中,(B)是错误的。
(A)对象就是 C 语言的结构变量(B)对象代表着正在创立的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传达是经过信息进行的3.下边对于类观点的描绘中,(D)是错误的。
(A)类是抽象数据种类的实现(B)类是拥有共同行为的若干对象的一致描绘体(C)类是创立对象的样板(D)类就是C语言的结构种类4.依照表记符的要求,( A)符号不可以构成表记符。
(A)连结符(B)下划线(C)大小写字母(D)数字字符5.以下符号中,( C)不行作为分开符。
(A),(B):(C)(D);6.在 16 位机中, int型字宽为(A)字节。
(A)2(B)4(C)6(D)87.种类修饰符unsigned 修饰( D)种类是错误的。
(A) char(B)int(C)long int(D)float8.对于 int *pa[5];的描绘,(D)是正确的。
(A) pa 是一个指向数组的指针,所指向的数组是 5 个 int型元素(B) pa 是一个指向某数组中第 5 个元素的指针,该元素是int变量(C) pa[5] 表示某个数组的第 5 个元素(D) pa 是一个拥有 5 个元素的指针数组,每个元素是一个int型指针。
9.以下对于指针的运算中,(D)是非法的。
(A)两个指针在必定条件下,能够进行相等或不等的运算。
(B)能够有一个空指针赋值给某个指针。
(C)一个指针能够加上一个整数。
(D)两个指针在必定条件下,能够相加。
10.指针能够用来表示数组元素,以下表示中(A)是错误的。
已知:int a[3][7];( A) *(a+1)[5](B)*(*a+3)(C)*(*(a+1))(D)*(&a[0][0]+2) 11.以下表示引用的方法中,(A)是正确的。
面向对象期末考试题及答案
面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。
答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。
面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。
通过对象之间的交互来实现程序的功能。
2. 解释什么是多态性,并给出一个简单的例子。
答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
例如,在Java中,可以通过重载和重写来实现多态。
假设有一个动物类Animal,它有一个方法makeSound()。
然后有一个子类Dog,它重写了makeSound()方法。
当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。
3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。
三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案3.doc
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案2一、单选择题(每小题2分,共10分)1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B )。
A. .javaB. .classC. .htmlD. .exe2、设x = 1 ,y = 2,z = 3,则表达式y + =z--/++ x 的值是(A )。
A. 3B. 3. 5C. 4D. 53、在Java Applet程序用户口定义的Applet子类中,一般需要重载父类的(D )方法來完成一些画图操作。
A. start()B. stop()C. init()D. paint()4、不允许作为类及类成员的访问控制符的是(C )。
A. publicB. privateC. staticD. protected5、为AB类的一个无形式参数无返回值的方法melhod书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。
A. static void method()B. public void method()C. final void method()D. abstract void method()二、填空题(每空格1分,共20分)1、开发与运行Java程序需要经过的三个主耍步骤为编辑源程序、编译生成字节码、和解释运行字节码。
2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为My Applet,则类MyApplet必须是Applet. 类的子类并且存储该源程序文件的文件名为MyApplet 。
3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器javac.exe 编译该源程序文件将产生 3 个文件名与类名相同而扩展名为.class 的字节码文件。
4、在Java的基木数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。
java面向对象程序设计期末考试题及答案
java面向对象程序设计期末考试题及答案一、单项选择题(每题2分,共20分)1. 在Java中,哪个关键字用于声明一个类?A. classB. structC. interfaceD. enum答案:A2. 下列哪个是Java中的访问修饰符?A. publicB. privateC. protectedD. All of the above答案:D3. 在Java中,哪个关键字用于创建对象?A. newB. createC. makeD. instantiate答案:A4. Java中的继承是通过哪个关键字实现的?A. extendsB. inheritC. deriveD. superclass答案:A5. 在Java中,哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. abstract答案:A6. 下列哪个不是Java中的方法重载的条件?A. 方法名相同B. 参数列表不同C. 返回值类型不同D. 访问修饰符不同答案:C7. 在Java中,哪个关键字用于声明一个抽象方法?A. abstractB. virtualC. overrideD. final答案:A8. Java中的多态性可以通过哪种方式实现?A. 方法重载B. 方法覆盖C. 接口实现D. 继承答案:B9. 在Java中,哪个关键字用于声明一个内部类?A. innerB. nestedC. staticD. inner class答案:B10. Java中的垃圾回收机制是自动的吗?A. YesB. NoC. SometimesD. Depends on the JVM答案:A二、填空题(每题2分,共20分)1. Java中,一个类可以继承另一个类的______方法和属性。
答案:非私有2. Java中的______关键字用于声明一个类是不可被继承的。
答案:final3. 在Java中,______关键字用于声明一个类是抽象的。
《面向对象系统分析与设计》期末综合练习题(答案版)
面向对象系统分析与设计期末综合练习题一、选择题1.Heave学院请Decoder软件公司开发一个新的OO课程系统,院长Tom宣布该系统一定要成为学院的great software,下面对于great software的说法正确的是?()(A)Decoder公司程序员满意软件。
(B)Heave学院师生满意的软件。
(C)价格最贵的软件。
(D)Decoder公司程序员和Heave学院师生都满意的软件。
2.Heave学院准备开发一个新的Java版的OO课程注册系统,该系统可以供学生查询期末成绩、教师统计班级成绩正态分布、教务统计GUITARIO各项能力在各门课程中的落实情况,而且随着历史数据的积累,今后还可能引入数据挖掘技术,为院长提供各届学生的整体进步情况,请问Decoder公司的系统架构师应该采用哪种设计模式来设计成绩统计模块()(A)状态模式(B)观察者模式(C)工厂模式(D)装饰者模式3.Heave学院原有的课程目录系统是用SmallTalk语言开发的,并向外部发不了一套访问接口。
学院为了节约成本,不准备重新开发该目录系统,为此Decoder需要设计一套与之兼容的Java接口对其进行封装。
这样可以更方便地将旧课程目录系统集成到新的系统中,同时为将来的升级留有余地。
请问系统设计师在设计时应该采用哪个设计模式?()(A)模版方法模式(B)适配器模式(C)观察者模式(D)外观模式4.Heave学院新的OO课程注册系统,可以与签约银行联网直接代收学费,但银行的业务逻辑错综复杂,为此Heave学院希望银行能够提供一套新的接口以屏蔽并简化原有业务操作的复杂性。
这套新接口设计上体现了哪个设计模式的思想()(A)适配器模式(B)观察者模式(C)装饰者模式(D)外观模式5.Heave学院的期末成绩统计可以饼状图、柱状图、曲线、表格等多种形式进行显示。
但不论何种形式显示,其统计算法census()需要通过prepareData()、generateChart()、saveChart()、showData()四个步骤,其中第1步与第2步对于不同的显示方式是不同的,那么系统设计师在设计该系统时,会使用哪个设计模式()(A)模版方法模式(B)观察者模式(C)适配器模式(D)外观模式6.Heave学院的历史数据挖掘器的设计很有挑战性,其难点在于院方要求各种形式的挖掘组件可以任意组合,任意拼装,每个挖掘组件完成独立的挖掘任务,互不干扰,组装后的挖掘器套件运行后,会形成一份报表,用以呈现挖掘结果。
面向对象程序设计期末复习题及答案
C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15题,每小题2分,共30分) [主要从作业题目中抽出来]2. 填空题。
(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。
【也称计算题】(3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。
(第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打▲号是编程题出题范围* 基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲C++类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数* 基类与派生类的定义。
* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
*▲函数模板。
*▲使用类来定义对象并在程序中的应用题型样题填空题 1. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为_________。
答案:102.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。
答案:公有继承的公有成员3.能作为重载函数的调用的依据是_________。
答案:参数个数、参数类型4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是_________答案:eof5.函数重载是指_________。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同6.在派生类中重新定义虚函数时必须在_________ 方面与基类保持一致。
答案:参数个数阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}void disp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的执行结果#include<iostream.h>int add(int x,int y){return x+y;}int add(int x,int y,int z){return x+y+z;}void main(){int a=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl; }解:10,20 3.分析以下程序执行结果#include<iostream.h>int add(int x,int y){return x+y;}double add(double x,double y){return x+y;}void main(){int a=4,b=6;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }解:10,104.分析以下程序执行的结果#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(1,2),s3(10,20);Sample *pa[3]={&s1,&s2,&s3};for(int i=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=20 5. 分析以下程序的执行结果:#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl; n=a;cout << "n= "<< n << endl;}~base() { cout << "destructing base class" << endl; }};class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class "<< endl; m=b;cout << "m= "<< m << endl;}~subs() { cout << "destructing sub class "<< endl; }};void main (){subs s(1,2);}解:constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class6.分析以下程序的执行结果:#include <iostream.h>class Sample{protected:int x;public:Sample() { x=0; }Sample(int val) { x=val; }void operator++() { x++; }};class Derived:public Sample{int y;public:Derived():Sample(){ y=0; }Derived(int val1,int val2):Sample(val1){ y=val2; }void operator--(){ x--;y--;}void disp(){cout<<"x="<< x << ",y=" << y << endl; }};void main (){Derived d(3,5);d.disp();d++;d.disp ();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37 分析以下程序执行结果:#include <iostream.h>class A{public:A(char *s) { cout << s << endl; }~A() {}};class B:public A {public:B(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class C:public A{public:C(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class D:public B,public C{public:D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3){cout << s4 << endl;}};void main (){D d("class A","class B","class C","class D");}解:class Aclass Bclass Aclass Cclass D 补充例题1.分析以下程序的执行结果#include<iostream.h>template <class T>T max(T x,T y){ return (x>y?x:y); }void main(){ cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; }解答:5,3.5 2.分析以下程序的执行结果#include<iostream.h>void main(){int a[]={10,20,30,40},*pa=a;int *&pb=pa;pb++;cout<<*pa<<endl;}解答:输出为:20 3.分析以下程序的执行结果#include<iostream.h>template <class T>T abs(T x){ return (x>0?x:-x); }void main(){ cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; }解答:输出为:3,2.64.分析以下程序的执行结果#include<iostream.h>class Sample{char c1,c2;public:Sample(char a){c2=(c1=a)-32;}void disp(){ cout<<c1<<“转换为”<<c2<<endl; } };void main(){Sample a('a'),b('b');a.disp();b.disp();}解答:a转换为Ab转换为B 5.分析以下程序的执行结果#include<iostream.h>void main(){int a;int &b=a; // 变量引用b=10;cout<<“a=”<<a<<endl;} 解答:输出为:a=10 6.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10;}void disp(){cout<<“x=”<<x<<endl; }};void main(){ Sample s1(2),s2(s1);s1.disp();s2.disp();}解答:x=3 // ++运算的结果x=12 // 2+107.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x+1;}void disp(){cout<<“x=”<<x<<endl; } };void main(){ Sample s1(2),s2(s1);s2.disp();}解答:输出为:x=3。
面向对象程序设计综合练习题
面向对象程序设计综合练习题一、单项选择题1-1.C++语言是从早期的C语言逐步发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是( B )。
A.面向过程 B.面向对象 C.安全性 D.复用性 1-2. C++源程序文件的缺省扩展名为( A )。
A. cppB. exeC. objD. lik1-3.由C++源程序文件编译而成的目标文件的缺省扩展名为( C )。
A. cpp B. exe C. obj D. lik1-4.由C++目标文件连接而成的可执行文件的缺省扩展名为( B )。
A. cpp B. exe C. obj D. lik1-5.编写C++程序一般需经过的几个步骤依次是( B )。
A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接1-6.用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。
A.空格或逗号 B.逗号或回车 C.逗号或分号 D.空格或回车1-7.C++中声明常量的关键字是( A )。
A.const B.extern C.public D.enum 1-8.以下叙述中正确的是( B )A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值B. 使用const定义的常量名有类型之分,其值在程序运行时是不可改变的C.在程序中使用内置函数使程序的可读性变差D. 在定义函数时可以在形参表的任何位置给出缺省形参值1-9.下列的符号常变量定义中,错误的定义是( C )。
A.const M=10; B.const int M=20;C.const char ch; D.const bool mark=true; 1-10.函数原型语句正确的是( B )。
A.int Function(void a) B.void Function (int); C.intFunction(a); D.void int(double a); 1-11.以下正确的函数原型语句是( C )。
《面向对象程序设计(C++)》期末考试试题
《面向对象程序设计(C++)》期末考试试题一、简答题(10分)1.(3分)什么是引用?它与指针有什么区别?2.(3分)运算符重载有哪两种形式?这两种形式有何区别?3.(4分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?二.填空题(20分,每空2分)1. C++程序中的数据可以分为两大类,其中是指在程序执行过程中值不改变的数据;是程序中用于存储信息的单元,并对应于某个内存空间。
2. 表示逻辑关系“a大于等于8或者a小于等于5”的C++表达式是。
3. C++语言的流程控制语句的基本控制结构有三种,分别是、和。
8. 假设x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为,执行表达式后y 的值为。
10. 若要把类bClass定义为类aClass的友元类,则应在类的定义中加入语句。
三、选择题(20分,每题2分)1. 在下列选项中,合法的C++变量名是。
A. longB. _2TestC. 3DmaxD. A.dat2. 下列语句中,错误的是。
A. int i, *ptr = &i;B. int i; int *ptr; i = *ptr;C. int *ptr; ptr = 0;D. int i = 5; int *ptr; *ptr = &i;3. 已知枚举类型enum Day {Monday, Tuesday, Wednesday, Friday = 2};下列语句中,是合法的。
A. Wednesday == Friday ? 1 : 0B. Day day; day = 3;C. Day day; day = Monday + 3;D. Tuesday = 4;4. 在“int a = 10, *p = &a;”语句中,p的值是。
A. 10B. 变量p的地址C. 变量a的地址D. 随机数5. 下列有关设置函数参数默认值的描述中,是正确的。
JAVA面向对象程序设计(期末考试试题及答案)
程序设计(期末考试试题及答案)JAVA面向对象面向对象程序设计一、单选择题1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。
A.javaB..classC.htmlD..exe2、不允许作为类及类成员的访问控制符的是(C)。
A.publicB.privateC.staticD.Protected3、设x=1,y=2,z=3,则表达式y+=z--/++x的值是(A)。
A.3B.3.5C.4D.54、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。
A.static void method()B.public void method()C.final void method()D.abstract void method()5、下列属于容器的组件有:(B)A.JButton B.JPaneC.Canvas D.JTextArea6、v oid的含义:(C)A.方法体为空B.定义的方法没有形参C.定义的方法没有返回值 D.方法的返回值不能参加算术运算7、关于Java中异常的叙述正确的是:(D)A.异常是程序编写过程中代码的语法错误B.异常是程序编写过程中代码的逻辑错误C.异常出现后程序的运行马上中止D.异常是可以捕获和处理的8、下面哪个不是java语言中的关键字?(B)A.longB.sizeofC.instanceofD.Const9、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(D)A.ActionListenerB.MouseListenerC.MouseMotionListernD.ItemListener10、以下有关类的继承的叙述中,正确的是:(D)A子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性B.子类只能继承父类的方法,不能继承父类的属性C.子类只能继承父类的非私有属性,不能继承父类的方法D.子类不能继承父类的私有属性二、填空题1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。
《面向对象程序设计C--》期末试卷及答案
一、选择填空题(共20小题,每小题2分,共40分)。
1. 关于C++与C语言关系的描述中,(d)是错误的。
a.C语言是C++语言的一个子集b.C语言与C++语言是兼容的c.C++语言对C语言进行了一些改进d.C++语言和C语言都是面向对象的2.按照标识符的要求,(a )符号不能组成标识符。
a.连接符b.下划线c.大小写字母d.数字字符3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与(c)组成配对关系。
a.缩排位置相同的ifb.在其之前未配对的ifc.在其之前未配对的最近的ifd.同一行上的if4. 在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(c)。
a.1b.0c.6d.25. 设"char **s;",以下正确的表达式是(b)。
a.s="computer";b.*s="computer";c.**s="computer";d.*s='c';6. 对于"int *pa[5];"的描述中,(d )是正确的。
a.pa是一个指向数组的指针,所指向的数组是5个int型元素b.pa是一个指向某数组中第5个元素的指针,该元素是int型变量c.pa [5]表示某个元素的第5个元素的值d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针7. 在下列表示引用的方法中,(a )是正确的。
已知:int m=10;a.int &x=m;b.int &y=10;c.int &z;d.float &t=&m;8. 下列for循环的次数为(b)。
for(i=0, x=0; !x&&i<=5; i++)a.5b.6c.1d.无限9. 对于C/C++语言的函数,下列叙述中正确的是(a)。
面向对象的程序设计技术期末试题资料
面向对象的程序设计技术期末试题一、单选题(25分)1 面向对象的程序设计技术中对象有三个最基本的性质,他们分别是:A 封装、继承和多态B 封装、继承和接口C 封装、异常和继承D 抽象、自治和可视化2 关于封装,比较准确的说法是:A 程序不能修改B 程序不能被其它程序调用C 程序语句和变量仅在对象内部生效D 对象之间不能相互通信3 关于对象的最准确的描述是:A 对象是能够显示在屏幕上的有形界面B 对象是程序,数据或者两者的组合C 对象就是一个类D 对象是整数和字符串总称4 对于类最准确的描述是:A 类一般是由一些数据和管理这些数据的一些程序组成的B 类是一组数据C 类是一组对象D 类必须实例化才有效5 下面说法不准确的描述是:A IOException是数据输入输出异常B ArrayIndexOutBoundException是下标出界异常C NumberFormatException是数值格式转换异常D ArithmeticException是中断异常6 关于继承的最准确的描述是:A 继承是相对于父类和子类而言的,对于继承来的子类方法不能改变B 父类可以继承子类的方法C 子类可以继承父类的方法,也可以继承父类的成员变量D子类可以继承父类的方法,但不可以继承父类的成员变量7关于多态的最准确的描述是:A一个类有多个成员变量B一个类有多个方法C一个类中有多个同名的方法D 一个类中有多个引用相同成员变量的方法8关于接口的最准确的描述是:A 接口都是系统提供的B 接口包括特定名称的方法,但这些方法没有具体功能C 接口必须和一个类绑定后才能生效D 接口中的方法必须在绑定到一个类时实现具体功能9关于包的最不准确的描述是:A 包用于划分一些工具组件所在的位置B 包都是由语言系统提供的C 一个包中只能有一个工具组件D 一般在引用一个工具组件是都需要是用import语句指明工具组件所在的包9在面向对象的程序设计技术中,关于方法不准确的说法是:A 方法在一个类的内部函数B 在一个类中最多只能由一个方法C 任何一条语句都必须出现在一个方法中D 类不能没有方法10 一个类一般是由和构成的A 方法和成员变量(域变量)B 接口和菜单C 对象和事件D 包和异常11 在String 类中,用于判定是否等同于另一个字符串的方法是A equalsB substringC charAtD toLowerCase12 在String 类中,用于去除两端空格的方法是:A trimB toUperCaseC valueOfD toString13 在String 类中,用于确定一个特定位置时什么字符的方法是:A charAtB lengthC compareToD indexOf14 在Integer 类中,用于将一个字符串转换成位整数的方法是:A parseIntB parseFloatC toStringD equals15 关于构造方法,不准确的说法是:A 构造方法和类同名B 一个类可以有一个或者多个构造方法C 构造方法是在生成这个类的实例时执行的初始化函数D 构造方法不能继承16 定义一个抽象类的正确语句是:A final class abc{ }B abstract class abc { }C public class abc { }D class abc extends abstract { }17 下面的哪一个不是JA V A语言中有效的类修饰符:A publicB staticC voidD final18静态方法中的修饰符static 嘴准确的说法是:A 该方法不可继承B 该方法不可以重载,即在子类中不能重新改写来自父类的同名方法C 该方法属于类,不属于实例,因此可以不经过实例化就直接引用D 静态变量可以调用类的非静态方法19 在语句public static void main(String aa[]) 中,public表示:A 该方法可以被其他类直接调用B 该方法可以被同类内部的其他方法调用,但不能被其他类的任何方法调用C 该方法不能继承D 该方法不能被重写。
《面向对象程序设计》期末考试试卷参考
《面向对象程序设计C++》期末考试试卷一、选择题(每小题3分,共48分。
)01、下列关于C++函数的叙述中,正确的是( C )。
A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值C)函数在被调用之前必须先声明 D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( A )。
A)一个类只能有一个对象 B)对象是类的具体实例C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( D )。
A)内联函数 B)重载函数 C)模板函数 D)虚函数!04、下列关于运算符重载的叙述中,正确的是( B )。
A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句 cout<<x<<endl;错误的是描述是( D )。
A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“<<”称作提取运算符(插入运算符)06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是( 保护数据成员个数1,保护陈谷原函个数2 )。
( B )class MyBASE{ private: int k;public: void set(int n){ k=n;}int get( )const{ return k;} };class MyDERIVED: protected MyBASE{ protected: int j;public: void set(int m, int n){ MyBASE::set(m); j=n;}int get( ) const { return MyBASE::get( )+j; } };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( B )。
面向对象程序设计》期末试卷及标准答案
⾯向对象程序设计》期末试卷及标准答案《⾯向对象程序设计C++》期末考试试卷(A)班级:姓名:学号:分数:试卷说明:本套试题共四个⼤题,全部题⽬都答在答题纸上,写在其他地⽅均⽆效。
(答题纸在本套试卷的第10页上)⼀、选择题(每⼩题2分,共40分)1、C++是(C )。
A. ⾯向对象的程序设计语⾔B. ⾯向过程的程序设计语⾔C. 既⽀持⾯向对象的程序设计⼜⽀持⾯向过程的程序设计的混合型语⾔D. ⾮结构化的程序设计语⾔2、⾯向对象程序设计思想的主要特征中不包括( D )。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、若定义:string str; 当语句cin>>str; 执⾏时,从键盘输⼊:Microsoft Visual Studio 6.0!所得的结果是str=( B )。
A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下⾯的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下⾯函数调⽤中,不合法的是( C )。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、下列语句中,将函数int sum(int x, int y)正确重载的是( C )。
A. float sum(int x, int y);D. double sum(int y, int x);6、下列表⽰引⽤的⽅法中,( A )是正确的。
已知:int a=1000;A. int &x=a;B. char &yC. int &z=1000;D. float &t=&a7、在⼀个函数中,要求通过函数来实现⼀种不太复杂的功能,并且要求加快执⾏速度,选⽤( A )。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案2
《面向对象程序设计J A V A语言程序设计》期末考试试题及部分答案2------------------------------------------作者------------------------------------------日期年~ 年上学期 《面向对象程序设计♉☺♋❖♋》期末考试试题一、选择题(每道题只有一个正确答案,每小题 分,共 分) 道题、关于☺♋❖♋语言叙述错误的是:( )✍✍ ✌.☺♋❖♋语言具有跨平台性✍✍ .☺♋❖♋是一种面向对象的语言✍✍ .☺♋❖♋语言中的类可以多继承✍✍ .☺♋❖♋的垃圾收集机制自动回收程序已不再使用的对象、以下叙述正确的是:( )的确台♋✍✍ ✌.构造方法必须是☐◆♌●♓♍方法✍✍ .❍♋♓⏹方法必须是☐◆♌●♓♍方法✍✍ .☺♋❖♋应用程序的文件名可以是任意的✍✍ .构造方法应该声明为❖☐♓♎类型、关于☺♋❖♋中数据类型叙述正确的是:( )✍✍ ✌、整型数据在不同平台下长度不同✍✍ .♌☐☐●♏♋⏹类型数据只有 个值,♦❒◆♏和♐♋●♦♏✍✍ .数组属于简单数据类型✍✍ .☺♋❖♋中的指针类型和 语言的一样、设 ♓⏹♦ ⌧♐●☐♋♦ ⍓,则表达式 ⌧ ⍓的值是:( ) ✌....以上都不是、以下语句有语法错的是:( ✌ )✌.♓⏹♦ ⌧;⍓; .♐☐❒ ☎♓⏹♦ ⌧⍓;⌧;⌧✆.♦♒♓●♏ ☎⌧✆.♐☐❒☎ ✆、关于类和对象的叙述正确的是:( ✌ )✍✍ ✌.☺♋❖♋的类分为两大部分:系统定义的类和用户自定义的类✍✍ .类的静态属性和全局变量的概念完全一样,只是表达形式不同✍✍ .类的成员至少有一个属性和一个方法✍✍ .类是对象的实例化、以下有关构造方法的说法,正确的是:( ✌ )✌.一个类的构造方法可以有多个.构造方法在类定义时被调用.构造方法只能由对象中的其它方法调用.构造方法可以和类同名,也可以和类名不同、以下有关类的继承的叙述中,正确的是:( )✌.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性 .子类只能继承父类的方法,不能继承父类的属性.子类只能继承父类的非私有属性,不能继承父类的方法.子类不能继承父类的私有属性、下列属于容器的组件有:( )✌.☺ ◆♦♦☐⏹.☺ ♋⏹♏. ♋⏹❖♋♦.☺❆♏⌧♦✌❒♏♋、❖☐♓♎ 的含义:( )✌.方法体为空.定义的方法没有形参.定义的方法没有返回值.方法的返回值不能参加算术运算、关于☺♋❖♋中异常的叙述正确的是:( )✌.异常是程序编写过程中代码的语法错误.异常是程序编写过程中代码的逻辑错误.异常出现后程序的运行马上中止.异常是可以捕获和处理的、所有的异常类皆继承哪一个类?( )✌. ♋❖♋♓☐☜⌧♍♏☐♦♓☐⏹. ♋❖♋●♋⏹♑❆♒❒☐♦♋♌●♏. ♋❖♋●♋⏹♑☜⌧♍♏☐♦♓☐⏹. ♋❖♋●♋⏹♑☜❒❒☐❒、下面哪个不是 ♋❖♋语言中的关键字?( )✌.●☐⏹♑.♦♓♏☐♐.♓⏹♦♦♋⏹♍♏☐♐.♍☐⏹♦♦、为实现进程之间的通信,需要使用下列那种流才合适?( )✌. ♋♦♋ ♦♦❒♏♋❍.☞♓●♏ ♦♦❒♏♋❍. ◆♐♐♏❒♏♎ ♦♦❒♏♋❍. ♓☐♏♎ ♦♦❒♏♋❍、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?( )✌.✌♍♦♓☐⏹☹♓♦♦♏⏹♏❒. ☐◆♦♏☹♓♦♦♏⏹♏❒. ☐◆♦♏☐♦♓☐⏹☹♓♦♦♏❒⏹.✋♦♏❍☹♓♦♦♏⏹♏❒二、填空题(每空 分,共 分)、面向对象程序设计所具有的基本特征是:♉♉♉抽象性♉♉♉,♉封装性♉♉♉,♉继承性♉♉,♉多态性♉♉、数组⌧定义如下♓⏹♦ ⌧☯ ☯ ⏹♏♦ ♓⏹♦☯☯则 ⌧●♏⏹♑♦♒ 的值为♉♉♉♉♉♉♉♉♉♉♉♉,⌧☯●♏⏹♑♦♒ 的值为♉♉♉♉♉♉♉♉♉♉♉♉。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案
一、单选题1.在下列概念中,Java语言只保留了DA.运算符重载B.结构和联合C.指针D.方法重载2.下列类定义中,不正确的是BA.class x { .... }B.static class x implements y1,y2 { .。
}C.public class x extends Applet { 。
... } D.class x extends y { .。
.。
} 3.下列语句序列执行后,k 的值是Bint m=3, n=6, k=0;while( (m++) < (—— n)) ++k;i++先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增1作为i的值。
如i=1,则表达式(i++)的值等于1,而i的值变为2。
++ii先自增1,再把自增后的值赋给表达式(++i).如i=1,则表达式(++i)的值等于2,i的值也为2,A.0 B.1 C.2 D.34.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是AA.a[0] = 7; B.i = i + 2 C.i++ - --j; D.a(0) = 66;5.Java语言的类间的继承关系是BA.多重的B.单重的C.线程的D.不能继承6.下列语句序列执行后,k 的值是Cint i=10, j=18, k=30;switch( j — i ) {case 8 : k++;case 9 : k+=2;case 10: k+=3;default : k/=j;}A.31 B.3 C.2 D.337.设有定义 float x=3。
5f, y=4.6f, z=5。
7f;则以下的表达式中,值为true的是CA.x 〉 y || x > z B.z > ( y + x ) C.x != y D.x < y & !( x 〈 z )8.下列修饰符中,定义类头时能使用的修饰符是CA.private B.static C.abstract D.protected 9.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是BA.x( int m){ .。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计期末综合练习六(程序设计)1. 编一程序求出满足不等式1+1/2+1/3+...+1/n ≥5的最小n 值。
2. 计算1+3+32+...+310的值并输出,假定分别用i,p,s 作为循环变量、累乘变量和累加变量的标识符。
3. 求满足不等式22+42+...+n 2<1000的最大n 值,假定分别用i 和s 作为取偶数值和累加值的变量,并限定使用do循环编程。
4. 已知⎪⎩⎪⎨⎧>-+≤+= )0(143)0( 222x ax ax x x a y ,求出并显示当x 分别取-3.8, 6.4, 2.3, -4.2,8.9, 3.5, -5.0, 4.5时所对应的y 值,要求把a 定义为常量,其值设定为10.2,x 的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)。
5. 求出从键盘上输入的10个整数中的最大值,要求输入变量用x 表示,存储最大值的变量用max 表示。
6. 已知6≤a ≤30,15≤b ≤36,求满足不定方程2a+5b=126的全部整数组解。
如(13, 20)就是一个整数组解,并以所给的样式输出每个解。
7. 某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x 作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2和c3统计出成绩为优秀、达标和不达标的人数。
8. 编写一个函数,分别求出由指针a 所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b 的相应元素中。
9. 按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v 存放平均值。
10. 按照下面函数原型语句编写一个递归函数计算出数组a 中n 个元素的平方和并返回。
int f(int a[],int n);11. 按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。
55555444433322112. 按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。
12233344445555513. 根据下面类中Count 函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}int Count(int x); //从数组a的前n个元素中统计出其//值等于x的个数并返回。
};14. 根据下面类中Search函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}int Search(int x); //从数组a的前n个元素中顺序查找值为x的元素, //若查找成功则返回元素的下标,否则返回-1。
};15. 根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}int MaxMin(int& x, int& y); //从数组a的前n个元素中求出//最大值和最小值,并分别由引用参数x和y带回,//同时若n大于0则返回1,否则返回0。
};16. 根据下面类中Compare 函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}int Compare(AA b); //比较*this与b的大小,若两者中//的n值相同,并且数组中前n个元素值对应//相同,则认为两者相等返回1,否则返回0。
};17. 根据下面类中CompareBig 函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}int CompareBig(AA b); //比较*this与b的大小,从前向后按两数组//中的对应元素比较,若*this中元素值大则返回1,若b中//元素值大则返回-1,若相等则继续比较下一个元素,直到//一个数组中无元素比较,此时若两者的n值相同则返回0,//否则若*this中的n值大则返回1,若b中的n值大则返回-1。
};18. 根据下面类中Reverse 函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}AA* Reverse(); //对于调用该函数的对象,将其a数组中前n个//元素值按相反的次序排列,返回指向该对象的指针。
};19. 根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。
class AA {int* a;int n;int MS;public:void InitAA(int aa[], int nn, int ms) {if(nn>ms) {cout<<"Error!"<<endl; exit(1);}MS=ms;n=nn;a=new int[MS];for(int i=0; i<MS; i++) a[i]=aa[i];}AA* Reverse1(); //通过动态存储分配得到一个对象,并动态分配//a[MS]数组空间,要求该对象中的n和MS的值与*this中的//对应成员的值相同,数组元素的值是按照*this中数组元//素的相反次序排列得到的,要求该函数返回动态对象的地址。
};20. 根据下面类中构造函数的原型和注释写出它的类外定义。
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中的数组合并的 //功能,把合并结果存入临时对象并返回int Lenth() {return n;} //返回数组长度void Print() { //输出数组for(int i=0; i<n; i++)cout<<a[i]<<' ';cout<<endl;}};21. 根据下面类中拷贝构造函数的原型写出它的类外定义。
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的功能并返回*thisArray Uion(Array& aa); //实现*this和aa中的数组合并的 //功能,把合并结果存入临时对象并返回int Lenth() {return n;} //返回数组长度void Print() { //输出数组for(int i=0; i<n; i++)cout<<a[i]<<' ';cout<<endl;}};22. 根据下面类中Give函数的原型和注释写出它的类外定义。
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的功能并返回*thisArray Uion(Array& aa); //实现*this和aa中的数组合并的 //功能,把合并结果存入临时对象并返回int Lenth() {return n;} //返回数组长度void Print() { //输出数组for(int i=0; i<n; i++)cout<<a[i]<<' ';cout<<endl;}};23. 根据下面类中Uion 函数的原型和注释写出它的类外定义。