大学C++面向对象程序设计 2018试题及参考答案

合集下载

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

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

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

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

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

A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。

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

A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。

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

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

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

A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。

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

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

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

A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。

c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。

c面向对象程序设计考试试卷(详细讲解).doc

c面向对象程序设计考试试卷(详细讲解).doc

c面向对象程序设计考试试卷(详细讲解).docC++面向对象程序设计考试试卷(详细讲解)一、单项选择题(共20 题,每题 1 分,共 20 分)1、下列关于 C++标识符的命名不合法的是C与 C#一样A. PadB. name_1C. A#bcD. _a122、若有以下类型标识符定义:() Dint x=2;char w='a';float y=23.45f;double z=45.6712;则表达式 w*x+y-z 的结果类型是A. floatB. charC. intD. double6、对重载函数形参的描述中,错误的是 D 重载是重点A.参数的个数可能不同B.参数的类型可能不同C.参数的顺序可能不同D.参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是 DA. int N=5,b[N][N];B. int a[2]={{1},{3},{4},{5}};C. int c[2][]={{1,2},{3,4}};D. int d[3][2]={{1,2},{3,4}};8、下列给字符数组进行的初始化中,不正确的是 DA. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、通常的拷贝构造函数的参数是 CA.某个对象名 B.某个对象成员名C.某个对象的引用D.某个对象的指针名10、关于构造函数特点的描述中,错误的是 AA.定义构造函数必须指出类型(构造函数特点是无返回类型)B.构造函数的名字与该类的类名相同C.一个类中可定义0 至多个构造函数(不写构造函数,系统会自动生成一个空的构造函数)D.构造函数是一种成员函数11、下面程序的运行结果为 C#includeint add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;< bdsfid="108" p=""></add(x,y)<<endl;<>}int x=20,y=5;int add(int a,int b){int s=a+b;- 1 -return s;}A.20 B.5 C.25 D.编译会提示出错信息12、关于常成员的描述中,错误的是 BA.常成员包含常数据成员和常成员函数两种B.常数据成员必须是公有的C.常数据成员要使用构造函数成员初始化列表进行初始化D.常对象只能调用它的常成员函数,不能调用其它的成员函数13、关于友元函数的描述中,错误的是 BA.友元函数不是成员函数B.友元函数只能访问类中私有成员C.友元函数破坏隐藏性,尽量少用D.友元函数说明在类体内,使用关键字friend14、如果有 int x,*p; float y,*q; 则下面操作正确的是 CA.p=x B.p=qC.p=&x D.p=&y16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是 DA.数组的长度B.数组第一个元素的值C.数组所有元素的值D.数组第一个元素的地址17、对于动态分配内存空间描述正确的是 DA.使用 new 运算符分配的内存空间的长度必需是常量B.delete 运算符可以释放动态的存储空间和静态的存储空间C.由 new 分配的内存空间是不连续的D.delete 运算符只能释放由new 分配的动态存储空间18、能够释放对象所占资源的是() AA.析构函数 B.数据成员C.构造函数 D.静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以关键字 CA.static B.frendC.virtualD.public20、在 C++中串流类是在头文件 strstrea.h 中定义的,下列不属于串流类的是) CA.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9 题 16 空,每空 1 分,共 16 分)1、函数重载时,编译系统会根据 __形参的类型 __或__形参的个数__来区分。

c面向对象程序设计课后习题答案

c面向对象程序设计课后习题答案

c面向对象程序设计课后习题答案C面向对象程序设计课后习题答案在学习C面向对象程序设计课程的过程中,课后习题是巩固知识、提升能力的重要途径。

通过认真完成习题,我们可以更好地理解课程内容,掌握编程技巧,提高解决问题的能力。

下面我们将针对一些常见的C面向对象程序设计课后习题进行答案解析。

1. 请编写一个C++程序,实现一个简单的学生信息管理系统,包括学生姓名、学号、成绩等信息的录入、查询和修改功能。

答案解析:首先,我们需要定义一个学生类,包括姓名、学号、成绩等属性,并实现相应的方法来实现信息的录入、查询和修改功能。

然后在主函数中创建学生对象,调用相应的方法即可实现学生信息管理系统。

2. 编写一个C++程序,实现一个简单的图书管理系统,包括图书名称、作者、出版社等信息的录入、查询和删除功能。

答案解析:同样地,我们需要定义一个图书类,包括图书名称、作者、出版社等属性,并实现相应的方法来实现信息的录入、查询和删除功能。

在主函数中创建图书对象,调用相应的方法即可实现图书管理系统。

3. 设计一个C++程序,模拟实现一个简单的银行账户管理系统,包括账户余额、存款、取款等功能。

答案解析:在这个问题中,我们需要定义一个银行账户类,包括账户余额、存款、取款等属性,并实现相应的方法来实现账户管理系统。

在主函数中创建账户对象,调用相应的方法即可实现银行账户管理系统。

通过以上习题的解答,我们可以看到C面向对象程序设计的重要性和实际应用。

通过不断地练习和实践,我们可以更好地掌握面向对象程序设计的知识和技能,提高编程能力,为今后的工作和学习打下坚实的基础。

希望同学们能够认真对待课后习题,不断提升自己的编程水平。

面向对象程序设计C课后题答案

面向对象程序设计C课后题答案

第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。

第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。

类和对象之间的关系是抽象和具体的关系。

类是多个对象进行综合抽象的结果,一个对象是类的一个实例。

在面向对象程序设计中,总是先声明类,再由类生成对象。

类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。

(2)需要用属性来描述它的某些特性。

(3)有一组操作,每一个操作决定了对象的一种行为。

(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

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

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

c 面向对象程序设计教程习题答案C面向对象程序设计教程习题答案在学习C面向对象程序设计的过程中,习题答案是非常重要的一部分。

通过练习习题,可以加深对知识点的理解,提高编程能力。

下面我们就来看一些常见的C面向对象程序设计习题及其答案。

1. 什么是面向对象程序设计?面向对象程序设计是一种程序设计范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。

面向对象程序设计可以提高代码的可维护性和可重用性,是现代软件开发中非常重要的一部分。

2. 什么是类和对象?类是一种抽象的数据类型,它描述了一类对象的共同特征和行为。

对象是类的实例,它具体描述了一个具体的实体。

在C面向对象程序设计中,类和对象是非常重要的概念。

3. 请编写一个简单的类和对象的例子。

```c#include <stdio.h>// 定义一个简单的类class Person {public:int age;char name[20];void display() {printf("Name: %s, Age: %d\n", name, age);}};int main() {// 创建一个对象Person p;p.age = 25;strcpy(, "Alice");p.display();return 0;}```4. 什么是封装?封装是面向对象程序设计中的一种重要特性,它将数据和行为封装在一个类中,对外部隐藏了内部的实现细节。

封装可以保护数据的安全性,同时提供了简单的接口供外部访问。

5. 请编写一个简单的封装例子。

```c#include <stdio.h>// 定义一个简单的类class Circle {private:double radius;public:void setRadius(double r) {radius = r;}double getArea() {return 3.14 * radius * radius;}};int main() {// 创建一个对象Circle c;c.setRadius(5.0);printf("Area: %f\n", c.getArea());return 0;}```以上就是一些常见的C面向对象程序设计习题及其答案。

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、关于构造函数,下列说法不正确的是()。

(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。

C 面向对象程序设计习题解答(全)

C  面向对象程序设计习题解答(全)

4答案 n=2,sum=2 n=3,sum=5 n=5,sum=10
5答案 x=3 6答案 x=1,y=2 x=30,y=40 7答案 1 2 3 4 exit main 3 2 1 8答案 n=100 9答案 the student is:Li Hu the teacher is:Wang Ping 10答案 2 11答案 1035,789.504 12答案 13答案
一、选择题 1 2 3 4 D B B C
类和对象的进一步解析
5 D 6 D 7 D B 8 C B 9 10 11 12 13 14 15 16 B D B A A C B A
17 18 19 20 21 22 23 24 C C D B A D 二、填空题 1 this 2所有成员 3友元类、友元函数 4 friend 5 程序编译、程序结束 三、程序阅读题
第六章 派生与继承
一、选择题 1(1) 1(2) 2 A B 3 4 5 6 7 8 9 10 11 D C C C D D B C A D
二、填空题 1 继承 2 具体化、抽象 3 公有继承、保护继承、私有继承 4 子对象 5 public(共有的)、protected(保护的)、不可访问 6 protected(保护的)、protected(保护的)、不可访问的 7 private(私有的)、private(私有的)、不可访问的 8 二义性 三、判断下列描述的正确性 1 2 3 4 5 6 7 8 9 10 11 12 13 √ × × × × × √ √ × × √ √ ×
1、 选择题 1 2 3 4 5 6 7 C 8 9 10 D D D C A D C 2、 程序阅读题 1答案 a=639,b=78,c=12 2答案 a=5,b=8 a=8,b=5 3答案 10 4答案 x=20.6 y=5 z=A x=216.34 y=5 z=A x=216.34 y=2 z=A x=216.34 y=2 z=E 5答案 ic=11 fc=7.82 ic=5 fc=2.15 3、 判断下列描述的正确性 1 2 √ × D A

2018年面向对象程序设计试题及参考答案

2018年面向对象程序设计试题及参考答案
三、根据要求补充完善程序(每小题 4 分,共 20 分)
1. 请在指定位置处给出成员函数 getitem 的类外定义,返回数据成员 x[i]的值。下 标 i 通过参数带入。 template<class T,int N> class A{
T x[N]; public:
void set(T t){ for(int i=0;i<N;++i) x[i]=t; } T getitem(int); }; //指 定 位 置 void main(){ A<int,50> a; a.set(3); cout<<a.getitem(5); } 2. 参照主函数,在指定位置处补充 B 类公有函数成员,能够初始化并输出 a1.x 和 a2.x 的值。不可增加数据成员。
请编程实现: 1. (4 分)构造 Point 类,输出点坐标和颜色。 2. (4 分)构造 Line 类,输出两个端点坐标及颜色。 3. (4 分)构造 Circle 类,带颜色属性,输出圆心坐标、半径长度、颜色。 (3 分)编写一个测试主函数,能够通过创建 Print 类对象并调用其 print 成员函数,能够 输出两个点、两条线和两个圆。
class A{ int x;
public: A(int a){x=a;} int getx(){return x;}
}; class B:public virtual A{
int y; public:
B(int a,int b):A(a),y(b){} int gety(){return y;} }; class C:public virtual A{ int y; public: C(int a,int b):A(a),y(b){} int gety(){return y;} }; class D:public B,public C{ int z; public: //指 定 位 置 int getz(){return z;} }; void main(){ D d(1,2,3,4); cout<<d.getx()<<d.B::gety()<<d.C::gety()<<d.getz(); } 5. 请在指定位置处完善运算符重载函数,能够实现派生类对象的正确赋值。 class A{ int x; public: A(int a){x=a;} A operator=(A &a){x=a.x;} int getx(){return x;} }; class B:public A{ int y; public: B(int a,int b):A(a),y(b){} B operator=(B &b){

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

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

面向对象程序设计试题及答案一、试题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. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。

c面向对象程序设计期末考试题及完整参考答案

c面向对象程序设计期末考试题及完整参考答案
2)
3)
4)
5)
6)
01223,王五,男,35岁
7)
洛阳理工学院
参考答案及评分标准
课程:
一、填空题(每空1分,共20分)
1.属性操作
2.泛化依赖泛化
3.命名空间 主程序方法 程序集
4.值类型委托类接口
5.方法名称参数列表
6.构造
7.整数字符串
8.显式私有
9.静态
二、判断题(每小题1分,共5分)
1.V2.V3.V4.V5.X
A)st.read() B)st::read() C)Student.read() D)Student::read()
四、简答题(每小题5分,共15分)
1.在面向对象的模型中,什么是类的多态性?C#是如何实现类的多态特性的?
2.
3.
五、
分)
1.
class Circle
{
protected float _r;〃圆的半径
三、选择题(每小题2分,共10分)
1.在设计一个类时,如果不希望外部对象访问该类成员,应定义为()。
A)私有的或保护的B)公有的C)保护的或者共有的D)公有的或者私有的
2.在类中未说明访问权限的情况下,所有成员都是()的
A)共有的B)私有的C)内部的D)保护的
3.关于数组型参数下面那个说法是错误的()
学院
考试时间:120分钟
一、填空题(每空1分,共20分)
1.客观世界中的事物都是对象。对象具有自己的,用来描述对象的静态特征;而对象的用于描述对
象的动态特征。
2.在面向对象的模型中,对象之间的关系可在类级别上概述为聚合、、口一般关联等四种。其中基
类和派生类之间的关系属于关系。

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

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

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

1月全国自考面向对象程序设计试题及答案解析

1月全国自考面向对象程序设计试题及答案解析

全国2018年1月高等教育自学考试面向对象程序设计试题课程代码:02328一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。

每小题2分,共38分)1.下面对于指针的描述不正确的是( )。

A.指针是地址变量B.指针不能用除0以外的常量赋值C.两个指针变量的加减法无意义D.指针指向不同基类型的变量长度不同2.下面对于析构函数的描述中不正确的是( )。

A.析构函数是内置函数B.析构函数与类名相同C.析构函数不能有参数D.析函数在对象撤销时自动执行3.下列指针用法中错误的是( )。

A. int i;int*ptr=&i;B. int i;int *ptr;i=*ptr;C. int *ptr;ptr=0;D. int i=5;int *ptr;*ptr=i;4.派生类的对象对它的基类成员中什么是可访问的( )?A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员5.在( )情况下适宜采用inline定义内联函数。

A.函数体含有循环语句B.函数体含有递归语句C.需要加快程序的执行速度D.函数代码多、不常调用6.在类中说明的成员可以使用关键字( )进行修饰。

A. publicB. externC. cpuD. register7.如果类A被说明成类B的友元,则( )。

A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元8.定义析构函数时,应该注意( )。

A.其名与类名完全相同B.返回类型是void类型C.无形参,也不可重载D.函数体中必须有delete语句9.在类中声明转换函数时不能指定( )。

A.参数B.访问权限C.操作D.标识符10.在派生类中重新定义虚函数时必须在( )方面与基类保持一致。

A.参数类型B.参数名字C.操作内容D.赋值111.设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是( )。

10月全国自考面向对象程序设计试题及答案解析

10月全国自考面向对象程序设计试题及答案解析

全国2018年10月高等教育自学考试面向对象程序设计试题课程代码:02328一、单项选择题(本大题共12小题,每小题2分,共24分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1. 所谓多态性是指( )A. 不同的对象调用不同名称的函数B. 不同的对象调用相同名称的函数C. 一个对象调用不同名称的函数D. 一个对象调用不同名称的对象2. 有如下程序段:int *p,a[6]={-1,0,1,2,3,4}; p=a+3;执行该程序段后,*p的值为( )A. 4B. 2C. 1D. NULL3.类MyA的拷贝初始化构造函数是( )A. MyA()B. MyA(MyA*)C. MyA(MyA&)D. MyA(MyA)4.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为( )A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数5.以下有关继承的叙述正确的是( )A. 构造函数和析构函数都能被继承B. 派生类是基类的组合C. 派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员D. 基类的公有成员一定能被派生类的对象访问6. 解决二义性问题的方法有( )A. 只能使用作用域分辨操作符B. 使用作用域分辨操作符或赋值兼容规则C. 使用作用域分辨操作符或虚基类D. 使用虚基类或赋值兼容规则7. 假设类X以类Y作为它的一个基类,并且X类的名字func()支配Y类的名字func(),obj 为类X的对象,则obj.func()语句实现的功能为( )A. 先执行类X的func(),再执行访问类Y的func()B. 先执行类Y的func(),再执行访问类X的func()C. 执行类X的func()D. 执行类Y的func()18.以下叙述正确的是( )A. 构造函数调用虚函数采用动态联编B. 构造函数可以说明为虚函数C. 当基类的析构函数是虚函数时,它的派生类的析构函数也是虚函数D. 析构函数调用虚函数采用动态联编9.以下关于抽象类的描述正确的是( )A. 不能说明指向抽象类对象的指针或引用B. 可以说明抽象类对象C. 抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出D. 抽象类的纯虚函数的实现由派生类给出10.在下面格式化命令的解释中,错误的...是( )A. ios::skipws 跳过输入中的空白字符B. ios::fill() 获得当前的填充字符C. ios::hex 转换基数为八进制形式D. ios::precision 返回当前的精度11.下面运算符中,不能被重载的运算符是( )A. <=B. -C. ?:D. []12.下列有关模板和继承的叙述正确的是( )A. 模板和继承都可以派生出一个类系B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定C. 从动态性能看,继承类系比模板类系具有更多的动态特性D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系二、填空题(本大题共8小题,每小题2分,共16分)请在每小题的空格中填上正确答案。

兰大18秋《面向对象程序设计课程作业_C(满分)

兰大18秋《面向对象程序设计课程作业_C(满分)

单选题下面()不是抽象类的特征A: 可以说明纯虚函数B: 不能说明抽象类的对象C: 用作基类,提供公用的接口D: 可以定义虚构造函数单选题定义类模板,用关键字()A: constB: newC: deleteD: template单选题int fun1(duoble a){return a*=a;} int fun2(double x,double y) { double a=0,b=0; a=fun1(x); b=fun1(y); return (int)(a+b); } mai n() {double w; w=fun2(1.1,2.0);……} 程序执行后变量w中的值是()A: 5.21B: 5C: 5.0D: 0.0单选题有如下函数定义:void func (int a,int&b) {a++; b++;} 若执行代码段:int x=0 ,y=1 func(x,y); 则变量x和y值分别是 ()A: 0和1B: 1和1C: 0和2D: 1和2单选题以下能正确定义字符串的语句是()A: char str[]={‘\\064'}B: cha r str=”\\x43”C: char str=”D: char str[]=”\\0”单选题语句ofstream f(”SALARY. DAT',ios::app iios::binary);的功能是建立流对象f,试图打开文件SAL:aRY. D AT并与之连接,并且()A: 若文件存在,将文件写指针定位于文件尾,若文件不存在,建立一个新文件B: 若文件存在,将其置为空文件,若文件不存在,打开失败C: 若文件存在,将文件写指针定位于文件首,若文件不存在,建立一个新文件D: 若文件存在,打开失败,若文件不存在,建立一个新文件单选题假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:()A: AB operator+(AB & a , AB & b)B: AB operator+(AB & a)C: operator+(AB a)D: AB & operator+( )单选题C++对C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是()A: 增加了一些新的运算符B: 允许函数重载,并允许设置缺省参数C: 规定函数说明符必须用原型D: 引进了类和对象的概念单选题对于任意一个类,析构函数最多为A: 0B: 1C: 2D: 3单选题当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中A: 都是虚函数B: 只有被重新说明时才是虚函数C: 只有被重新说明为virtual时才使虚函数D: 都不是虚函数单选题一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明A: 需加上类域的限定B: 不需加上类域的限定C: 类域的限定可加可不加D: 不需要任何限定单选题C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是()。

C面向对象程序设计答案18章_谭浩强1

C面向对象程序设计答案18章_谭浩强1

第一章5:#include <iostream> using namespace std;int main(){cout<<"This"<<"is"; cout<<"a"<<"C++";cout<<"program."<<endl; return 0;}6:#include <iostream> using namespace std;int main(){int a,b,c;a=10;b=23;c=a+b;cout<<"a+b=";cout<<c;cout<<endl;return 0;}7:#include <iostream> using namespace std;int main(){int a,b,c;int f(int x,int y,int z); cin>>a>>b>>c;c=f(a,b,c);cout<<c<<endl;return 0;}int f(int x,int y,int z){int m;if (x<y) m=x;else m=y;if (z<m) m=z;return(m);}8: #include <iostream>using namespace std;int main(){int a,b,c;cin>>a>>b;c=a+b;cout<<"a+b="<<a+b<<endl;return 0;}9:#include <iostream>using namespace std;int main(){int add(int x,int y);int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}int add(int x,int y){int c;c=x+y;return(c);}10:#include <iostream>using namespace std;int main(){void sort(int x,int y,int z);int x,y,z;cin>>x>>y>>z;sort(x,y,z);return 0;}void sort(int x, int y, int z){int temp;if (x>y){temp=x;x=y;y=temp;}core;int k=0;for(int i=1;i<5;i++)if(arr[i].score>max_score){max_score=arr[i].score;k=i;}cout<<arr[k].num<<""<<max_score<<endl;}6:#include <iostream>using namespace std;class Student{public:Student(int n,floats):num(n),score(s){}void change(int n,float s){num=n;score=s;}voiddisplay(){cout<<num<<""<<score<<endl;}private:int num;float score;};int main(){Student stud(101,;();(101,;();return 0;}7: 解法一#include <iostream>using namespace std;class Student{public:Student(int n,float s):num(n),score(s){}void change(int n,float s) {num=n;score=s;}void display() {cout<<num<<""<<score<<endl;}otal();Product::display();return 0;}10:#include <iostream>using namespace std;class Date;class Time{public:Time(int,int,int);friend void display(const Date &,const Time &); private:int hour;int minute;int sec;};Time::Time(int h,int m,int s){hour=h;minute=m;sec=s;}class Date{public:Date(int,int,int);friend void display(const Date &,const Time &); private:int month;int day;int year;};Date::Date(int m,int d,int y){month=m;day=d;year=y;}void display(const Date&d,const Time &t){cout<<<<"/"<<<<"/"<<<<endl;cout<<<<":"<<<<":"<<<<endl;}int main(){Time t1(10,13,56);Date d1(12,25,2004);display(d1,t1);return 0;}11:#include <iostream>using namespace std;class Time;class Date{public:Date(int,int,int);friend Time;private:int month;int day;int year;};Date::Date(int m,int d,inty):month(m),day(d),year(y){}class Time{public:Time(int,int,int);void display(const Date&);private:int hour;int minute;int sec;};Time::Time(int h,int m,ints):hour(h),minute(m),sec(s){}void Time::display(constDate &d){cout<<<<"/"<<<<"/"<<<<endl;cout<<hour<<":"<<minute<<":"<<sec<<endl;}int main(){Time t1(10,13,56);Date d1(12,25,2004);(d1);return 0;}12:#include <iostream>using namespace std;template<class numtype>class Compare{public:Compare(numtypea,numtype b);numtype max();numtype min(); private:numtype x,y;};template <class numtype> Compare<numtype>::Compa re(numtype a,numtype b) {x=a;y=b;}template <class numtype> numtypeCompare<numtype>::max() {return (x>y)?x:y;} template <class numtype> numtypeCompare<numtype>::min() {return (x<y)?x:y;}int main(){Compare<int> cmp1(3,7); cout<<()<<" is the Maximum of two integer numbers."<<endl;cout<<()<<" is the Minimum of two integer numbers."<<endl<<endl; Compare<float> cmp2,; cout<<()<<" is the Maximum of two float numbers."<<endl;cout<<()<<" is the Minimum of two float numbers."<<endl<<endl; Compare<char>cmp3('a','A');cout<<()<<" is the Maximum of two characters."<<endl;cout<<()<<" is the Minimum of two characters."<<endl;return 0;}第四章1:#include <iostream>using namespace std;class Complex{public:Complex(){real=0;imag=0;}Complex(double r,doublei){real=r;imag=i;}double get_real();double get_imag();void display();private:double real;double imag;};double Complex::get_real(){return real;}double Complex::get_imag(){return imag;}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}Complex operator +(Complex &c1,Complex &c2){return Complex()+(),()+());}int main(){Complexc1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c3=";();return 0;}2:#include <iostream>using namespace std;class Complex{public:Complex(){real=0;imag=0;}Complex(double r,doublei){real=r;imag=i;}Complexoperator+(Complex &c2);Complexoperator-(Complex &c2);Complexoperator*(Complex &c2);Complexoperator/(Complex &c2);void display();private:double real;double imag;};ComplexComplex::operator+(Complex &c2){Complex c;=real+;=imag+;return c;}ComplexComplex::operator-(Complex&c2){Complex c;=;=;return c;}ComplexComplex::operator*(Comple x &c2){Complex c;=real**;=imag*+real*;return c;}ComplexComplex::operator/(Comple x &c2){Complex c;=(real*+imag*/*+*;=(imag**/*+*;return c;}void Complex::display() {cout<<"("<<real<<","<<imag <<"i)"<<endl;}int main(){Complexc1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c1+c2=";();c3=c1-c2;cout<<"c1-c2=";();c3=c1*c2;cout<<"c1*c2=";();c3=c1/c2;cout<<"c1/c2=";();return 0;}3:#include<iostream> ,"presid ent","135 Beijing Road,Shanghai","(021)",; ( );return 0;} 10:#include <iostream>#include <cstring>using namespace std;class Teacherum<<" "<<staf[i].name<<""<<staf[i].age<<""<<staf[i].pay<<endl;((char*)&staf[i],sizeof(staf[i]));}cout<<"please input datayou want insert:"<<endl;for(i=0;i<2;i++){cin>>>>>>>>;(0,ios::end);((char*)&staf1,sizeof(staf1));}(0,ios::beg);for(i=0;i<7;i++){((char*)&staf[i],sizeof(staf[i]));cout<<staf[i].num<<""<<staf[i].name<<""<<staf[i].age<<""<<staf[i].pay<<endl;}bool find;cout<<"enter number youwant search,enter 0 tostop.";cin>>num;while(num){find=false;(0,ios::beg);for(i=0;i<7;i++){((char*)&staf[i],sizeof(staf[i]));if(num==staf[i].num){m=();cout<<num<<" isNo."<<m/sizeof(staf1)<<endl;cout<<staf[i].num<<""<<staf[i].name<<""<<staf[i].age<<""<<staf[i].pay<<endl;find=true;break;}}if(!find)cout<<"can't find"<<num<<endl;cout<<"enter number youwant search,enter 0 tostop.";cin>>num;}();return 0;}6:解法一#include <iostream>#include <strstream>using namespace std;struct student{int num;char name[20];double score;};int main(){studentstud[3]={1001,"Li",78,1002,"Wang",,1004,"Fun",90},stud1[3];char c[50];int i;ostrstream strout(c,50);for(i=0;i<3;i++)strout<<stud[i].num<<""<<stud[i].name<<""<<stud[i].score<<" ";strout<<ends;cout<<"arrayc:"<<endl<<c<<endl<<endl;istrstream strin(c,50);for(i=0;i<3;i++)strin>>stud1[i].num>>stud1[ i].name>>stud1[i].score; cout<<"data from array c to array stud1:"<<endl;for(i=0;i<3;i++)cout<<stud1[i].num<<" "<<stud1[i].name<<""<<stud1[i].score<<endl; cout<<endl;return 0;}6:解法二#include <iostream>#include <strstream>using namespace std; struct student{int num;char name[20];double score;};int main(){int i;studentstud[3]={1001,"Li",78,1002," Wang",,1004,"Fun",90},stud 1[3];char c[50];strstreamstrio(c,50,ios::in|ios::out); for(i=0;i<3;i++)strio<<stud[i].num<<" "<<stud[i].name<<""<<stud[i].score<<" ";strio<<ends;cout<<"arrayc:"<<endl<<c<<endl<<endl; for(i=0;i<3;i++)strio>>stud1[i].num>>stud1[ i].name>>stud1[i].score; cout<<"data from array c to array stud1:"<<endl;for(i=0;i<3;i++)cout<<stud1[i].num<<""<<stud1[i].name<<""<<stud1[i].score<<endl;cout<<endl;return 0;}第八章1:#include <iostream>#include <cmath>using namespace std;doubleq(double,double,double);void main(){double a,b,c,p,x1,x2;cout<<"please enter a,b,c:";cin>>a>>b>>c;p=-b/(2*a);try{x1=p+q(a,b,c);x2=p-q(a,b,c);cout<<"x1="<<x1<<endl<<"x2="<<x2<<endl;}catch(double d){cout<<"a="<<a<<",b="<<b<<",c="<<c<<",disc="<<d<<",error!"<<endl;}cout<<"end"<<endl;}double q(double a,doubleb,double c){double disc;disc=b*b-4*a*c;if (disc<0) throw disc;return sqrt(disc)/(2*a);}2:#include <iostream>#include <string>using namespace std;class Student{public:Student(int n,string nam){cout<<"constructor-"<<n<<endl;num=n;name=nam;}~Student(){cout<<"destructor-"<<num<<endl;}void get_data();private:int num;string name;};void Student::get_data(){if(num==0) throw num;else cout<<num<<""<<name<<endl;cout<<"inget_data()"<<endl;}void fun(){Student stud1(1101,"tan");();try{Student stud2(0,"Li");();}catch(int n){cout<<"num="<<n<<",error!"<<endl;}}int main(){cout<<"main begin"<<endl;cout<<"call fun()"<<endl;fun();cout<<"main end"<<endl;return 0;}3://main file#include <iostream>using namespace std;#include ""#include ""using namespace std;using namespace student1;int main(){Studentstud1(1001,"Wang",18,"123 Beijing Road,Shanghua"); ();student2::Studentstud2(1102,"Li",'f',;();return 0;}//,文件名为#include <string> namespace student1 {class Student{public:Student(int n,string nam,int a,string addr){num=n;name=nam;age=a;a ddress=addr;}void show_data();private:int num;string name;int age;string address;};void Student::show_data() {cout<<"num:"<<num<<" name:"<<name<<" age:"<<age<<"address:"<<address<<endl;}}//,文件名为#include <string> namespace student2 {class Student{public:Student(int n,string nam,char s,float sco){num=n;name=nam;sex=s;sc ore=sco;}void show_data();private:int num;string name;char sex;float score;};void Student::show_data(){cout<<"num:"<<num<<" name:"<<name<<" sex:"<<sex<<"score:"<<score<<endl; }}。

C++面向对象-课程设计题目(2018版)

C++面向对象-课程设计题目(2018版)

C++面向对象-课程设计题目(2018版)《C++面向对象程序设计》课程设计任务书2018/2019学年第1学期班级:2018级软件工程、网络工程一、设计目的《面向对象程序设计》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,能够运用面向对象的原理和方法解决简单的实际问题,逐步培养学生良好的程序设计能力。

二、设计要求通过这次设计,要求在逻辑特性和结构的设计及其实现等方面中加深对课程基本内容的理解。

在程序结构与功能上,充分运用面向对象的思想和方法,包括信息封装、继承、多态以及文件的操作。

在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

三、设计内容(任意选1个,1难度系统高,2-4难度系数较高,其余一般。

程序中必须有类的实现及使用,否则不合格。

可以2个人同选一个题目,验收时必须熟练应答)。

(一)快乐七巧板(3人)少儿在玩七巧板积木时,不知道如何拼图,对照图纸很麻烦。

该软件要求利用图形界面为少儿设计一款七巧板拼图软件,包含基本的7个元素的显示,完成不少于5种图案的拼图展示,并且能够保存和增加新的拼图。

要求用类的继承和多态来实现。

(一)新生基本信息统计软件有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。

要求设计链表类来实现,并统计学生人数。

文本界面为:1. 新增学生信息2. 删除学生信息3. 导入学生信息(已经保存于的文件信息)4. 学生信息搜索(按姓名)5. 学生信息统计(按专业或性别或年龄---年龄要自动计算)6. 按英语成绩排序7. 学生信息保存8. 退出******请选择:1(二)某公司雇员工资支付软件一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager)每月按固定工资支付,临时工(Floater )按小时支付。

2018年c程序设计自考试题及答案

2018年c程序设计自考试题及答案

2018年c程序设计自考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述,错误的是()。

A. C语言是一种高级语言B. C语言是一种面向对象的程序设计语言C. C语言具有结构化的特点D. C语言具有较好的移植性答案:B2. 在C语言中,以下哪个运算符用于表示逻辑与?A. %B. &&C. ||D. !答案:B3. 下列关于函数的描述,正确的是()。

A. 函数可以嵌套定义B. 函数可以递归调用C. 函数的返回值类型必须与声明的一致D. 函数的参数可以是任意类型答案:C4. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A5. 下列关于指针的描述,错误的是()。

A. 指针可以指向任何类型的数据B. 指针可以作为函数的参数C. 指针可以作为函数的返回值D. 指针不能进行算术运算答案:D6. 在C语言中,以下哪个关键字用于定义一个数组?A. arrayB. structC. enumD. int答案:A7. 下列关于文件操作的描述,错误的是()。

A. 文件操作需要包含头文件stdio.hB. 文件操作需要使用文件指针C. 文件操作只能进行文本文件操作D. 文件操作可以使用fopen函数打开文件答案:C8. 在C语言中,以下哪个关键字用于定义一个枚举类型?B. structC. unionD. typedef答案:A9. 下列关于循环的描述,错误的是()。

A. for循环可以嵌套使用B. while循环可以无限循环C. do-while循环至少执行一次D. 循环中可以使用break语句退出循环答案:D10. 在C语言中,以下哪个关键字用于定义一个宏?A. defineB. macroC. constD. typedef答案:A二、填空题(每题2分,共20分)1. C语言中,表示逻辑或的运算符是____。

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

…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………重点大学考试试题答案(A卷)2018 ~2019 学年1 学期面向对象程序设计课程一、单选题(每小题2分,共20分)CCDCB AAABA二、改错题(共3小题,每小题6分,共18分)1. main()函数第3句出错,因为类Complex无类类型转换函数,将Complex对象转换成float。

改正:在Complex中类增加:operator float(){ return real; }2. main()函数第2句出错,因为常对象obj不能调用非常成员函数,改正:在CTest类中:将CTest(int x)换成fCTest(int x) const。

或者将main()中const CTest obj(5);换成CTest obj(5);3. 当程序执行对象p2的析构函数时,对象p1的数据成员ptr出现了所谓的“指针悬挂问题”,这说明C++中提供给对象的默认的赋值运算符并不是万能的,解决的办法就是重载赋值运算符“=”,使对象不但能浅拷贝,还能实现深层拷贝。

STRING& STRING::operator=(const STRING&s){if(this==&s)return *this;delete ptr;ptr=new char[strlen(s.ptr)+1];strcpy(ptr,s.ptr);return *this;}三、读程序,给出程序的输出结果。

(每小题6分,共24分)【1】Constructor of PersonConstructor of StudentConstructor of PersonConstructor of TeacherDestructor of TeacherDestructor of PersonDestructor of StudentDestructor of Person【2】12,2【3】56789【4】1123444四、编程题(共38分=12分+12分+14分)1. 解答:#include<iostream.h>class Test ……………………………4分{ int x,y;public:void init(int,int);void print();};void Test::init(int i,int j) ……………………………4分{ x=i;y=j;}void Test::print() ……………………………4分{ cout<<"测试结果:"<<x<<"-"<<y<<"="<<x-y<<endl;}2.解答:①fraction operator +(fraction & f1,fraction & f2) { ……………………………4分int nfz = f1.fz*f2.fm+f1.fm*f2.fz;int nfm = f1.fm*f2.fm;return fraction(nfz,nfm);}②fraction & fraction::operator =(fraction & f) { ……………………………4分fz=f.fz;fm=f.fm;return *this;}③istream & operator >>(istream & is,fraction & f) { ……………………………4分is>>f.fz>>f.fm;return is;}3.解答:#include<iostream>using namespace std;class employee{ ……………………………4分protected:char name[20];int empNo;float salary;public:employee(char *cp="李强",int no=1001);employee(employee&);void setname(char *cp);void setempNo(int no);void setsalary(float sa);char*getname();int getempNo();float getsalary();void display();employee compsalary(employee *emp);};employee::employee(char *cp,int no){ int i=0;while(*cp){ name[i]=*cp;i++;cp++;}name[i]='\0';empNo=no;}employee::employee(employee &em){ int i=0;while([i]){ name[i]=[i];i++;}name[i]='\0';empNo=em.empNo;salary=em.salary;}void employee::setname(char *cp){ int i=0;while(*cp){ name[i]=*cp;i++;cp++;}name[i]='\0';}void employee::setempNo(int no){ empNo=no;}void employee::setsalary(float sa){ salary=sa;}char*employee::getname(){ return name;}int employee::getempNo(){ return empNo;}float employee::getsalary(){ return salary;}void employee::display(){ cout<<"工号为"<<empNo<<"的雇员"<<name<<"的月薪为"<<salary<<endl; }employee employee::compsalary(employee *emp){if(this->salary>=emp->salary)return *this;elsereturn *emp;}class worker : public employee ……………………………4分{public:worker(char*,int,int);void setproductNum(int n){ productNum=n;}int getproductNum(){ return productNum;}void pay();private:int productNum;static float proper; //每件产品的利润};float worker::proper=20; //假设每件产品的利润为20元worker::worker(char *name,int no,int pronum):employee(name,no){productNum=pronum;}void worker::pay(){salary=productNum*proper*0.2;}class technician : public employee ……………………………4分{public:technician(char*,int,float);void sethours(float h){ workHours=h;}float gethours(){ return workHours;}void pay();private:float workHours;static float payperhour; //科研人员每小时工作的酬金};float technician::payperhour=40; //假设科研人员每小时工作的酬金为40元technician::technician(char *name,int no,float hours):employee(name,no){ workHours=hours;}void technician::pay(){ salary=workHours*payperhour;}class salesman : public employee{public:salesman(char*,int,float);void setmonthlysales(int num){ monthlysales=num;}int getmonthlysales(){ return monthlysales;}void pay();private:float monthlysales;static float percent; //销售人员的销售提成};float salesman::percent=0.5; //假设销售人员的销售提成为50% salesman::salesman(char *name,int n,float sn):employee(name,n){monthlysales=sn;}void salesman::pay(){salary=monthlysales*percent;}void main() ……………………………2分{worker w1("张三",1001,1000);technician t1("李四",1002,200);salesman s1("王五",1003,10000);w1.pay();t1.pay();s1.pay();cout<<"工人"<<w1.getname()<<"的月薪为"<<w1.getsalary()<<"元\n";cout<<"科研人员"<<t1.getname()<<"的月薪为"<<t1.getsalary()<<"元\n";cout<<"销售人员"<<s1.getname()<<"的月薪为"<<s1.getsalary()<<"元\n"; }。

相关文档
最新文档