08-09面向对象程序设计(二)试卷B

08-09面向对象程序设计(二)试卷B
08-09面向对象程序设计(二)试卷B

华侨大学面向对象程序设计(二)试卷(B)

系别计算机、软件工程、网络工程08 考试日期 2009年 06月29日

姓名学号成绩

一、选择题 (20分,每小题2分)

(1)在C++中,关于下列设置参数默认值的描述中,正确的是 (1) 。

A)不允许设置参数的默认值

B)设置参数默认值只能在定义函数时设置

C)设置参数默认值时,应该是先设置右边的再设置左边的

D)设置参数默认值时,应该全部参数都设置

(2)编译时多态性通过使用(2)获得。

A)重载函数 B)虚函数 C)继承 D)析构函数

(3)派生类构造函数的成员初始化列表中,不能包含(3)。

A)基类的构造函数B)派生类中成员对象的初始化

C)基类中成员对象的初始化D)派生类中一般数据成员的初始化

(4)下面关于友元的描述中,错误的是(4)。

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

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

C)友元可以提高程序的运行效率

D)类与类之间的友元关系可以继承

(5)在定义派生类对象时构造函数的执行顺序为:(5)。

A)先执行基类的构造函数,再执行成员对象的构造函数,最后执行派生类本身的构造函数

B)先执行基类的构造函数,再执行派生类本身的构造函数,最后执行成员对象的构造函数

C)先执行派生类本身的构造函数,再执行基类的构造函数,最后执行成员对象的构造函数

D)先执行派生类本身的构造函数,再执行成员对象的构造函数,最后执行基类的构造函数

(6)以下叙述中不正确的是(6)

A) 在不同的函数中可以使用相同名字的变量

B) 函数中的形式参数是局部变量

C) 在一个函数内定义的变量只在本函数范围内有效

D) 在一个函数内的复合语句中定义的变量在本函数范围内有效

(7)下面关于构造函数的叙述中,正确的叙述是 (7) 。

A)引入构造函数是为了对象的自动执行B)构造函数名必须与类名相同

C)构造函数不能重载D)构造函数也是成员函数,因此可以被其它函数调用

(8)以下关于函数指针的叙述中,正确的是(8)。

A) 函数指针用来存放函数入口地址 B)函数指针用来存放函数调用的结果C) 函数指针用来指示函数的出口地址 D) 函数指针就是指针函数的别名

(9)下列关于继承的描述中,错误的是(9)。

A)析构函数不能被继承 B)派生类是基类的组合

C)派生类的成员除了它自己的成员外还包含了它的基类的成员

D)派生类中继承的基类成员的访问权限在派生类中保持不变

(10)以下正确的描述是(10) 。

在C++语言程序中A)函数的定义可以嵌套,但函数的调用不可以嵌套

B)函数的定义不可以嵌套,但函数的调用可以嵌套

C)函数的定义和函数的调用均不可以嵌套

D)函数的定义和函数的调用均可以嵌套

二、阅读以下程序并给出执行结果(20分,每小题5分)。

1、

#include

using namespace std;

void func();

int a=1;

int main()

{

int x=0, y=-1;

cout<<"x="<

}

Add(Add &p)

{

x=p.x; y=p.y;

cout<<"调用构造函数2"<

}

~Add()

{

cout<<"调用析构函数"<

}

int add(){ r eturn x+y; }

};

void main()

{

Add p1(2,3);

Add p2(p1);

cout<

}

3、

#include

using namespace std;

class Base

{

protected:

int b;

public:

Base(int bval=0)

{ cout<<"Constructing Base..."<

b=bval;

}

};

class Derive1: virtual public Base

{

protected:

int d1;

public:

Derive1(int bval, int dval):Base(bval)

{ cout<<"Constructing Derive1..."<

d1=dval;

};

class Derive2:virtual public Base

{

protected:

int d2;

public:

Derive2(int bval,int dval):Base(bval)

{ cout<<"Constructing Derive2..."<

d2=dval;

}

};

class Derive:public Derive1, public Derive2

{ protected:

int d;

public:

Derive(int bval, int dval1,int dval2,int dval); };

Derive::Derive(int bval, int dval1,int dval2,int dval)

:Derive1(bval, dval1),Derive2(bval, dval2),Base(bval) {

cout<<"Constructing Derive..."<

d=dval;

}

void main()

{

Derive Objectd(1,2,3,4);

}

4、

#include

using namespace std;

void a(int i)

{

int j,k;

for(j=0;j<=7-i;j++) cout<<" ";

for(k=0;k<2*i+1;k++) cout<<"*";

cout<

}

int main()

{ int i;

for(i=0;i<3;i++) a(i);

for(i=3;i>=0;i--) a(i);

return 1;

}

三、阅读以下程序(或函数)并简要叙述其功能(20分,每小题5分)1、

#include

using namespace std;

char* fun(char* dest, const char* src);

int main()

{

char a[80],b[80];

cout<<"Please input a string:";

cin>>a;

cout<

return 1;

}

char* fun(char* dest, const char* src)

{

char* pdest=dest;

while(*pdest++ = *psrc++);

return dest;

}

请叙述函数fun( )的功能。

2、

#include

using namespace std;

int func(int[][4],int,int);

void main()

{

int sg[3][4]=

{{68,77,73,86},{87,96,78,89},{90,70,81,86}};

cout<<"The result is:"

<

}

int func(int grade[][4],int pupils,int tests)

{

int p1=grade[0][0];

for(int i=0;i

for(int j=0;j

if(grade[i][j]

p1=grade[i][j];

return p1;

}

输出运行结果:

请叙述函数func( )的功能。

3、

int funp(long m)

{

int flag;

double sqrtm;

int i;

if (m==2)

flag=1;

else

if (m%2==0)

flag=0;

else

{

flag=1;

sqrtm=sqrt(m);

for(i=3;i<=sqrtm && flag;i+=2)

if (m%i==0)

flag=0;

}

return flag;

}

请叙述函数funp( )的功能。

4、

#include

using namespace std;

char s[20];

char * f1(int);

int main()

{

int num;

cout<<"Please a number(>0):";

cin>>num;

if(num<0)

cout<<"Error input!"<

else

cout<

return 1;

}

char * f1(int n)

{

int p=0;

do

{

s[p]=n%10+'0';

p++;

}while((n=n/10)!=0);

s[p]='\0';

return s;

}

输入:483

运行结果:?

函数f1( )的功能:?

四、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序(10分,每空2分)

假设原链表的结点是按学号(number)由小到大排列的。在已建立的学生链表中插入一新结点,使插入新结点后的链表仍然保持有序。

struct Student

{

long number;

float score;

Student * next;

};

Student * Insert(Student * head, Student * stud) //插入链表结点

{

if( (1) ) //原链表为空链表

{

head=stud;

stud->next=NULL;

return(head);

}

if( (2) ) //结点的插入位置在链首

{

stud->next=head;

head=stud;

return(head);

}

//查找插入位置

Student * pGuard=head;

while( (3) )

pGuard=pGuard->next;

//插入结点

(4)

(5)

return(head);

}

五、编程题(30%)

1、定义findmax()函数,其功能是寻找数组中的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现findmax()函数,并在主函数中输出最大元素的值、下标及其地址。int* findmax(int* array, int size, int* index);

2、设计并测试一个描述学生基本信息的类(Student)。

(1)设计一个学生基本信息的类(Student)包含有数据成员:学号(由系统自动生成)、姓名、性别、家庭地址、电话;包含有如下主要成员函数:

构造函数(用来初始一个学生的基本信息)

以非成员函数的形式重载“<<”使之能显示学生信息

修改学生家庭地址

析构函数

(2)请在主函数中使用所设计的学生类定义学生对象,并输出其基本信息。

华侨大学面向对象程序设计(二)试卷(B)答题纸系别计算机、软件工程、网络工程08 考试日期 2009年 06月29日

姓名学号成绩

一、选择题 (20分,每小题2分)

(1)(2)(3)(4)(5)

(6)(7)(8)(9)(10)

二、阅读以下程序并给出执行结果(20分,每小题5分)。

1、

2、

3、

4、

三、阅读以下程序(或函数)并简要叙述其功能(20分,每小题5分)

1、

2、

3、

4、

四、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序(10分,每空2分)

(1)

(2)

(3)

(4)

(5)

五、编程题(30%)1、

2、

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

实验一熟悉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:"<

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

什么是面向对象程序设计

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

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

《面向对象程序设计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.0B.1C.2D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些存清理工作D.析构函数无任何函数类型 8、类定义的容允许被其对象无限制地存取的是()。A.private部分B.protected部分C.public部分D.以上都不对 9、关于常数据成员的说法,不正确的是()。 A.常数据成员的定义形式与一般常变量的定义形式相同,只不过常数据成员的定义必须出现在类体中 B.常数据成员必须进行初始化,并且不能被更新 C.常数据成员通过构造函数的成员初始化列表进行初始化D.常数据成员可以在定义时直接初始化 10、运用运算符delete删除一个动态对象时()。 A.系统首先为该动态对象调用构造函数,再释放其占用的存

《面向对象程序设计》习题三答案

《面向对象程序设计》习题三答案 一、单项选择题(本大题共25小题,每小题2分,共50分) 1、用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。 A、空格或逗号 B、逗号或回车 C、逗号或分号 D、空格或回车 2、C++中声明常量的关键字是( A )。 A、const B、extern C、public D、enum 3、以下叙述中正确的是( B ) A、使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B、使用const定义的常量名有类型之分,其值在程序运行时是不可改变的 C、在程序中使用内置函数使程序的可读性变差 D、在定义函数时可以在形参表的任何位置给出缺省形参值 4、下列的符号常变量定义中,错误的定义是( C )。 A、const M=10; B、const int M=20; C、const char ch; D、const bool mark=true; 5、函数原型语句正确的是( B )。 A、int Function(void a) B、void Function (int); C、int Function(a); D、void int(double a); 6、在关键字private后面定义的成员为类的( A )成员。 A、私有 B、公用 C、保护 D、任何 7、在一个类的定义中,包含有( C )成员的定义。 A、数据 B、函数 C、数据和函数 D、数据或函数 8、在类作用域中能够通过直接使用该类的( D )成员名进行访问。 A、私有 B、公用 C、保护 D、任何 9、在关键字public后面定义的成员为类的( B )成员。 A、私有 B、公用 C、保护 D、任何 10、类中定义的成员默认为( B )访问属性。 A、public B、private C、protected D、friend 11、每个类( C )构造函数。

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

面向对象程序设计考试题库

面向对象程序设计期末综合练习一(单选题) 单选题 1. C++源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 2. 由C++源程序文件编译而成的目标文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 3. 由C++目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 4. 编写C++程序一般需经过的几个步骤依次是( )。 A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试 C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接 5. 以下标识符中不全是保留字的是( )。 A. case for int B. default then while C. bool class long D. goto return char 6. 能作为C++程序的基本单位是( )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 7. 程序中主函数的名字为( )。 A. main B. MAIN C. Main D. 任意标识符 8. C++程序的基本模块为( )。 A. 表达式 B. 标识符 C. 语句 D. 函数 9. 可用作C++语言用户标识符的一组标识符是( )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 10. 存储以下数据,占用存储字节最多的是( )。 A. 0 B. …0? C. “0” D. 0.0 11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a 的值是( )。 A. 12 B. 144 C. 156 D. 288 13. 假设在程序中 a 、b 、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 1的表达式是( )。 A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c 14. 设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是( )。 A. 15 B. 26,15 C. 15,26 D. 26

面向对象程序设计复习题

面向对象程序设计复习题 -、填空题: 1. 创建类的对象时,使用运算符 ___________________ 给对象分配内存空间。 2. _________________________________________________________ Java 通过 来区分重载 函数。 3. 在子类中使用保留字 _ _ 可调用被子类覆盖的父类中的方法。 4. 使用保留字 ______________ 构造方法中调用同一个类的另一个构造方法。 5. 抽象类用修饰符 ________________________ 定义。 6. 类的数据成员的访问权限修饰符一般为 __________________________________ 7. 访问权限修饰符按照访问权限的大小从大到 8. 定义类的构造方法不能有 _______________ 9. 抽象方法是的特征是 ___________________ 10. ________________________________ J ava 中的所有异常都是从 _______________________________ 11. 对象引用中存储的内容是 _______________ 12. 下列程序段执行后, Stri ng str1 = new Stri ng("Java"); Stri ng str2 = new Stri ng("Java"); if (str1.equals(str2)) { System.out .println ("They are equal"); } else { System.out. prin tl n("They are not equal"); } 输出结果为: ___________ 13. 下面循环执行后的 sun 值为 int count =0, sum = 0; while ( cou nt <10 ) { sum += count; count ++; } 14. _________________________ J ava 语言中关键字 15. 保留字 ________________ _ 16. Java 语言中继承是用保留字 17. 面向对象程序设计中,类是指 18. ______________________ 对象包含 和 19. 若有类定义: class B exte nds A{ o ,其名称与 名相同。 继承来的。 ___________ 表示双精度类型。 用于导入包中的类到程序中,供程序中使用。 表 示。 } 则类B 是类A 的 ____ _______________________________ 。 20. Java 语言中,通常把可能发生异 常的方法调用语句放到 try 块中,并用紧跟其后的 获和处理异常。 21. 多态是指 _______________________ 22. 声明常量时使用修饰符 __________ 23. Java 中异常抛出使用保留字. 24. 一个类成员或者方法前面加上了 来访问和调用。 块来捕 O 修饰符,那说明该数据成员和方法可以直接通过类名 25. 如果类成员前面没有访问权限修饰符,则该类成员具有 访问权限。

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

学号:姓名: 第三章面向对象程序设计作业 一、判断题 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++ 期末试卷B

南京邮电大学 学年第 二 学期 《面向对象程序设计及C++》期末试卷2 院(系) 班级 学号 姓名 (★温馨提醒: ① 这是试题纸,教师不批改,请将所有最终答案写在答题纸上 ② 请在试题纸和答题纸上均完整填写班级、学号、姓名信息 ③ 考试结束时请将答题纸、试题纸及草稿纸一并交来 谢谢合作!祝同学们取得好成绩!) 一、填空题(共10分,每空1分) 1、面向对象程序设计思想中的几个主要特征是:抽象和 ① 、 ② 、 ③ 。 2、C++为类的成员函数提供了一个名字为 ④ 的指针,当创建一个对象时,系统将这种指针初始化为指向该对象。 3、假设AB 为一个类,则该类的拷贝构造函数的原型是 ⑤ 。 4、C++中有三种继承方式,如果基类的公有成员到派生类中仍是公有成员,则应使用 ⑥ 继承方式;如果基类的保护成员到派生类中变成私有成员,则应使用 ⑦ 继承方式。 5、cout 是C++中的标准输出流对象,它在标准头文件 ⑧ 里定义。 6、通过在虚函数参数表后加 ⑨ ,可以定义为纯虚函数。含有纯虚函数的类称为 ⑩ 。 二、单选题(共20分,每题2分) 1、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是 。 A 、参数的个数 B 、参数的类型 C 、参数的顺序 D 、函数的返回类型 2、下列定义引用类型变量时, 是正确的。 已知:int k=1000; A 、int &x=k; B 、char &y; C 、int &z=1000; D 、float &t=&k; 装 订 线 内 不 要 答 题 自 觉 遵 守 考 试 规 则,诚 信 考 试,绝 不 作 弊

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

第二章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;

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 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<

面向对象程序设计试卷(D)

公 安 海 警 学 院 《 面向对象程序设计 》考试(查)卷( D 卷) (2012—2013学年第一学期) 考核类型: ;考核年级: ; 考试时间: 分钟 考试须知 公安海警学院学员参加学院组织的各类考试必须严格遵守考场纪律。有考试违纪作弊行为者,严格按照学院有关规定进行处理。 各考场排定的监考教员,必须认真履行监考职责,确保考场正常秩序。 阅卷教员要依照批阅试卷程序与规定,公平公正地完成好阅卷工作。 一、填空题(共10分,每空1分) 1.面向对象程序设计将数据及对数据的 操作 放在一起,作为一个相互依存,不可分割的整体来处理,即对象。 2.为了使类中的成员不能被类外的函数访问,则应把该成员的访问权限定义为 私有的或受保护的 属性。 3.在C++中,声明布尔类型变量所用的关键字是__ bool __。 4.C++中定义常量的关键字是 const 。 5.C++中进行输入、输出操作时,将数据对象从输入流提取出来的运算符是“>>”,插入到输出流的运算符是__ << __。 6.类的继承是指子类继承基类的_ 数据成员 __和成员函数。 7.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为__ 多态性 __。 8.设类A 有成员函数void Fun(void);若要定义一个指向类成员函数的指针变量pafn 来指向Fun ,该指针变量的声明语句是:__ void (A ::*pafn )(viod ) ; __。 9.在保护派生中,基类权限为Private 的成员在派生类中__ 不可访问 __。 10.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的__ 首地址 _。 二、选择题(共30分,每题2分) 1.C++对C 语言作了很多改进,下列描述中( D )使得C 语言发生了质变,即从面向过程变成了面向对象。 A .增加了一些新的运算符 B .允许函数重载,并允许设置默认参数 C .规定了函数说明必须用原型 D .引进了类和对象的概念 2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是( C ) A .cerr B .cin C .cout D .cfile 3.对使用关键字new 所开辟的动态存储空间,释放时必须使用( C ) A .free B .create C .delete D .realse 4.用C++中定义一个类,当没有明确指定成员的访问权限时,则系统约定该成员为( C ) A .public B .protected C .private D .friend 5.C++的继承性允许派生类继承基类的( A ) A .部分特性,并允许增加新的特性或重定义基类的特性 B .部分特性,但不允许增加新的特性或重定义基类的特性 C .所有特性,并允许增加新的特性或重定义基类的特性 D .所有特性,但不允许增加新的特性或重定义基类的特性 6.类的私有成员可在何处访问( D ) A .通过子类的对象访问 B .本类及子类的成员函数中 C .通过该类对象访问 D .本类的成员函数中 7.一个类可包含析构函数的个数是( B ) A .0个 B .1个 C .至少一个 D .0个或多个 8.this 指针存在的目的是( B ) A .保证基类公有成员在子类中可以被访问 B .保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码 C .保证基类保护成员在子类中可以被访问 D .保证基类私有成员在子类中可以被访问 9.下列关于类的权限的描述错误的是( A ) A .类本身的成员函数只能访问自身的私有成员 B .类的对象只能访问该类的公有成员 C .普通函数不能直接访问类的公有成员,必须通过对象访问 D .一个类可以将另一个类的对象作为成员 10.关于虚函数,下列说法正确的是( A ) A. 虚函数在基类中说明后,不用再在派生类中重新说明 B. 包含有虚函数的基类称为抽象基类 C. 每个派生类必须对从基类继承的虚函数进行重新重定义 D. 包含虚函数的类不能够生成实例对象 11.设类A 将其它类对象作为成员,则建立A 类对象时,下列描述正确的是( B ) A .A 类构造函数先执行 B .成员构造函数先执行 C .两者并行执行 D .不能确定 12.下列描述错误的是( A ) A .在创建对象前,静态成员不存在 B .静态成员是类的成员 C .静态成员不能是虚函数 D .静态成员函数不能直接访问非静态成员 13.对于友元描述正确的是( B ) A .友元是本类的成员函数 B .友元不是本类的成员函数 C .友元不是函数 D .友元不能访问本类私有成员 14.可以在派生类的成员函数中访问基类的非私有成员,并能通过派生类的对象直接访问基类公有成员的派生方式是( A ) A .public B .protected C .private D .friend 15.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是( A ) A .编译器总是自动创建一个不带参数的构造函数 B .这个类没有构造函数 C .这个类不需要构造函数 D .该类不能通过编译 三、判断题(共10分,每题1分) 密 封 线

面向对象程序设计C期末试卷及标准答案B样本

《面向对象程序设计C++》期末考试试卷( B) 班级: 姓名: 学号: 分数: 试卷说明: 本套试题共四个大题, 全部题目都答在答题纸上, 写在其它地方均无效。 ( 答题纸在本套试卷的第8页上) 一、单项选择题( 每小题2分, 共40分) 1、关于C++与C语言关系的描述中, ( D ) 是错误的。 A.C语言是C++语言的一个子集 B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进 D.C++语言和C语言都是面向对象的 2、已知: int m=10; 下列表示引用的方法中, ( A ) 是正确的。 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='*');下面函数调用中, 不合法的是( C ) 。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用, 在下列选项中, 不能作为依据的是( A ) 。 A.函数的返回值类型 B.参数的类型 C.函数名称 D.参数个数 5、下列有关C++类的说法中, 不正确的是( D ) 。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中, 如果不做特别说明, 所有成员的访问权限均为私有的

D.在类中, 如果不做特别说明, 所有成员的访问权限均为公用的 6、已知X类, 则当程序执行到语句X array[3];时, 调用了( D ) 次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法, 不正确的是( B ) 。 A.析构函数有且仅有一个 B.析构函数和构造函数一样能够有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型 8、类定义的内容允许被其对象无限制地存取的是( C ) 。 A.private 部分 B. protected 部分 C.public 部分 D.以上都不对9、关于常数据成员的说法, 不正确的是( D ) 。 A.常数据成员的定义形式与一般常变量的定义形式相同, 只不过常数据成员的定义必须出现在类体中 B.常数据成员必须进行初始化, 而且不能被更新 C.常数据成员经过构造函数的成员初始化列表进行初始化 D.常数据成员能够在定义时直接初始化 10、运用运算符delete删除一个动态对象时( C ) 。 A.系统首先为该动态对象调用构造函数, 再释放其占用的内存 B.系统首先释放该动态对象占用的内存, 再为其调用构造函数 C.系统首先为该动态对象调用析构函数, 再释放其占用的内存 D.系统首先释放动态对象占用的内存, 再为其调用析构函数 11、能够在类外用p.a的形式访问派生类对象p的基类成员a, 其中a是( D ) 。 A.私有继承的公用成员 B.公用继承的私有成员 C.公用继承的保护成员 D.公用继承的公用成员

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计期末复习分析

一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( C )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. (D )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作 图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.(D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对 象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.(D )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示 系统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( B ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的(B )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 20. UML的动态建模表示包含(C )种图。 A. 9 B. 5 C. 4 D. 2 二、填空题( 每空1 分,共20 分) 1. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为

相关文档
最新文档