《面向对象程序设计》编程题复习及其答案

合集下载

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。

A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。

A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。

A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。

C++有(B)关联。

A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。

A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。

A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。

A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。

A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。

成人教育 《面向对象程序设计》期末考试复习题及参考答案

成人教育 《面向对象程序设计》期末考试复习题及参考答案

面向对象程序设计复习题二一、填空1.程序的三种常见结构是、、,其中结构是程序的默认结构。

2.同名方法给出不同的实现,并通过参数类型或个数进行区分,称为。

3.和“继承”匹配的概念是。

4.由类构建对象的过程称为。

5.抽象类是含有的类。

6.实现软件复用有两种方式,分别为、、。

7.有定义const int *p,p称为。

8.通过继承产生的类称为。

9.virtual关键字在C++中有两个用处,分贝是,和。

10.方法重载和实现了多态性。

11.请给出C++外的另外一种支持面向对象设计语言。

12.类的三个要素是、、。

13.对象释放前执行的函数是。

二、名词解释1、构造函数2、对象3、运算符重载4、析构函数5. 面向对象6. 继承三、简答1.比较类和结构体?2.重载的意义?3.抽象类的作用和意义?4.组合与继承的区别?四、辩析1.任何父类对象都可以被子类对象替代。

2.public修饰符号破坏了数据的开放性。

3.private继承方式不能产生子类。

4.不能实例化的类一定是抽象类。

五、综合回答1.简述多态的实现机制。

2.谈谈多态的意义。

3.面向对象程序设计思想的优点和缺点。

面向对象程序设计复习题二答案一、填空(1)顺序(2)选择(3)循环(4)顺序(5)函数重载(6)抽象(7)实例化(8)纯虚函数(9)继承(10) 组合(9)和(10)不区分顺序(11)常量指针(12)派生类(13)虚函数(14)虚拟继承(13)和(14)不区分顺序(15)覆盖(16)Java或者C#(17)类的标识(18)类的状态(19)类的操作(17)(18)(19)不区分顺序(20)析构函数二、名词解释1、当类实例化时自动调用的成员函数,负责实现对象的初始化2、按照数据类型分配的内存空间,可以实现方法的调用3、将系统定义的运算符操作对象的类型扩展的过程,一般针对自定义类型4、对象空间释放之前自动调用的函数5、是程序设计思想,相对面向过程而言更加强调封装性6、两个类之间的一种关系,其中一个类的某个成员类型是另一个类三、简答1、C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public2、重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。

《面向对象程序设计JAVA语言程序设计》期末复习试题及部分答案

《面向对象程序设计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){ ... } B.void x( int m){ ... }C.x( int m, int n){ ... } D.x( int h,int m,int n){ ... } 10.下列对封装性的描述中,错误的是 DA.封装体包含了属性和行为B.封装使得抽象的数据类型提高了可重用性C.被封装的某些信息在封装体外是不可见的D.封装体中的属性和行为的访问权限是相同的11.下列关于包的描述中,错误的是BA.包是若干个类的集合B.包是一种特殊的类型C.包是使用package语句创建的D.包有有名包和无名包两种12.下列关于Applet程序的描述中,错误的是 CA.Applet程序的主类必须是Applet类得子类B.Applet不是完整的独立程序C.Applet程序的主类中应有一个main()方法D.Applet的字节码文件必须嵌套在一个HTML文件中13.下列界面元素中,不是容器的是CA. Dialog B.Frame C.List D.Panel14.下列关于异常处理的描述中,错误的是DA.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理15.以下方法不属于迭代器(Iterator)接口所定义的方法的是DA.hasNext()B.next()C.remove()D.nextElement()16.主线程属于(C )A.守护线程B.Thread线程C.用户线程D.Runnable线程二、填空题1.三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。

《面向对象程序设计》编程题复习及其答案

《面向对象程序设计》编程题复习及其答案

《面向对象程序设计》复习题1、( C++的输入输出)天猫优惠券,我就要券定义一个函数 max,实现输入两个数a、b,比较并从小到大输出。

2、(函数的重载)(1)定义一个带两个参数的函数max,输出最大值。

(2)再定义一个带三个参数的函数max,输出最大值。

(3)主函数测试之。

3、(有默认参数的函数)将题 2 用带默认参数的函数实现。

4、(变量的引用)(1)定义一个 swap1函数,以普通形参传入两个变量 a、b,互换 a、b 的值。

(2)定义一个 swap2函数,以指针形参传入两个变量 a、b,互换 a、b 的值。

(3)定义一个 swap3函数,以引用形参输入两个变量 a、b,互换 a、b 的值。

(4)主函数定义两个变量 x、 y 传入三个函数,观察 x、 y 值前后的变化。

5、(类的定义)定义一个 student 类,数据成员包括:学号 num,姓名 name,年龄 age,性别 sex,成员函数包括:(1) set 函数,键盘输入学号,姓名,年龄,性别(2) display 函数,输出学生信息。

6、(构造函数和析构函数)定义一个 student 类,数据成员包括:学号 num,姓名 name,年龄 age,性别 sex,成员函数包括:(1)构造函数,初始化学号,姓名,年龄,性别(2)display 函数,输出学生信息。

(3)析构函数,输出学生学号。

(4)主函数定义多个对象,并注意构造函数和析构函数的调用顺序。

7、(构造函数的重载)在题 6 基础上增加一个默认构造函数,实现构造函数的重载8、将题 6 用带默认参数的构造函数实现。

9、(对象数组和对象的动态建立及释放)在题 8 基础上,实现如下主函数:(1)在主函数中定义一个包含三个学生的数组,并初始化之。

(2)在主函数中定义一个 student 类指针 p 并用 new 运算符分配动态内存(3)用 delete 删除 p 指向的动态内存。

(4)观察构造函数和析构函数的调用。

面向对象程序设计复习题及参考答案

面向对象程序设计复习题及参考答案
则类B是类A的。
20.Java语言中,通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的块来捕
获和处理异常。
21.多态是指。
22.声明常量时使用修饰符。
23.Java中异常抛出使用保留字。
24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名
来访问和调用。
25.如果类成员前面没有访问权限修饰符,则该类成员具有访问权限。
4.构造器方法有什么特点和作用?
5.保留字throw和throws有什么区别?
6.将下面的while循环改写为for循环
int count=1,sum= 0;
while ( cou nt <= 30 ) {
sum += count;
count +=3;
}
7.Java语言编译和执行的过程是?
8.检查型异常和非检查型异常有何区别?
9.请改造下面的构造方法,使第一个构造方法调用第二个构造方法。
public Class On e(i nt alpha) {
this.alpha = alpha;
this.beta = 0;
}
public Class On e(i nt alpha , int beta) {
this.alpha = alpha;
}
public int getCount(){
return count;
}
}
2.int gradeLevel;
switch (gradeLevel){
case1:System.out.print("Go to the101");
case2:System.out.print("Go to202");

(完整版)c++面向对象程序设计试题和答案

(完整版)c++面向对象程序设计试题和答案

系名____________班级____________姓名____________学号____________密封线内不答题一、 填空题(每空1分,共14分)1、 观看以下程序:class point{public:void show() {cout<<”point ”<<endl;} }; void main() { point p1; point *p; p=&p1; _______________//通过对象p1访问show 函数 ______________//通过指针p 访问show 函数 } 2、 在C++类中可以包含______________、______________和______________三种具有不同访问控制权的成员。

3、 定义类时,在类头中将使用关键字_____________来表示类定义的开始。

4、 如果一个类中至少有一个纯虚函数,则该类称为________________。

5、 C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。

6、 友员函数是用关键字____________修饰的非成员函数。

7、 若有: int i; int &j=i; i=10; j=i+1; 则i=__________,j=__________。

8、 new 的功能是____________________,delete 的功能是____________________。

二、 选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是( )。

(A )数据封装 (B )继承(C )多态性 (D )模板2、( )是给变量取一个别名,它引入了变量的同意词。

(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。

(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。

面向对象程序设计知识题及答案解析

面向对象程序设计知识题及答案解析

面向对象程序设计一、选择填空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)是正确的。

面向对象程序设计考前复习题及答案(20200909181306)

面向对象程序设计考前复习题及答案(20200909181306)

(1)定义类 A 的构造函数,该构造函数有一个整型的参数
x,在构造函数中请将
x 赋值给数据成员 a。请在注释“ //**1** ”之后添加适当的语句。 ( 2)定义类 A1 的构造函数,该构造函数有两个整型参数
x 和 y,在构造函数中请
将 x 赋值给数据成员 b,将 y 作为基类 A 构造函数的参数值传入。请在注释 “ //**2** ”后添 加适当的语句。
【参考答案】
【13】派生类
(12)将 x+y 中的 +运算符用友元函数重载应写为 【 14】 。
【参考答案】
【14】 operator+(x , y)
(13)已知程序的结果为 1 2 3,请填空。
#include template class A
{ public:
T x,y,z;
void display(){cout << x << " " << y << " " << z;} };
cout << endl;} 【参考答案】
【4】2 4 6
(5)下列程序在构造函数和析构函数中申请和释放类的数据成员 形参 b 初始化 a,请填空。
class A { public: A(int b); ~A(); private: int *a; }; A::A(int b) { 【5】 ; } A::~A()
void main()
{ Aa1;
【15】
【16】
【17】
a1.display(); }
【参考答案】
【15】 a1.x=1 【 16】a1.y=2 【 17】 a1.z=3

面向对象程序设计期末复习题及答案

面向对象程序设计期末复习题及答案

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.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。

3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。

5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。

6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。

1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。

A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。

A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。

A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。

A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。

A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。

A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。

A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。

A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。

面向对象程序设计复习题(附参考答案)

面向对象程序设计复习题(附参考答案)

【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】机器语言中的指令编码为()编码。

[A.]二进制[B.1符号[c.1十进制[D.]数字【答案】A【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】JaVa语言的主要特点不包括()。

[A.]面向对象[B.]自动垃圾回收[CJ处理文件[D.]可移植性【答案】C【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】Java开发工具包简称为()。

[A.]JKD[B.]JRK[C.]JDK[D.]JRE【答案】C【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】具有相同属性和服务的一组对象的模板称为()。

1B.]类[c.1代码[D.]概念【答案】B【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个()。

[A.]产品[B.1元素[c1成分[D.]实例【答案】D【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】Java是一门()语言。

[A.]机器[B.]汇编[C.)面向过程的高级[D.]面向对象的高级【答案】D【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】使用JDK编译JaVa程序时使用的命令是()。

面向对象程序设计含答案

面向对象程序设计含答案
}。
int example::count=0。
cout.setf(ios::left)。
cout<<x<<endl。
cout.width(15)。
cout.setf(ios::right,ios::left)。
cout<<x<<endl。
cout.setf(ios::showpos)。
cout<<x<<endl。
cout<<-x<<endl。
cout.setf(ios::scientific)。
~Dog(){}
// Accessors
BREED GetBreed() const { return itsBreed。}
void SetBreed(BREED breed) { itsBreed = breed。}
// Other methods
void WagTail() const { cout << "Tail wagging...\n"。}
(3)按要求进行绘画
(4)恢复旧画笔pDC->SelectObject(oldPen)。
三、阅读下列程序,写出执行结果。(40分,每题5分)
1、#include<iostream.h>
class Abc
{public:
Abc( ){a=0。b=0。c=0。}
Abc(inti,int j,int k){a=i。b=j。c=k。}
9、CPaintDC是_CDC__类中最常用的派生类,它只能使用在CView类的_OnDraw__函数中。
10、消息WM_MOUSEMOVE的消息响应函数的函数名为_OnMouseMove___。

面向对象程序设计复习题及参考答案

面向对象程序设计复习题及参考答案

网络數谋程考试复习题及参考答案面向对象程序设计一、填空题:1.创建类的对象时,使用运算符 ___________ 给对象分配内存空间。

2.Java通过 ______________________________________________ 来区分重载函数。

3.在子类中使用保留字 _____________ 可调用被子类覆盖的父类中的方法。

4•使用保留字_____________ 可以从一个构造方法中调用同一个类的另一个构造方法。

5.抽象类用修饰符 ________________ 定义。

6.类的数摒成员的访问权限修饰符一般为 ____________________7.访问权限修饰符按照访问权限的大小从大到小分别为______________________ . _&定义类的构造方法不能有_________________ ,其需称与 _______________ 名相同。

9.______________________________________________________________________ 抽象方法是的特征是「10.Java中的所有异常都是从_____________________ 继承来的。

11.对象引用中存储的内容是_________________________________ -12 •下列程序段执行后,String strl = new String Java");String str2 = new String(^Java^);if (strl・ equals(str2)) {System・ out. println(z/They are equal");} else {System ・ out. print In ("They are not equal?/);}输出结果为:____________________________________________13.下而循环执行后的sun值为int count =0, sum = 0;whi.le ( count <10 ) {sum += count;count ++;}14.Java语言中关键字______________________ ^表示双精度类型。

面向对象程序设计复习题答案

面向对象程序设计复习题答案

面向对象程序设计复习选择题1. 一个设计得好的面向对象系统具有(B)特征。

A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(C)。

A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象封装性、继承性、多态性D 封装性、易维护性、可扩展性、可重用性3. 关于C#程序的书写,下列不正确的说法是( D )。

A. 区分大小写B. 一行可以写多条语句C. 一条语句可写成多行D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法4. 关于C#语言的基本语法,下列哪些说法正确的是(C)A. C#语言使用using 来引用需要用到的命名空间;B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;C. C#语言中使用的名称严格区分大小写;D. C#中一条语句必须写在一行内;5 以下标识符中,正确的是(A)。

A._nNameB. typeofC. 6bD. x5#6.字符串连接运算符包括&和(A)。

A. +B. -C. *D. /7.拆箱是关于:(B)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换8.装箱是关于:(A)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换9.下列引用类型和值类型描述正确的是(A)。

A. 引用类型变量保存内存地址,值类型直接保存变量值B. 引用类型在变量中直接保存变量值,值类型保存内存地址C. 引用类型和值类型保存数据的方式相同D. .NET Framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:(A)A、通过类名调用B、通过实例化的对象调用C、在主方法中直接调用D、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(A)A、string类型B、double类型C、int类型D、 char类型12.下列类型中为值类型的是(C)A. 字符串类型B. 树组类型C. 枚举类型D. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:(C)A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低14. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是(C)。

《面向对象程序设计(Java)》经典编程集(共60题,含答案)

《面向对象程序设计(Java)》经典编程集(共60题,含答案)

《面向对象程序设计(Java)》经典编程集(共60题,含答案)/*一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第5次落地时,共经过多少米?第5次反弹多高?*//*输出7*7口诀*//*求1+2!+3!+...+10!的和*//*有5个人坐在一起,问第五个人多少岁?他说比第4个人大3岁。

问第4个人岁数,他说比第3个人大3岁。

问第三个人,又说比第2人大3岁。

问第2个人,说比第一个人大3岁。

最后问第一个人,他说是10岁。

请问第五个人多大? *//*求0--7所能组成的6位的奇数个数是多少个*//*有1、2、3、4、5、6、7、8、9个数字,能组成多少个互不相同且无重复数字的四位数?程序分析:可填在千位、百位、十位、个位的数字都是1、2、3、4、5、6、7、8、9。

组成所有的排列后再去掉不满足条件的排列。

*//*一个整数,它加上1000后是一个完全平方数,再加上1680又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上1000后再开方,再将该数加上2680后再开方,如果开方后的结果满足如下条件,即是结果。

请看具体分析*//*利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,80-89分之间的用B表示,70-79分之间的用C表示,60-69分之间用D表示,60分以下的用E表示。

(假定输入数字为95,判断等级)*//*题面:编写程序解决如下问题,小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,求可以有多少种不同的借法?将结果打印输出*//*题面:编写程序解决如下问题,某人将一缸金鱼分5次出售,第一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。

问原来的鱼缸中共有几条金鱼?将结果打印输出*//*题面:编写程序,一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反,求这个三位数,以十进制输出。

面向对象程序设计试题及答案

面向对象程序设计试题及答案

面向对象程序设计试题及答案一、试题1. 请简要解释面向对象(Object-Oriented)程序设计的概念。

2. 列举面向对象程序设计中的四个基本特征,并分别进行简要描述。

3. 请说明封装(Encapsulation)在面向对象程序设计中的作用和优势。

4. 解释继承(Inheritance)在面向对象程序设计中的概念和用途。

5. 什么是多态(Polymorphism)?请解释多态的概念以及其在面向对象程序设计中的重要性。

6. 简要介绍抽象类(Abstract Class)和接口(Interface)的概念,并说明它们之间的区别。

7. 请解释类(Class)与对象(Object)之间的关系。

8. 在面向对象程序设计中,什么是构造函数(Constructor)?请说明构造函数的作用和使用方法。

9. 请示范一个使用面向对象程序设计的简单实例,并说明你所设计的类的结构和功能。

二、答案1. 面向对象程序设计是一种以对象为中心的编程方法,通过定义表示对象属性和行为的类来组织程序结构,以实现代码的重用性、灵活性和可维护性。

2. (1)封装:将数据和对数据的操作封装在一个类中,通过访问权限控制,保护数据的安全性和完整性。

(2)继承:通过建立类之间的继承关系,实现代码的重用,具有层次性和扩展性。

(3)多态:允许不同类的对象对同一消息作出不同的响应,实现代码的灵活性和扩展性。

(4)抽象:通过抽象类和接口的定义,隐藏对象的具体实现细节,提供统一的接口和规范。

3. 封装的作用是将数据和对数据的操作封装在一个类中,外部无法直接访问类的内部实现细节,只能通过类提供的接口访问和操作数据。

封装的优势包括:(1)提高代码的可维护性和可读性,减少代码的重复。

(2)保护数据的安全性和完整性,防止外部直接对数据进行非法操作。

(3)降低模块之间的耦合度,提高代码的灵活性。

4. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。

《JAVA面向对象程序设计》考试卷及答案带注释

《JAVA面向对象程序设计》考试卷及答案带注释

D) int score[] = new int[]{90,12,34,77,56};
11.若有定义:byte[] x={11,22,33,-66};
其中 0≤k≤3,则对 x 数组元素错误的引用是( )
A) x[5-3]
B) x[k]
C) x[k+5]
D) x[0]
12.以下代码的输出结果是()。
public static void main(String[] args){
第 4页 共 3 页
_________________ } }
A) Constants con = new Constants();
B) Constants.MAX = 100;
C) int i = Constants.MAX-Constants.MIN ; D) Constants.MIN>0;
D) 1 3 7 9
13.下列( )选项的 java 源文件代码片段是不正确的。
A) package testpackage;
B) import java.io.* ;
public class Test{}
package testpackage;
public class Test{}
C) import java.io.* ;
A) true、false、true、false
B) false、true、false、true
C) true、true、true、编译错误
D) true、true、false、编译错误
27.以下关于接口的说法中,正确的是()。
A) 接口中全部方法都是抽象方法,方法可以是任意访问权限
B) 接口中属性都是使用 public static final 修饰,没有显式赋值将使用默认值

《面向对象程序设计》期末复习带答案

《面向对象程序设计》期末复习带答案

一、单项选择题1.退出Visual Basic的快捷键是()。

CA.Ctrl + Q B.Shift + Q C.Alt + Q D.Ctrl + Alt + Q2.以下四个VB的变量名中,不合法的是()。

CA.Print_Num1 B.Abc% C.Const D.X1_y2_z33设置ADO数据控件RecordSource属性为数据库中的单个表名,则CommandType属性需要设置为()。

B A.adCmdText B.adCmdTable C.adCmdStoredProc D.adCmdUnknown4设有如下过程:Sub ff( x,y,z )x = y + zEnd Sub以下所有参数的虚实结合都是传址方式的调用语句是()。

BA.Call ff ( 5,7,z )B. Call ff ( x,y,z )C. Call ff ( 3 + x,5 + y,z )D. Call ff ( x + y,x - y,z )5.菜单的热键指使用Alt键和菜单标题中的一个字符来打开菜单,建立热键的方法是在菜单标题的某个字符前加上一个()字符。

CA.% B.$ C.& D.#6.函数Int( 76 * RND() )的值是在()范围内的整数。

CA. [1,75]B. [1,76]C. [0,75]D. [0,76]7.以下能够触发文本框Change事件的操作是()。

DA. 文本框失去焦点B.文本框获得焦点C. 设置文本框的焦点D.改变文本框的内容8.设组合框Combo1 中有3个项目,则以下能删除最后一项的语句是()。

BA.Combo1.RemoveItem Text B.Combo1.RemoveItem 2C.Combo1.RemoveItem 3 D.Combo1.RemoveItemCombo1.Listcount9.要使菜单项Menu1在程序运行时失效,使用的语句是()。

DA.Menu1.Visible=True B.Menu1.Visible =False C.Menu1.Enabled=True D.Menu1.Enabled=False10.以下叙述中错误的是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象程序设计》复习题1、(C++的输入输出)天猫优惠券,我就要券定义一个函数max,实现输入两个数a、b,比较并从小到大输出。

2、(函数的重载)(1)定义一个带两个参数的函数max,输出最大值。

(2)再定义一个带三个参数的函数max,输出最大值。

(3)主函数测试之。

3、(有默认参数的函数)将题2用带默认参数的函数实现。

4、(变量的引用)(1)定义一个swap1函数,以普通形参传入两个变量a、b,互换a、b的值。

(2)定义一个swap2函数,以指针形参传入两个变量a、b,互换a、b的值。

(3)定义一个swap3函数,以引用形参输入两个变量a、b,互换a、b的值。

(4)主函数定义两个变量x、y传入三个函数,观察x、y值前后的变化。

5、(类的定义)定义一个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1) set函数,键盘输入学号,姓名,年龄,性别(2) display函数,输出学生信息。

6、(构造函数和析构函数)定义一个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1)构造函数,初始化学号,姓名,年龄,性别(2)display函数,输出学生信息。

(3)析构函数,输出学生学号。

(4)主函数定义多个对象,并注意构造函数和析构函数的调用顺序。

7、(构造函数的重载)在题6基础上增加一个默认构造函数,实现构造函数的重载8、将题6用带默认参数的构造函数实现。

9、(对象数组和对象的动态建立及释放)在题8基础上,实现如下主函数:(1)在主函数中定义一个包含三个学生的数组,并初始化之。

(2)在主函数中定义一个student类指针p并用new运算符分配动态内存(3)用delete删除p指向的动态内存。

(4)观察构造函数和析构函数的调用。

10、(复制构造函数)在题8基础上新增加一个复制构造函数,并主函数新增复制构造对象。

11、(静态成员)定义一个student类,数据成员包括:学号num,姓名name,成绩score,累加总分sum,累计人数count。

成员函数包括:构造函数统计人数count;(1)非静态成员total函数,求sum。

(2)静态成员average函数,求平均成绩。

(3)主函数定义包含3个学生的数组,求三个学生的平均成绩。

12、(友元函数)定义一个Time类,私有数据成员包括:时hour、分minute、秒second成员函数:构造函数Time()13、(运算符重载)(1)定义一个复数类,实现对“+”,>>,<<的重载,使之可实现以下主函数。

int main(){Complex a(3,4),b(1,2),c,d,e,f;c=a+b;d=a+5;e=3+b;cin>>f;cout<<f<<endl;return 0;}(2)定义一个Time类,实现对“++”的前缀、后缀重载。

P134i++:单目运算符天猫优惠券,我就要券14、(单继承及派生类构造函数)(1)定义一个person类,数据成员包括:姓名name,年龄age,性别sex成员函数:构造函数及display函数(2)定义一个派生类student,公有继承与person类,新增成员:专业major,入学日期enterdate(Date类自定义)。

(3)主函数定义student对象,各类构造函数的调用顺序。

15、(多继承)在14题基础上由person类再派生出teacher类,新增成员:职称title,工资wage16、(虚继承)由student类和teacher类共同派生出graduate类,新增成员: 年级grade,将person类定义成虚基类,实现用虚继承解决二义性。

17、(抽象类及多态性)定义一个抽象基类Shape,由它派生出5个派生类,Circle(圆形)、Square(正方形)、Rectangle (矩形)、Trapezoid(梯形)、Triangel(三角形)。

用虚函数分别计算几何图形面积,并求他们的和。

要求定义一个基类指针,使它指向每一个派生类对象,体现其多态性。

1、#include<iostream>using namespace std;void max(){int a,b;cout<<"请输入两个数:"<<endl;cin>>a>>b;if(a>b)cout<<b<<" "<<a<<endl;elsecout<<a<<" "<<b<<endl;}int main(){max();return 0;}2、#include<iostream>void max(int a,int b){if(a>b)cout<<a<<endl;elsecout<<b<<endl;}void max(int a,int b,int c) {if(a>b && a>c)cout<<a<<endl;else if(b>c)cout<<b<<endl;elsecout<<c<<endl;}int main(){max(2,5);max(7,5,3);return 0;}3、#include<iostream>using namespace std;void max(int a,int b,int c=0) {if(a>b && a>c)cout<<a<<endl;else if(b>c)cout<<b<<endl;elsecout<<c<<endl;}int main(){max(2,5);max(7,5,3);return 0;}4、#include<iostream>using namespace std;void swap1(int a,int b){int temp;temp=a;a=b;b=temp;void swap2(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}void swap3(int &a,int &b){int temp;temp=a;a=b;b=temp;}int main(){int x,y;x=5;y=7;swap1(x,y);cout<<"x="<<x<<" y="<<y<<endl;x=5;y=7;swap2(&x,&y);cout<<"x="<<x<<" y="<<y<<endl;x=5;y=7;swap3(x,y);cout<<"x="<<x<<" y="<<y<<endl;return 0;}5、#include<iostream>#include <string>using namespace std;class student{private:int num;string name;int age;char sex;public:void set(){cout<<"请输入:学号,姓名,年龄,性别(f or m)"<<endl;cin>>num>>name>>age>>sex;}void display(){cout<<"学号:"<<num<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}};int main(){student s;s.set();s.display();return 0;}6、#include<iostream>#include <string>using namespace std;class student{private:int num;string name;int age;char sex;public:/* void set(){cout<<"请输入:学号,姓名,年龄,性别(f or m)"<<endl;cin>>num>>name>>age>>sex;}*/student(int num,string name,int a,int s){cout<<"调用构造函数 num="<<num<<endl;this->num=num;this->name=name;age=a;sex=s;}天猫优惠券,我就要券void display(){cout<<"学号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}~student(){cout<<"析构函数学号:"<<num<<endl;}int main(){student s(1001,"张三",25,'f'),s1(1002,"李四",24,'m');//s.set();s.display();s1.display();return 0;}7、#include<iostream>#include <string>using namespace std;class student{private:int num;string name;int age;char sex;public:/* void set(){cout<<"请输入:学号,姓名,年龄,性别(f or m)"<<endl;cin>>num>>name>>age>>sex;}*/student(){cout<<"调用构造函数 num="<<0<<endl;num=0;name="";age=18;sex='f';}student(int num,string name,int a,int s){cout<<"调用构造函数 num="<<num<<endl;this->num=num;this->name=name;age=a;sex=s;}void display(){cout<<"学号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;~student(){cout<<"析构函数学号:"<<num<<endl;}};int main(){student s(1001,"张三",25,'f'),s1(1002,"李四",24,'m'),s2;//s.set();s.display();cout<<endl;s1.display();cout<<endl;s2.display();cout<<endl;return 0;}8、#include<iostream>#include <string>using namespace std;天猫优惠券,我就要券class student{private:int num;string name;int age;char sex;public:student(int num=0,string name="",int a=18,int s='f'){cout<<"调用构造函数 num="<<num<<endl;this->num=num;this->name=name;age=a;sex=s;}void display(){cout<<"学号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}~student(){cout<<"};int main(){student s(1001,"张三",25,'f'),s1(1002,"李四",24,'m'),s2;//s.set();s.display();cout<<endl;s1.display();cout<<endl;s2.display();cout<<endl;return 0;}9、#include<iostream>#include <string>using namespace std;class student{private:int num;string name;int age;char sex;public:student(int num=0,string name="",int a=18,int s='f'){cout<<"调用构造函数 num="<<num<<endl;this->num=num;this->name=name;age=a;sex=s;}void display(){cout<<"学号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}~student(){cout<<"析构函数学号:"<<num<<endl;}};int main(){student s[3]={student(1001,"张三",25,'f'),student(1002,"李四",24,'m')};{s[i].display();cout<<endl;}student *p;p=new student(1003,"王五",23,'f');p->display();cout<<endl;delete p;return 0;}10、#include<iostream>#include <string>using namespace std;class student{private:int num;string name;int age;char sex;public:student(int num=0,string name="",int a=18,int s='f') {cout<<"调用构造函数 num="<<num<<endl;this->num=num;this->name=name;age=a;sex=s;}student(student& s){num=s.num;name=;age=s.age;sex=s.sex;}void display(){cout<<"学号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}~student(){cout<<"析构函数学号:"<<num<<endl;};int main(){student s1(1001,"张三",25,'f');student s2(s1);s1.display();s2.display();return 0;}11、#include<iostream>#include <string>using namespace std;class student{private:int num;string name;float score;static float sum;static int count;public:student(int num=0,string name="",float s=80) {this->num=num;this->name=name;score=s;count++;}void display(){cout<<"学号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"成绩:"<<score<<endl;}void total();static float average();};float student::sum=0.0;int student::count=0;void student::total(){sum+=score;}float student::average(){return sum/count;int main(){student s[3]={student(1001,"张三",87),student(1002,"李四"),student(1003,"王五",90)};for (int i=0;i<3;i++){s[i].total();}cout<<"平均成绩:"<<student::average()<<endl;return 0;}12、#include<iostream.h>// #include <string>// using namespace std;class Time{private:int hour;int minute;int second;public:Time(int h=12,int m=0,int s=0){hour=h;minute=m;second=s;}friend void display(Time&);};void display(Time& t){cout<<t.hour<<"时"<<t.minute<<"分"<<t.second<<"秒"<<endl;}int main(){Time t,t1(13,12,22);display(t);display(t1);return 0;}13、(1)//方法1:多次重载+#include<iostream.h>// #include <string>// using namespace std;class Complexprivate:float real;float image;public:Complex(float real,float image){this->real=real;this->image=image;}Complex(){real=0;image=0;}friend Complex operator+(Complex &a,Complex &b);friend Complex operator+(Complex &a,float b);friend Complex operator+(float a,Complex &b);friend ostream& operator<<(ostream& output,Complex a); friend istream& operator>>(istream& input,Complex a); };Complex operator+(Complex &a,Complex &b){return Complex(a.real+b.real,a.image+b.image);}Complex operator+(Complex &a,float b){return Complex(a.real+b,a.image);}Complex operator+(float a,Complex &b){return Complex(b.real+a,b.image);}ostream& operator<<(ostream& output,Complex a){if (a.image>0){output<<a.real<<"+"<<a.image<<"i"<<endl;}else{output<<a.real<<a.image<<"i"<<endl;}return output;}istream& operator>>(istream& input,Complex a){input>>a.real>>a.image;}int main(){Complex a(3,4),b(1,2),c,d,e,f;c=a+b;d=a+5;e=3+b;cout<<c<<endl;cin>>f;cout<<f<<endl;return 0;}//方法2:使用转换构造函数实现#include<iostream.h>class Complex{private:float real;float image;public:Complex(float real,float image){this->real=real;this->image=image;}Complex(){real=0;image=0;}//定义转换构造函数Complex(float r){real=r;image=0;}friend Complex operator+(Complex &a,Complex &b);friend ostream& operator<<(ostream& output,Complex a); friend istream& operator>>(istream& input,Complex a); };Complex operator+(Complex &a,Complex &b){return Complex(a.real+b.real,a.image+b.image);}ostream& operator<<(ostream& output,Complex a){if (a.image>0)output<<a.real<<"+"<<a.image<<"i"<<endl;}else{output<<a.real<<a.image<<"i"<<endl;}return output;}istream& operator>>(istream& input,Complex a) {input>>a.real>>a.image;return input;}int main(){Complex a(3,4),b(1,2),c,d,e,f;c=a+b;d=a+5;e=3+b;cout<<c<<endl;cin>>f;cout<<f<<endl;return 0;}(2)#include <iostream>using namespace std;class Time{public:Time(){minute=0;sec=0;}Time(int m,int s):minute(m),sec(s){}Time operator++();Time operator++(int);void display(){cout<<minute<<":"<<sec<<endl;} private:int minute;int sec;};Time Time::operator++(){if(++sec>=60){sec-=60;++minute;}return *this;}Time Time::operator++(int){Time temp(*this);sec++;if(sec>=60)++minute;}return temp;}int main(){Time time1(34,59),time2;cout<<" time1 : ";time1.display();++time1;cout<<"++time1: ";time1.display();time2=time1++;cout<<"time1++: ";time1.display();cout<<" time2 : ";time2.display();return 0;}14、#include<iostream>#include <string>using namespace std;class Date{private:int year;int month;int day;public:Date(int y=2013,int m=1,int d=1){year=y;month=m;day=d;}void display(){cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}};class person{private:string name;int age;char sex;public:person(string n,int a,char s)age=a;sex=s;}void display(){cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}};class student:public person{public:student(string n,int a,char s,string maj,int y,int m,int d ):person(n,a,s),enterdate(y,m,d){major=maj;}void display(){person::display();cout<<"专业:"<<major<<endl;cout<<"入学日期:";enterdate.display();}private:string major;Date enterdate;//入学日期};int main(){student s("张三",20,'f',"通信",2012,9,6);s.display();return 0;}15、#include<iostream>#include <string>using namespace std;class Date{private:int year;int month;int day;public:Date(int y=2013,int m=1,int d=1)month=m;day=d;}void display(){cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}};class person{private:string name;int age;char sex;public:person(string n,int a,char s){name=n;age=a;sex=s;}void display(){cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}};class student:public person{public:student(string n,int a,char s,string maj,int y,int m,int d ):person(n,a,s),enterdate(y,m,d){major=maj;}void display(){person::display();cout<<"专业:"<<major<<endl;cout<<"入学日期:";enterdate.display();}private:string major;Date enterdate;//入学日期class teacher:public person{public:teacher(string n,int a,char s,string t,float w):person(n,a,s) {title=t;wage=w;}void display(){person::display();cout<<"职称:"<<title<<endl;}private:string title;float wage;};int main(){student s("张三",20,'f',"通信",2012,9,6);s.display();teacher t("李四",30,'m',"讲师",3000);t.display();return 0;}16、#include<iostream>#include <string>using namespace std;class Date{private:int year;int month;int day;public:Date(int y=2013,int m=1,int d=1){year=y;month=m;day=d;}void display(){cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}};class personprivate:string name;int age;char sex;public:person(string n,int a,char s){name=n;age=a;sex=s;}void display(){cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"性别:"<<sex<<endl;}};class student:virtual public person{public:student(string n,int a,char s,string maj,int y,int m,int d ):person(n,a,s),enterdate(y,m,d){major=maj;}void display(){person::display();cout<<"专业:"<<major<<endl;cout<<"入学日期:";enterdate.display();}private:protected:string major;Date enterdate;//入学日期};class teacher:virtual public person{public:teacher(string n,int a,char s,string t,float w):person(n,a,s){title=t;wage=w;}void display()person::display();cout<<"职称:"<<title<<endl;}private:protected:string title;float wage;};class graduate:public student,public teacher{public:graduate(string n,int a,char s,string maj,int y,int m,int d,string t,float w,string g):person(n,a,s),student(n,a,s,maj,y,m,d),teacher(n,a,s,t,w){grade=g;}void display(){person::display();cout<<"专业:"<<major<<endl;cout<<"入学日期:";enterdate.display();cout<<"职称:"<<title<<endl;cout<<"年级:"<<grade<<endl;}protected:private:string grade;};int main(){student s("张三",20,'f',"通信",2012,9,6);s.display();teacher t("李四",30,'m',"讲师",3000);t.display();graduate g("王五",28,'f',"计算机",2008,9,6,"助教",1500,"研二");g.display();return 0;}17、#include<iostream>#include <string>using namespace std;class Shape{public:virtual void area()=0;};{public:Circle(double r):radius(r){}virtual void area(){cout<<"Circle area:"<<3.1415*radius*radius<<endl;}protected:double radius;};class Square:public Shape{public:Square(double s):side(s){}virtual void area(){cout<<"Square area:"<<side*side<<endl;}protected:double side;};class Rectangle:public Shape{public:Rectangle(double w,double h):width(w),height(h){}virtual void area(){cout<<"Rectangle area:"<< width*height<<endl;}protected:double width,height;};class Trapezoid:public Shape{public:Trapezoid(double t,double b,double h):top(t),bottom(b),height(h){} virtual void area(){cout<<"Trapezoid area:"<<0.5*(top+bottom)*height<<endl;}protected:double top,bottom,height;};class Triangle:public Shape{public:Triangle(double w,double h):width(w),height(h){}virtual void area(){cout<<"Triangle area:"<< 0.5*width*height<<endl;}protected:double width,height;};int main(){Circle cirle(12.6);Square square(3.5);Rectangle rect(4.5,8.4);Trapezoid trape(2.0,4.5,3.2);Triangle tria(4.5,8.4);Shape *p;p=&cirle;p->area();p=&square;p->area();p=&rect;p->area();p=&trape;p->area();p=&tria;p->area();return 0;}。

相关文档
最新文档