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

合集下载

c++面向对象程序设计语言重点难点复习题及答案-整理

c++面向对象程序设计语言重点难点复习题及答案-整理

obj1.get( 10, 20, 30, 40 ); obj2.get( 30, 40, 50, 60 ); obj1.print(); obj2.print(); } 【解答】 a = 50 a = 10 a = 30 u = 120 b = 60 b = 20 b = 40 v = 70 x = 70 x = 30 x = 50 y = 80 y = 40 y = 60
6.不论派生类以何种方式继承基类,都不能直接使用基类的( (a) public 成员 (c) protected 成员 7.下面描述中,错误的是( d )。 (b) private 成员 (d) 所有成员
(a) 在基类定义的 public 成员在公有继承的派生类中可见,也能在类外被访问。 (b) 在基类定义的 protected 成员在私有继承的派生类中可见。 (c) 在基类定义的公有静态成员在私有继承的派生类中可见。 (d) 访问声明可以在公有继承派生类中把基类的 public 成员声明为 private 成员。 8.在 c++中,可以被派生类继承的函数是( (a) 成员函数 (b)构造函数 a )。 (d)友员函数 )。
(d) 友员
4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的 ( b )。 (a) public 成员 (b) private 成员 (c) protected 成员 (d) 友员
5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的 ( c )。 (a) public 成员 (b) private 成员 (c) protected 成员 b )。 (d)友员
2.#include<iostream> using namespace std; class Base1 { public : Base1( int i ) { cout << "调用基类Base1的构造函数:" << i << endl ; } }; class Base2 { public: Base2( int j ) { cout << "调用基类Base2的构造函数:" << j << endl ; } }; class A : public Base1, public Base2 { public : A( int a, int b, int c, int d ) : Base2(b), Base1(c), b2(a), b1(d) { cout << "调用派生类A的构造函数:" << a+b+c+d << endl; } private : Base1 b1 ; Base2 b2 ; } ; int main() { A obj( 1, 2, 3, 4 ); } 【解答】 调用基类 BASE1 的构造函数:3 调用基类 BASE2 的构造函数:2

C++面向对象技术复习题汇总(含答案)

C++面向对象技术复习题汇总(含答案)

C++面向对象技术复习题汇总(含答案)面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。

A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’; B、name=”lin”;C、name=new char[5]; D、cout<<name[3];< bdsfid="94" p=""></name[3];<>7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板()templateT max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin>>x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y) {…… }(2) int f(int a,float b){…… }(3) int f(int i,int j){…… }(4) float k(int x){…… }是重载函数。

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

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

语法扩充选择题在C++中用(D )能够实现将参数值带回。

a)数组b)指针c)引用d)上述ABC都可考虑函数原型void test(int a,int b=7,char *ch="*"), 下面的函数调用中,属于不合法调用的是:( C )A) test(5) B)test(5,8) C)test(6,"#") D)test(0,0,"*") ;已知: int m=10 ;下列表示引用的方法中,正确的是:( C )A)int &Z ;B)int &t=10 ;C)int &X=m;D)float &f=&m ;下列不是函数重载所要求的条件是:( D )A)函数名相同B)参数个数不同C)参数类型不同D)函数返回值类型不同在C+冲执行以下4条语句后输出rad值为:(C ) static int hot=200 ;int &rad=hot ;hot=hot+100 ;cout<<rad<<endl ;A) 0 B) 100 C) 300 D) 200 系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:( D )A)参数个数B)参数类型C)函数名称D)函数的返回值类型对C++语言和C语言的兼容性,描述正确的是:(A )A)C++t容C B)C++部分兼容C C)C++不兼容C D)C兼容C++在C++中使用流进行输入输出,其中用于屏幕输出的对象是:(C )A)cerr B)cin C)cout D)cfile 对使用关键字new 所开辟的动态存储空间,释放时必须使用( C )A)free B)create C)delete D)realse 在函数调用时,如某一默认参数要指明一个特定值,则有( A )A)其之前所有参数都必须赋值B)其之后所有参数都必须赋值C)其前、后所有参数都必须赋值D)其前、后所有参数都不必赋值下列哪个类型函数不适合声明为内联函数( A )A)函数体语句较多B)函数体语句较少C)函数执行时间较短D)函数执行时间过长int Func(int ,int) ;不可与下列哪个函数构成重载( B )A)int Func(int ,int,int) ;B)double Func(int ,int) ;C)double Func(double,double) ;D)double Func(int ,double);下面的哪个保留字不能作为函数的返回类型( C )A)void B)int C)new D)long 一个函数功能不太复杂,但要求被频繁调用,选用( A )。

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

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

面向对象程序设计复习题二一、填空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、重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。

总《面向对象程序设计c++》综合复习题集及答案详解

总《面向对象程序设计c++》综合复习题集及答案详解

总《面向对象程序设计c++》综合复习题集及答案详解一、单选题1. C++源程序文件的缺省扩展名为( A )。

A. cppB. exeC. objD. lik2. 由C++源程序文件编译而成的目标文件的缺省扩展名为( C )。

A. cppB. exeC. objD. lik3. 由C++目标文件连接而成的可执行文件的缺省扩展名为( B )。

A. cppB. exeC. objD. lik 4. 编写C++程序一般需经过的几个步骤依次是( )。

A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接5. 以下标识符中不全是保留字的是()。

A. case for intB. default then whileC. bool class longD. gotoreturn char6. 能作为C++程序的基本单位是( )。

A. 字符B. 语句C. 函数D. 源程序文件 7. 程序中主函数的名字为()。

A. mainB. MAINC. MainD. 任意标识符 8. C++程序的基本模块为()。

A. 表达式B. 标识符C. 语句D. 函数 9. 可用作C++语言用户标识符的一组标识符是( )。

A. void define +WORDB. a3_b3 _123 YNC. for -abcCase D. 2a DO sizeof10. 存储以下数据,占用存储字节最多的是()。

A. 0 B. ‘0’C. “0”D. 0.0 11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。

A. 空格或逗号B. 逗号或回车C. 逗号或分号D. 空格或回车12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。

A. 12B. 144C. 156D. 28813. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是( )。

C++面向对象程序设计(试题与答案)

C++面向对象程序设计(试题与答案)

模拟试题(1)一、判断对错题(10%)(对√,错×)()1.自动变量用堆方式创建,它与块共存亡。

()2.运算符+=是右结合的。

()3.表达式cout<<99的类型为int。

()4.++i是左值,但i++不是左值。

()5.Y[I][J]与*(*Y+I)+J不等价。

()6.从外部看类的private 成员和protected成员有区别。

()7.运算符&不可以重载。

()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。

()9.2.0/-3.0是一个正确的表达式。

()10.字符'\12'的ASCII为12。

二、填空题(20%)#include <iostream.h>typedef struct node{long data;node * next;};class stack{private:node * head;①__________stack();~stack();void push (②__________);③__________ pop();④__________ print();};stack::stack(){ head = new ⑤__________head->next = ⑥__________ }stack::~stack(){node * p;p = head;while (p){head = head->next;⑦__________p = head;}}void stack::push(long x){node * p = new node;p->data = x;p->next = head->next;⑧__________ = p;cout<<"Push" <<x<<" ok !"<<endl;}long stack::pop(){node *p = head->next;if(p!=NULL){long x = p->data;head->next = p->next;⑨__________cout<<"pop "<<x<<" ok !"<<endl;return x;}elsecout<<"Stack is empty !"<<endl;return 0;}void stack::print(){node * p = head->next;cout<<"Stack_Top"<<endl;while (p){cout<<p->data<<endl;⑩__________;}cout<<"Stack_bottom"<<endl;}三、简答题(20%)(按条列出论点)1.注解。

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

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

一、单选题(每小题1分,共30分)1.在MyEclipse中,()视图可以将项目中包含的文件及层次结构展示出来。

CA) Package B)Declaration C)Navigator D) Console2.下列标识符中,正确的是()。

CA)class B) 123_rr C) _lei D) test&123.下列的()选项可以正确用以表示八进制值8。

0x代表16进制,0代表8进制 D A)0x8 B)0x10 C)08 D)0104.以下哪个不是Java的原始数据类型()DA) int B) boolean C) float D) Char引用数据类型5.下列有关Java布尔类型的描述中,正确的是()AA)一种基本的数据类型,它的类型名称为booleanB)用int表示类型C)其值可以赋给int类型的变量D)有两个值,1代表真,0代表假6.在Java中,不属于整数类型变量的是( ) AA) double 浮点型B) long C) int D) byte7.以下do-while语句构成的循环执行次数是()。

Bint k=0;do { ++k ;}while(k<1);A) 一次也不执行B) 执行1次C) 无限次D) 有语法错误,不能执行8.表达式(1/0<1)&& (12==0) 的值为()。

逻辑运算结果只有true和false两种 BA) true B) false C) 0 D) 运行时抛出异常9.以下()表达式不可以作为循环条件 AA) i=5 B )i<3 C) count==i D) bEqual=str.equals("q") 10.下列数组初始化正确的是() DA) int score[5] = {90,12,34,77,56};B) int[5] score = new int[];C) int[] score = new int[5]{90,12,34,77,56};D) int score[] = new int[]{90,12,34,77,56};11.若有定义:byte[] x={11,22,33,-66};其中0≤k≤3,则对x数组元素错误的引用是() CA) x[5-3] B) x[k] C) x[k+5] D) x[0]12.以下代码的输出结果是()。

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

面向对象程序设计复习题及参考答案
则类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");

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

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

Java面向对象程序设计复习题一、选择题1、下列哪个是Java中的关键字(C )。

A、runB、IntegerC、defaultD、implement2、下面关于Java.applet.Applet和其祖先类的描述语句哪个不对(B )。

A、Applet是Container的一种B、Applet是Window的一种C、Applet是Component的一种D、Applet是Panel的一种3、下列类DataOutputStream的构造方法正确的是(A )。

A、new dataOutputStream(new FileOutputStream(“out.txt”));B、new dataOutputStream(“out.txt”);C、new dataOutputStream(new writer(“out.txt”));D、new dataOutputStream(new FileWriter(“out.txt”));4、在switch(表达式)语句中,表达式的类型不能为(C )。

A、byteB、charC、longD、int5、在接口MouseMotionListener中方法正确的是(A )。

A、Public void mouseDragged(MouseEvent)B、Public boolean mouseDragged(MouseEvent)C、Public void mouseDragged(MouseMotionEvent)D、Public boolean MouseDragged(MouseMotionEvent)6、下面是一些异常类的层次关系ng.Exceptionng.RuntimeExceptionng.IndexOutOfBoundsExceptionng.ArrayIndexOutOfBoundsExceptionng.StringIndexOutOfBoundsException假设有一个方法X,能够抛出两个异常,Array Index和String Index异常,假定方法X中没有try-catch语句,下面哪个答案是正确的。

面向对象程序设计复习总结题(含部分答案)

面向对象程序设计复习总结题(含部分答案)

《面向对象程序设计》复习要点及复习题(一)复习要点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)函数。

面向对象程序设计复习题

面向对象程序设计复习题

面向对象程序设计复习题概念填空题1.运算符能够用来访问与局部变量同名的全局变量。

2.运算符动态分配一个对象。

3.类的成员只能被该类的成员函数或友元函数访问。

4.类成员的默认访问模式是的。

5.类的数据成员是该类的所有对象共享的信息。

6.关键字指定了不可修改的对象或变量。

7.要在类的对象上使用运算符,除了运算符和外,其它的必须都要被重载。

8.重载不能改变原运算符的、、和对内部类型对象的原有含义。

9. 类的对象可作为类的对象处理。

10.友元函数中可以直接访问类的和成员。

1l.公有成员函数的集合常称为类的函数。

私有成员函数的集合常称为类的函数。

12.为了访问某个类的私有数据成员,必须在该类中声明该类的。

13. 提供了一种描述通用类的方法。

14.运算new分配的内存要用运算符回收。

15.参数表示重载后缀 ++ 运算符函数。

16.当用受保护的继承从基类派生一个类时,基类的公有成员成为派生类的的成员,基类的受保护成员成为派生类的成员。

17.在C++中,关键字、和用来建立新的数据类型。

18. 限定符用来声明只读变量。

19.函数能够定义一个在不同数据类型基础上完成同一任务的函数。

20.指向基类对象的指针可以指向其派生类的对象,但是不允许指向其派生类的对象。

答案:1:: 2 new 3私有和保护4私有5静态6const 7=& 8 优先级结合性操作数个数9派生类基类10 私有受保护11 接口工具12 友元13 类模板14 delete 15 int 16受保护受保护17class struct union 18 const 19模板20公有私有和保护阅读程序写结果1.#include <iostream.h>void main(){int a(6),b(8),c;c=(a>b?++a:b-=2);cout<<a<<','<<b<<','<<c<<endl;c=(a-b?a+b:a-6?b:a-6);cout<<a<<','<<b<<','<<c<<endl;}输出结果:答案:输出结果:6,6,66,6,02.#include <iostream.h>void main(){int i,j;for(i=11; i<=20 ; i+=2){for(j=2;j<i;j++)if(i%j==0)break;if(j!=i)cout<<i <<" ";}cout<<endl;}输出结果:答案:12 14 15 16 18 3.#include <iostream.h>#include <iostream.h>int f(int p);void main(){int a[]={1,2,3,4,5};for(int i=0;i<5;i++)cout<<f(a[i])<<" ";cout<<endl;}int f(int p){static int s=1;s*=p;return s;}输出结果:答案:1 2 6 24 1204.#include <iostream.h>int f(int *p);void main(){int a[]={1,2,3,4,5}for(int i=0;i<4;i++)cout<<f(a+i)<<”“;cout<<endl;}int f(int *p){static int s=0;s+=*p;return s;}输出结果:答案:1 3 6 10 15 4.#include <iostream.h>void main(){int a[5],x,i=0;do{cin>>x;if(x%2==0){a[i]=x;i++;}}while(i<5);for(i=0;i<5;i++)cout<<a[i]<<" ";cout<<endl;}输入:1 6 5 82 0 7 10输出结果:答案:6 8 2 0 105.#include <iostream.h> class myclass{int a,b;static int s;public:myclass(int i, int j){a=i; b=j;cout<<"Constructor.\n";}~myclass(){cout<<"Destructor.\n";}void sum(){ s+=a*b; }void print(){cout<<a<<","<<b<<”sum=”<<s<<endl;}};int myclass::s =0;void main(){myclass *a1, *a2;a1=new myclass(1,1);a2=new myclass(10,20);(*a1).sum();(*a2).sum();a1->print();a2->print();delete a1;delete a2;}输出结果:答案:Constructor.Constructor.1,1 sum=20110,20 sum=201Destructor.Destructor.6.#include <iostream.h>{int a,b;for(a=1,b=1;b<=10;b++){if(a>=10)break;if(a==1){a+=3;continue;}a-=3;}cout<<"a="<<a<<"b="<<b<<endl;}输出结果:答案:a=1b=117.#include <iostream.h>class A{private:int a,b;public:A(int i, int j){ a=i; b=j; }void move(int m,int n){a+=m;b+=n;}void show(){cout<<"("<<a<<","<<b<<")"<<endl;}};class B: public A{private:int x,y;public:B(int i, int j,int k,int l):A(i,j){ x=k; y=l; }void show(){ cout<<x<<","<<y<<endl; }void fun(){move(30,50);}void f1(){A::show();}};void main(){A e(10,20);e.show ();B b(30,40,50,60);b.fun ();b.show();b.f1();}输出结果:答案:(10,20)50,60(60,90)8. #include <iostream.h>class B{private:int Y;public:B(int y=0) { Y=y; cout<<″B(″<<y<<″)\n″; }~B() { cout<<″~B()\n″;}void print() { cout <<Y<< ″″; }} ;class D: public B{private:int Z;public:D (int y, int z):B(y){ Z=z;cout<<″D(″<<y<<″,″<<z<<″)\n″;}~D() { cout<<″~D()\n″; }void print() {B∶∶print();cout <<Z<<endl;}};void main(){ D d(11,22);d.print();}输出结果:答案:B(11)D(11,22)112~D()~B()9.#include <iostream.h>#include <iomanip.h>void main(){int i,j,k;for(i=1;i<=3;i++) //控制输出行{for(j=1; j<=6-i; j++) //每行前的空格cout<<" "; //输出四个空格for(k=1;k<=i;k++)cout<<setw(4)<<k;for(k=i-1; k>0 ;k--)cout<<setw(4)<<k;cout<<endl;}}输出结果:答案:11 2 11 2 3 2 110. #include <iostream.h>class A{private:double X,Y;public:A(double xx=0, double yy=0){ X=xx; Y=yy;cout<<″构造函数被调用(″<<X<<″,″<<Y<<″)″<<endl;}A(A &p) { X=p.X; Y=p.Y; }};A f(){ A a(1,2);return a;}void main(){ A a(4,5); A b(a);b = f();}输出结果:答案:构造函数被调用(4,5)构造函数被调用(1,2)11.#include <iostream.h>class Areaclass{public:Areaclass(double x=0,double y=0){height=x;width=y;}protected:double height;double width;};class Box: public Areaclass{public:Box(double h,double w):Areaclass (h,w){ }double Area();};class Triangle:public Areaclass{public:Triangle(double h,double w):Areaclass(h,w){ }double Area( );};double Box::Area(){ return height*width; }double Triangle::Area(){ return width *height *0.5; } void main(){Box obj1(2.5,4.0);Triangle obj2(4.0,3.5);cout<<"Box="<<obj1.Area()<<endl;cout<<"Triangle="<<obj2.Area()<<endl;}输出结果:答案:Box=10Triangle=712. #include<iomanip.h>void main(){ int a[9]={1,2,3,4,5,6,7,8,9};for(int i=0; i<9; i++) {cout << setw(4) << a[i];if(i%3==2)cout<<endl;}}输出结果:答案:1 2 34 5 67 8 913. #include <iostream.h>template <typename T>void print(T a[],int n ){ for(int i=0; i<n; i++){ cout<<a[i]<<″″;if (i%5==4)cout<<endl;}cout<<endl;}void main(){int a[]={1, 2, 3, 4, 5, 6, 7};double b[4]={8, 9, 10, 11 };print(a,sizeof(a)/sizeof(int));print(b,4);}输出结果:答案:1 2 3 4 56 78 9 10 1114. #include <iostream.h>class A{private:static int n;int X;public:A(int x=0) { X=x; n++; }~A() { n-- ; }static int GetNum(){ return n; }void print();};void A∶∶print() { cout << ″n=″<< n << ″, X=″<< X<< endl; } int A∶∶n = 0;void main(){ A *p=new A(12);p->print();A a(34);a.print();delete p;cout << ″n=″<< A::GetNum() << endl;}输出结果:答案:n=1,X=12n=2,X=34n=115. #include <iostream.h>void main(void){ int n=6, k;cout << n << " Factors ";for (k=2; k < n; k++)if (n % k == 0)cout << k << " ";cout << endl;}输出结果:答案:6 Factors 2 316. #include <iostream.h>class myclass{private:int x,y;static long sum;public:myclass(int a,int b) { x=a;y=b;}void getxy(){sum*=x*y;cout<<"sum="<<sum<<endl;}};long myclass::sum=1;void main(){myclass ob1(1,3);ob1.getxy();myclass ob2(2,4);ob2.getxy();myclass ob3(5,6);ob3.getxy();}输出结果:答案:sum=3sum=24sum=72017.#include<iostream.h>#include<string.h>void main(){int i;char *max, str[3][10]={"Wang","Zhang","Li"};max=str[0];for(i=0;i<3;i++)if(strcmp(max,str[i])<0)max=str[i];cout<<"The max string is: "<<max<<endl;}输出结果:答案:The max string is: Zhang三、程序填空1.菲波纳齐数列为:1,1,2,3,5,8,13,……;下面是实现计算该数列前10项的程序,请在空白处填入合适的内容。

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

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

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

[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程序时使用的命令是()。

面向对象程序设计考试模拟题含参考答案

面向对象程序设计考试模拟题含参考答案

面向对象程序设计考试模拟题含参考答案一、单选题(共50题,每题1分,共50分)1、下列数据结构中,哪一个是ArrayList类的底层实现()A、数组结构B、链表结构C、哈希表结构D、红黑树结构正确答案:A答案解析:ArrayList的底层是数组实现的。

2、Java属于以下哪种语言()A、机器语言B、汇编语言C、高级语言D、以上都不对正确答案:C答案解析:Java是一门高级编程语言。

3、下面关于path和classpath的说法中,错误的是()A、path用来指定java虚拟机(JVM)所在的目录B、classpath用来指定我们自己所写的或要用到的类文件(.jar文件)所在的目录C、在dos命令行中,classpath和path环境变量的查看与配置的方式不相同D、只要设置了classpath这个环境变量系统就不会再在当前目录下查询某个类正确答案:C答案解析:classpath和path环境变量的查看与配置的方式完全相同,都是通过 set关键字实现的。

4、若double val = Math.ceil(-11.9);,则val的值是()A、11.9B、-11.0C、-11.5D、-12.0正确答案:B答案解析:ceil是天花板的意思,表示向上取值,永远是得到大于参数的最小整数。

5、下列集合中,不属于Collection接口的子类的是()A、ArrayListB、LinkedListC、TreeSetD、Properties正确答案:D答案解析:Properties集合属于Map集合的子类。

6、下列关于类与对象的说法中,错误的是()A、类是对某一类事物的抽象描述,而对象则是该类事物的个体。

B、对象是类的实例化。

C、类用于描述多个对象的共同特征,它是对象的模板。

D、类与对象没有什么实际关系。

正确答案:D答案解析:对象是通过类来创建的。

7、下列关于List接口的描述中,错误的是()A、List接口继承自Collection接口,是单列集合。

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

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

网络數谋程考试复习题及参考答案面向对象程序设计一、填空题: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)。

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

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

简答题1、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述精确。

(2)对每一子过程模块简单进行程序正确性证明。

缺点:(1)这种程序设计方法本质上是面对“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能干脆反映人类求解问题的思路。

(2)程序代码可重用性差。

程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。

即使重用代码,通常也是通过拷贝或编辑重新生成一份。

(3)维护程序的一样性困难。

该种方法将数据与对数据进行处理的程序代码分别。

2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。

对象的属性描述了对象的状态和特征,对象的方法说明白对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。

3、什么是消息?在面对对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。

当一个对象须要另外一个对象供应服务时,它向对方发出一个服务恳求,而收到恳求的对象会响应这个恳求并完成指定的服务。

这种向对象发出的服务恳求就称为消息。

4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,根据接收消息对象的不同能够自动执行类中相应的方法。

其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大便利。

5、什么是面对对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。

在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法确定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。

6、面对对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。

由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更困难的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的变更对整个系统几乎没有影响。

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

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

《面向对象程序设计》复习题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基础上新增加一个复制构造函数,并主函数新增复制构造对象。

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

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

一、单项选择题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、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述准确。

(2)对每一子过程模块容易进行程序正确性证明。

缺点:(1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。

(2)程序代码可重用性差。

程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。

即使重用代码,通常也是通过拷贝或编辑重新生成一份。

(3)维护程序的一致性困难。

该种方法将数据与对数据进行处理的程序代码分离。

2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。

对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。

3、什么是消息?在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。

当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。

这种向对象发出的服务请求就称为消息。

4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。

其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。

5、什么是面向对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。

在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。

6、面向对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。

由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。

(2)引入了“类”(class)的概念。

类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。

(3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。

7、面向对象的程序设计方法与结构化程序设计方法的比较(1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。

(2)面向对象程序设计方法中,对象所具有的封装性和继承性使得代码重用成为可能,并大大减少了程序出错的可能性。

(3)面向对象方法吸收了结构化程序设计方法的优点,同时引入了新概念、新机制并建立了比传统方法更高层次的抽象。

二、选择题略三、填空题(1)类是一个支持集成的抽象数据类型,而对象是类的【1】。

【参考答案】【1】实例(2)在C++语言的面向对象程序设计框架中,【2】是程序的基本组成单元。

【参考答案】【2】类(3)C++语言程序的注释可以出现在程序中的任何地方,一个注释以【3】作为开始和结束的标记。

【参考答案】【3】/* */(4)以下程序的输出结果是【4】。

#include "iostream.h"void fun(){ static int a;a+=2;cout << a << " "; }void main(){ int cc;for(cc=1;cc<4;cc++)fun();cout << endl;}【参考答案】【4】2 4 6(5)下列程序在构造函数和析构函数中申请和释放类的数据成员int *a,申请时使用形参b初始化a,请填空。

class A{ public:A(int b);~A();private:int *a; };A::A(int b){ 【5】; }A::~A(){ 【6】; }【参考答案】【5】a = new int(b); 【6】delete a6. 多态性与【7】和【8】共同构成面向对象程序设计的三大机制。

【参考答案】【7】数据封装【8】继承(7)将x+y*z中的"+"用成员函数重载,"*"用友元函数重载应写为【9】。

【参考答案】【9】x. operator+(operator*(y,z))(8)派生类的成员一般分为两部分,一部分是【10】,另一部分是自己定义的新成员。

【参考答案】【10】从基类继承的成员(9)以下程序输出的结果是【11】。

#include "iostream.h"void main(){int a=5,b=4,c=3,d;d=(a>b>c);cout<<d; }【参考答案】【11】0(10)如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是【12】。

【参考答案】【12】friend void A( );(11)如果类B继承了类A,则称类A为类B的基类,类B称为类A的【13】。

【参考答案】【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;} };void main(){ Aa1;【15】【16】【17】a1.display(); }【参考答案】【15】a1.x=1 【16】a1.y=2 【17】a1.z=3(14)下列程序段的输出结果是【18】。

cout << fixed << 509.123456789 << endl;【参考答案】【18】509.123457四、综合应用题1. 使用VC6打开考生文件夹下的工程kt15_3。

此工程包含一个kt15_3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。

上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。

(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。

请在注释“//**1**”之后添加适当的语句。

(2)定义类A1的构造函数,该构造函数有两个整型参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。

请在注释“//**2**”后添加适当的语句。

(3)定义类A2的构造函数,该构造函数有三个整型的参数x,y和z,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。

请在注释“//**3**”之后添加适当的语句。

(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。

请在注释“//**4**”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

程序输出结果如下:96962源程序文件kt15_3.cpp清单如下:#include<iostream.h>classA{ inta;public://**1**intgeta(){returna;} };classA1:publicA{ intb;public://**2**intgetb(){returnb;} };classA2:publicA1{ intc;public://**3**voidshow(){ //**4** } };voidmain(){ A2a(2,6,9);cout<<a.geta()<<endl;cout<<a.getb()<<endl;;a.show(); }【参考答案】(1)A(int x) {a=x;}(2)A1(int x,int y) : A(y){b=x;}(3)A2(int x,int y,int z):A1(y,z){c=x;}(4)cout<<geta()<<" "<<getb()<<" ";cout<<c<<"n";五、阅读程序题(写出程序运行结果)1 .#include <iostream.h>#include <string.h>class Student{ public:Student(char *pName="No name"){ cout<<"构造新同学:"<<pName<<endl;strncpy(name, pName, sizeof(name));name[sizeof(name)-1]='\0';}Student(Student &s){ cout<<"构造copy of "<<<<endl;strcpy(name, " copy of ");strcat(name,);}~Student(){ cout<<"析构"<<name<<endl; }protected:char name[40]; };class Tutor{ public:Tutor(Student &s):student(s){ cout<<"构造指导教师\n"; }protected:Student student;};void main(){ Student st1;Student st2("zhang");Tutor tutor(st2);}2. #include "iostream.h"class B1{protected:int b1;public:B1(int val1){ b1=val1;cout<<"base1 is called"<<endl; } };class B2{ protected:int b2;public:B2(int val2){ b2=val2;cout<<"base2 is called"<<endl; }};class D: public B1,public B2{protected:int d;public:D(int val1, int val2, int val3);};D::D(int val1, int val2, int val3):B1(val1),B2(val2) { d=val3;cout<<"derived class is called";}void main(){ D dobj(1,2,3); }3. # include <windows.h># include <iostream.h>class married{private:int number;char *name;public:static int glob;void set_mes (char *a);} ;void married :: set_mes (char *a){name = new char[strlen(a) + 1] ;strcpy (name, a) ;number=++glob;cout << " 编号:"<<number<<endl;}int married :: glob= 0 ;void main (){ married person[100];int i ;char str[8] ;cout<<endl;for ( i=0; i<3; i++){ cout << " 输入姓名:"; cin >> str ;person[i].set_mes ( str ) ; }cout<<endl;}假定输入zhang↙wang↙li↙请写出程序的结果。

相关文档
最新文档