当前位置:文档之家› 面向对象程序设计作业

面向对象程序设计作业

面向对象程序设计作业
面向对象程序设计作业

C++程序设计

第一次作业

一、问答题

1、什么是面向对象程序设计?面向对象程序设计的优点是什么?

2、什么是类?什么是对象?它们之间关系如何?

3、C++的主要特点有哪些?

4、什么叫函数重载?什么叫运算符重载?请书写一个函数重载的程序例子,分别计算

圆、矩形、三角形的图形面积。

5、使用内联函数的优点是什么?如何将函数说明为内联函数?

6、构造函数和析构函数的主要特点各是什么?

7、什么是this指针?它的主要作用是什么?

8、什么是拷贝构造函数?在哪三种情形下会触发拷贝构造函数的执行?

9、什么是友元函数?使用它有什么好处?

10、什么情况下需要预约存贮空间?试解释下列程序每一语句的含义。

float *p;

p=new float[10];

for( int i=0;i<=9;i++,p++)*p=i;

11、如果要释放上一题中指针p所指的空间,应如何操作?

二、程序设计题

(1)建立一个三角形类tri,有三个私有数据a,b,c,设计一个缺省的3参数构造函数,缺省值分别为3,3,3,再设计一个成员函数showarea,当参数能组成

三角形时输出面积值,否则输出-1。

(2)建立一个类book,有二个私有的数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1,2,3,4,5,将price初始化为qu的10倍,并

设计一个成员函数disp,输出每个对象的qu*pricer的值。

(3)有一个向量类vector,包括一个点的坐标位置x和y,设计二个友元函数,实现两个向量的加法和减法运算。

(4)编写一个程序,设计一个类score,用于统计一个班的学生成绩,其中使用一个静态数据成员sumfs存储总分和一个静态成员函数rsumf()返回该总分。

三、分析题

请仔细阅读下列程序,回答问题。

1: #include

2: class exam{

3: int i;

4: public :

5: exam(int n){i=n;cout<<"constructing...\n";}

6: ~exam(){cout<<"destructing...\n";}

7: int get_i(){return i;}

8: };

9: int sqr_it(exam s)

10: {

11: return s.get_i()*s.get_i();

12: }

13: void main()

14: {

15: exam x(11);

16: cout<

17: cout<

18: }

(1)第1行能省略吗?为什么?

(2)第4行的public :是什么含义?

(3)第5行、第6行分别定义的是什么函数?它们在什么情况下执行?

(4)第7行和第9-12行定义的函数中,哪一个是普通的自定义函数?哪一个是类exam的成员函数?

(5)第15行的含义是什么?

(6)试写出该程序的运行结果。

(7)如果将9-12行改为如下内容:

9: int sqr_it(exam *s)

10: {

11: return s->get_i()*s->get_i();

12: }

并将第17行改为

17: cout<

请写出此时该程序的运行结果。

第二次作业

一、简答题

1、什么是类?什么是对象?

2、什么叫函数重载和运算符重载?使用重载有何优点?

3、何谓内联函数?采用内联函数有何好处?

4、构造函数和析构函数的主要作用是什么?

5、类成员的访问控制属性有哪三种?我们在外部只能访问具备有哪一种属性的对象

成员?

6、在什么情况下应当采用成员初始化列表方式传递数据?

7、拷贝构造函数的参数与一般的构造函数有何不同?在哪三种情况下拷贝构造函数

被执行?

8、什么是this指针?它的主要作用是什么?

二、判断题

1、定义一个整型指针p,在内存中预约10个连续单元,p指向这10个单元之首,可以

使用以下语句操作。()

int *p=new int (10);

2、如果定义 char *const name="yang",则可执行name=new char[4]; ()

3、从一个类定义的各个不同的具体对象,其结构不相同。()

4、类的构造函数可以用public、private或protected中任一访问属性说明。()

5、重载运算符既可改变其执行功能,又可改变它的基本语法形式。()

6、利用模板可以大幅度地节约程序代码。()

7、引入虚基类的好处是防止最派生类对继承成员的二义性。()

8、虚函数的定义在基类中进行,此虚函数就可以在一个或多个派生类中被重新定义,

但函数的返回类型、函数名、形参个数和类型必须相同。()

9、当某个函数以对象为参数时,调用这个函数必定会执行类的拷贝构造函数。()

10、在可以重载的运算符中,并不是都可使用友元函数进行重载的。()

三、填空题

1、构造函数的名字必须与相同,可以有任意类型的形参,但返回类型,

且访问控制属性为,当其参数为时,称之为拷贝构造函数。

2、已经定义好了一个类student,现在要定义一个类pupil,它是从student私有派生而

来,那么,定义pupil类的写法是。

3、由于不能直接对一个类的二个对象做加法,因此,必须对+进行,这

主要由名为+(参数表)的函数完成。

4、动态内存分配采用语句,释放这种方式分配的内存空间则用语句。

5、在C++中,单行注释或行尾注释通常采用进行。

四、综合分析题

1、分析下列程序中继承的关系。(3分)

2、指明构造函数和析构函数执行顺序。(5分)

3、写出程序的运行结果。(7分)

#include "iostream.h"

class A

{

public:

A(){a=0;cout<<"A::default con."<

A(int i){a=i;cout<<"A?s con."<

~A(){cout<<"A?s des."<

void print() {cout<

int geta(){ return a;}

private:

int a;

};

class C

{

public:

C(){c=0;cout<<"C::default con."<

C(int i){c=i;cout<<"C?s con."<

~C(){cout<<"C?s des. "<

void print() {cout<

int getc(){return c;}

private:

int c;

};

class B:public A,public C

{

public:

B(){b=0;cout<<"B::default con."<

B(int i,int j,int k,int l,int n):A(i),C(j),cc(k),aa(l),b(n)

{cout<<"B?s con."<

~B(){cout<<"B?s des."<

void print()

{A::print();

C::print();

cout<

cout<

}

private:

int b;

C cc;

A aa;

};

void main()

{

B bb(1,2,3,4,5);

bb.print();

}

五、程序设计题

1、应用C++的多态性,计算三角形、矩形和圆的面积。建议公共基类命名为Figure,含有二个数据成员及纯虚函数,形式如下:

Class Figure{

protected:

float x,y;

public:

Figure(float a,float b){x=a,y=b;}

virtual void show_area()=0;

};

三角形类、矩形类和圆类命名分别为Tri 、Rec 、Cir,并在主函数中写出一个调用的例子,三角形对象、矩形对象和圆对象的初始数据为(3,4,5)、(2,4),(10)。最后请写出你的程序运行结果。

2、编写程序,设计一个时间类Time,它的基本定义如下:

class Time{

int hour,minute,second;

public:

Time();

Time(int h,int m,int s)

{hour=h,minute=m,second=s;}

void show()

{cout<<"Time is"<

};

试重载运算符+,当加上一个整数(秒)时,输出新的时间。例如:

Time s(12,34,16),s1;

s1=s+100;//从12点34分16秒后,再过100秒,即加100秒

s1.show();

第三次作业

一、选择题(在A、B、C、D四个答案中选择一个正确的填入后面的括号中)

1.下面()是对类ttt的声明。

A.void class ttt;

B.class int ttt;

C.class ttt( );

D.class ttt;

2.用于类中虚成员函数说明的关键字是( )

A. public

B. virtual

C. protected

D. private

3.下面是关于静态成员的说法,其中不正确的是()。

A.静态成员有类作用域,但与普通非静态成员有所不同

B.静态函数没有this指针,同一个类的不同对象拥有相同的静态数据成员

C.静态数据成员的初始化必须在类外进行

D.静态函数同样可以访问非静态数据成员

4.下面的说法中,不正确的一句是()。

A.类的友元函数是类的特殊成员函数,它对所有的类成员、保护成员和私有成员享有完全访问特权。

B. 一个类的友元类中的成员函数都是这个类的友元函数

C. 适用于类成员函数和数据的访问控制同样适用于枚举和嵌套类

D. 与结构类似,类也可以互相嵌套,适用于嵌套结构的规则也适用于嵌套类5.()语言是面向对象的语言。

A. C

B. Pascal

C. Fortran

D. C++

6.C++风格的源文件包含的输入输出头文件为()

A. stdio.h

B. stdafx.h

C. iostream.h

D. stream.h

7.与C语言printf(“Hello word\n”) ;语句功能相同的C++语句是()

A.cout>>”Hello word\n”

B.cin>>” Hello word\n”

C.cout<<” Hello word\n”

D.cin<<” Hello word\n”

8.在下面几个元素中,不是面向对象的要素的是();

A. 重载

B. 对象

C. 类

D. 继承

9.对于int *pa[5];的描述,下面叙述正确的是();

A.pa是一个指向数组的指针,所指向的数组是5个int型元素;

B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量;

C.pa是一个具有5个元素的指针数组,每个元素是一个int型指针;

D.pa[5]表示某个数组的第5个元素的值。

10. 下面程序使用new与delete命令:

#include

main( )

{

long *p , i;

p=new long;

if(!p) {

cout<<”Allocation error\n”;

return 1;

}

*p=1000;

i=(long)p;

cout<<”Here is integer at p:”<<*p<<”\n”;

cout<<”Here is i: “<

delete p;

return 0;

}

下面是对这段程序的叙述,其中正确的是()。

A. 有错误,编译不能通过

B.正确,执行结果为:1000 1000

C.正确,但执行结果的第二个数值不定

D.正确,执行结果的各个数值均不为1000

二、判断下列描述正确性,对者划√,错者划×(每小题2分)。

1.C++中标识符内的大小写字母是没有区别的。

2.宏定义命令是分号结束的。

3.C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。

4.w hile循环语句的循环体至少执行一次。

5.在C++中,所有函数在调用前都要说明。

6.析构函数是一种函数体为空的成员函数。

7.如果一个函数没有返回值时,定义时需要用void说明。

8.派生类是从基类派生出来的,它不能再生成新的派生类。

9.对象成员的表示与结构变量成员表示相同,使用运算符.或->。

10.构造函数和析构函数都可以重载,因为它们都是成员函数。

三、写出下面程序的输出结果。

1.#include

void main()

{ int a,b,c;

a=1,b=2,c=a+b+3;

cout<

c=(a++,a+=6,a+b); cout<

}

2. #include

void swap(int &x,int &y)

{

int temp;

temp=x;

x=y;

y=temp;

cout<<”x=”<

}

void main()

{

int a(5),b(9);

swap(a,b);

cout<<”a=”<

}

3. #include

class A

{

public :

A( );

A(int i,int j);

void print( );

private :

int a,b;

};

A::A( )

{ a=b=0;

cout<<”Default constructor called.\n”; }

A::A(int i,int j)

{ a=i; b=j;

cout<<”Constructor called.\n”;

}

void A::print( )

{ cout<<”a=”<

}

void main( )

{ A m,n(4,8);

m.print( );

n.print( );

}

四、编程或程序填空。

1.在下划线处填上正确的语句并给出程序的输出结果(6分)。

#include

#include ____(1)_______

class strA

{

public:

strA(float,float,float);

______(2)________;

______(3)________;

public:

float a,b,c;

};

float strA::fun1( )

{

return a+b+c;

}

strA::strA(float i,float j,float k)

{

a=i; b=j; c=k;

}

double strA::fun2( )

{

float s;

s=float((a+b+c)/2.0);

return sqrt(s*(s-a)*(s-b)*(s-c));

}

void maina( )

{

strA tri(3,4,5);

cout<

cout<

}

2.编写分别可求两个整型、浮点型和双精度型数和的重载函数,并写主函数调用之;

3.使用引用作为函数参数,编写一个交换两变量值的函数,并写主函数调用之。

C++模拟试题2

一、选择题(在A、B、C、D四个答案中选择一个正确的填入后面的括号中)

1.C++中,封装是借助于()达到的。

E.指针 B. 类 C. 数组 D. 函数

3.宏定义由()结束。

A.分号 B. 句号 C. 新行 D. 冒号

3. 下面是关于一个类的友元的说法,其中不正确的是()

A.友元函数可以访问该类的私有数据成员

B.友元的声明必须放在类的内部

C.友元函数可以是类的成员函数

D.类与类之间的友元关系不能被继承

4. C++中声明常量的关键字是()。

A. const

B. extern

C. public

D. enum

5. 关于动态联编的下列描述中,错误的是()。

A. 动态联编是以虚函数为基础的

B. 动态联编时在运行时确定所调用的函数代码的

C. 动态联编调用函数操作是使用指向对象的指针或对象引用

D. 动态联编是在编译时确定操作函数的

6. 下面函数()的表示方法说明它使用对象的引用作为参数。

A. test(pt *p)

B. test(pt p)

C. test(pt &p)

D. test(const P)

7. 虚函数的调用()。

A.一定使用动态联编

B.必须使用动态联编

C.一定使用静态联编

D.不一定使用动态联编

8.关于C++与C语言的关系的描述中,错误的是();

A. C语言是C++的子集;

B. C语言与C++是兼容的;

C.C++对C语言进行了一些改进; D. C++和C语言都是面向对象的。

9.重载函数在调用时选择的依据中,()是错误的。

A. 参数个数

B. 参数类型

C. 函数名字

D. 函数类型

10. 下面的程序是关于函数承载的,假定A,B,C,D是它们可能的输出之一,其中正确的输出是()。

A. 25 10

B. 20 10

C. 20 11.4

D. 20 14.076

源程序如下:

#include

int Multiply(int n1, int n2)

{

return n1*n2;

}

float Multiply(int f1, float f2)

{

return f1*f2;

}

void main( )

{

int a1=10;

int a2=2.5;

float b1=2.55;

float b2=5.52;

cout<

cout<

}

二、判断下列描述正确性,对者划√,错者划×。

1.C++中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的。

2.函数一定要有函数体。

3.在说明语句int a(5),&b=a,*p=&a;中b的值和*p值是相等的。

4.for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。

5. 在C++中,定义函数时必须给出函数的类型。

6. 对象引用作函数参数不如使用对象指针更方便。

7. 说明或定义对象时,类名前必须要加class关键字。

8.C++语言中,允许单一继承,不允许多重继承。

9.面向对象方法具有三大特性:封装性、继承性和继承性。

10.在共有继承中,派生类可以访问基类中的私有成员。

三、按要求写结果:

1.计算下列表达式的值:

(1)已知:int i(10),j(5);

A. ++ i-j- -;

B. i=i*=j;

C. i=3/2*(j=3-2);

(2)已知:int a(5),b(3);计算下面表达式的值及a和b的值。

A. ! a && b++;

B. a || b + 4 && a*b;

C.a=1,b=2,a>b ? ++a: ++b;

2. 写出下面程序的输出结果。

(1)#include

void fun( )

{

static int n=25;

n - -;

cout <<”n=”<

}

void main( )

{

for(int i=0;i<2; i++)

fun( );

}

(2)#include

class Base

{

public :

void Setc(char a){c2=(c1=a)-32;}

void Show( )

{ cout<

private:

char c1,c2;

};

void main( )

{

Base a,b;

a.S etc(…a?);

b.S etc(…b?);

a.S how( );

b.S how( );

}

(3)定义类Tpoint如下:

class TPoint

{

public:

TPoint(int x,int y){X=x;Y=y;}

TPoint(TPoint &p);

~ TPoint( ){cout<<”destructor Called.\n”;}

int GetX( ){return X;}

int GetY( ){return Y;}

private :

int X,Y;

};

TPoint::TPoint(TPoint &p)

{

X=p.X;

Y=p.Y;

}

并将其存入tpoint.h文件中,分析并写出下面主函数的执行结果: #include

#include

void main( )

{

TPoint P1(5,7);

TPoint P2(P1);

cout<<”P2=”<

}

四、编程或程序填空。

1.在下划线处填上正确的语句成分,并编写一个测试主程序。

#include

class Test

{

public :

Test(int a,int b){ ___(1)______ }

void show( ){ ____(2)_____ }

private :

int x,y;

};

2.编写分别可计算2、3或4个int型数的和的重载函数,并写主函数调用之;

3. 设计一个类,使它具有一个求两个整数中较大者的成员函数以及输出成员函数,并

写一个测试程序。

《面向对象程序设计C 》期末试卷及标准答案

《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

面向对象程序设计实验指导书讲解

面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include void main(void) { cout<<”Hello!\n”; cout<<”Welcome to C++!\n”; } 3、实验步骤 (1)启动Visual C++或C++Builder开发环境 (2)创建一个项目 A)单击File菜单中的New选项,显示示新建对话框 B)选择Console Wizard(C++Builder) 或Win32 Console Application(VC++)。 C)选择项目所在路径及输入项目的名称 D)依次按‘下一步’直至完成为止。 (3)至此,C++Builder已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main函数中写入必要的内容即可。 (4)对于VC,请继续下面的步骤: A)建立C++源程序文件 a)选选菜单命令Project|Add to Project|New,弹出New对话框 b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成 新建C++源程序文件 B)编辑C++源程序文件 a)在文件编辑窗口中输入代码 b)完成后,选择菜单File|Save保存这个文件 C)建立并运行可执行程序 a)选择菜单命令Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源 程序进行修改后,重新选择菜单命令Build建立可执行程序。 b)选择菜单命令Run,运行程序,观察屏幕显示内容。 D)关闭工作空间 选择菜单命令File|Colse WorkSpace关闭工作空间。

c面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

(A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的

(完整版)《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.doczj.com/doc/d413875766.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

面向对象程序设计的基本思想

课题:面向对象程序设计的基本思想 (一)教学设计思想与理论依据: 《算法与程序设计》模块的教学强调通过该模块的学习,学生应该体验客 观世界的计算机对象化表征和算法思维,掌握几种基本算法;能运用面向对 象的方法,设计解决简单问题的算法,并能初步使用一种面向对象的程序设 计语言,编制程序实现算法解决该问题。 (二)教学内容分析 教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第五章第一节内容为结构框架,本节主要介绍面向对象思想产生的必然性和面向对象思想的机制,以及通过对同一个问题采取面向过程和面向对象两种不同思想解决的区别,让学生感受到面向对象程序设计的优越性。 (三)学生情况分析: 学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计方法,有一定的程序设计基础。 (四)教学策略与模式: 采用讲解、任务驱动、实践和学生自主学习相结合的教学方式 (五)教学资源: 硬件:多媒体电脑教室,投影仪,广播系统 软件:学生机安装vb6.0 (六)教学目标: 知识与技能 1.了解面向对象程序设计的基本思想和面向对象思想的由来,并能够举例说 明现实世界与面向对象系统之间的对应关系。 2.了解面向对象程序设计的优越性并初步理解其实现的机制。 过程与方法 经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。 情感态度和价值观 (1)关注传统结构化程序设计存在的问题。 (2)产生学习面向对象程序设计技术的愿望。 (3)关注面向对象技术是当前程序设计的重要发展方向。 (七)重点难点 教学重点 (1)传统结构化程序设计存在的问题 (2)面向对象程序设计所具有的优点。 教学难点 (1)面向对象思想的产生。 (2)传统结构化程序设计与面向对象程序设计的基本点比较。 (3)实现面向对象程序设计的基本机制。 教学过程:

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

C++面向对象程序设计实验报告

C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int fn(int n) { int s=1; for(int i=1;i<=n;i++) { s=s*i; } cout<<"n!="<

int Cnr(int n,int r) { cout<<"Please input two numbers:"<>n>>r; if(n==0&&r==0) { cout<<"Programme shutdown."<=1&&n>=r) { int a; int b; int c; int d; a=fn(n); b=fn(r); c=fn(n-r); d=a/(b*c); cout<

《C面向对象程序设计》谭浩强版复习总结

第一章C++ 基础 endl 换行并刷新输出流 setw(n) 设置字段位数为n hex,oct,dec 十六进制,八进制,十进制表示 setfill 定义填充字符 setprecision 定义浮点数的精度 left,right 左对齐,右对齐 showpoint 强制显示小数点以及全部尾部0 C++通过给常量命名的方式定义常量: const<数据类型名><常量名>=<表达式> 用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。 函数声明的一般形式为 函数类型函数名(参数表) 函数模板的定义 template 函数定义 例子:template T max(T a,T b){ return(a>b)? a:b; } 定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔: template

例子:template T1 max(T1 a,T2 b){ return (a>b) ? a : (T1)b; } 有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端 引用 定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。 <类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。如: int max ; int &refmax=max; refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。 对引用类型的变量,说明以下几点: 1、引用在定义的时候要初始化 2、对引用的操作就是对被引用的变量的操作。 3、引用类型变量的初始化值不能是一个常数。 4、一旦引用被声明,它就不能再指向其它的变量。 5、对引用的初始化,可以用一个变量名,也可以用另一个引用。 6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。 当&m的前面有类型符时(如int &m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。 7、对常量(用const声明)的引用使用如下方式: int i=5; const int &a=i;

面向对象程序设计教程答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

《面向对象程序设计C 》期末考试试卷

《面向对象程序设计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<

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

相关主题
文本预览
相关文档 最新文档