2022年面向对象程序设计C++山师面向对象程序设计试卷A-评分标准 .pdf
山东师范大学信息科学与工程2009-2010 学年第一学期2009 级专升本 面向对象程序设计A 卷期终考试参考答案一、选择题(25 小题,共 25 分)1 A 6 D 11 C 16 D 21 C 2 D 7 D 12 A 17 B 22 C 3 D 8 B 13 C 18 D 23 A 4 D 9 A 14 A 19 C 24 C 5 C 10 B 15 D 20 D 25 D 二、填空题(每空 2 分,共 10 分)1 继承2 多态3 对象4 封装5 继承三、分析程序的执行结果,填空(5 小题,每小题 4 分,共 20 分)1 5,7 22,25 2.12,20 14,30 16,40 18,50 20,60 22,70 24,80 26,90 3.Default Default Default Constructor.Destructor Ma Constructor.Destructor Wang Constructor.Destructor Li Ma,4.8 Wang,3.6 Li,3.1 Destructor Li Destructor Wang Destructor Ma 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -5.con.A con.B1 con.B2 con.C 5 7 5 3 6 des.C des.B2 des.B1 des.A 四.程序设计题(4 小题,共 45 分)1.编写一个程序,设计一个产品类Product,其定义如下:class Product char*name;/产品名称int price;/产品单价int quantity;/剩余产品数量public:Product(char*n,int p,int q);/构造函数Product();/析构函数void buy(int money);/购买产品void get()const;/显示剩余产品数量;并用数据进行测试。(10 分)#include#include class Product char*name;int price;int quantity;public:Product(char*n,int p,int q)name=new charstrlen(n)+1;strcpy(name,n);4 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -price=p;quantity=q;Product()if(name)delete name;name=0;void buy(int money)int n,r;n=money/price;if(nquantity)cout 数量不够 endl;else quantity-=n;r=money%price;cout产品:name 单价:price 元 顾客;coutmoney 元,买了 n 台,剩余 r 元endl;void get()const cout产品:name 单价:price 元 剩余 quantity 台 endl;void main()Product p1(电视机,2000,15);p1.buy(7000);p1.get();p1.buy(4500);p1.get();2.以面向对象的方法设计一个类,此类包含3 个私有数据:unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17 元/公升,有铅汽油的价格是16元/公升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站当天的总收入。(10 分)#include class Tc 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -private:double unlead,lead,total;int unprice,price;public:Tc()unprice=17;price=16;void getdata()coutunlead;coutlead;total=unprice*unlead+price*lead;void disp()cout总收入:totalendl;void main()Tc A;A.getdata();A.disp();3.编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。(12 分)#include#include class rectangle private:float ledge,sedge;public:rectangle();rectangle(float a,float b)ledge=a;sedge=b;float area()return ledge*sedge;void addarea(rectangle r1,rectangle r2)cout总面积:r1.ledge*r1.sedge+r2.ledge*r2.sedgeendl;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 7 页 -;void main()rectangle A(3.5,2.5),B(4.2,3.8),C;C.addarea(A,B);4.编一个程序计算正方体,球体和圆柱体的表面积和体积。要求:抽象出一个公共基类container 为抽象类,在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数据成员 radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派生出的三个类,都有求表面积和体积的实际定义。键盘输入radius 的值后,可以输出这3 种立方体的面积。(13 分)#include class Circle public:Circle(double i)r=i;double Area(double r)a=r*r*3.14159;return a;void Show()coutarea=Area(r)endl;private:double r,a;class Rectangle public:Rectangle(double i,double j)l=i;w=j;double Area(double i,double j)a=i*j;return a;void Show()coutarea=Area(l,w)endl;private:double l,w,a;class Graph:public Circle,public Rectangle public:Graph(double i,double j,double k):Circle(i),Rectangle(j,k)r=i;l=j;w=k;double Area(double r,double l,double h)a=Circle:Area(r)+Rectangle:Area(l,h);return a;void Show()coutarea=Area(r,l,w)endl;private:double r,l,w,a;void main()Circle c(10);c.Show();Rectangle rec(20,50);rec.Show();Graph g(10.0,20.0,50.0);g.Show();名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -考试大纲第 1 章 概论1.1 面向对象程序设计基本概念1.2 C+的词法及词法规则1.3 C+程序结构的组成1.4 C+程序的书写格式第 2 章数据类型和表达式2.1 基本数据类型2.2 常量和变量2.3 数组类型2.4 枚举类型2.5 运算符2.6 表达式2.7 类型定义第 3 章指针和引用3.1 指针3.2 引用3.3 指针与引用的区别3.4 指向数组的指针第 4 章条件、循环及编译预处理4.1 预处理功能4.2 条件语句4.3 选择语句4.4 循环语句第 5 章函数5.1 函数的定义和说明5.2 函数的调用5.3 函数的参数5.4 内联函数5.5 函数重载5.6 函数的嵌套调用和递归调用5.7 作用域第 6 章类和对象6.1 类的定义6.2 对象的定义6.3 对象的初始化6.4 成员函数的特性名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -6.5 静态成员6.6 友元6.7 类的作用域6.8 对象指针和对象引用6.9 对象和数组6.10 常类型6.11 子对象和堆对象第 7 章继承和派生7.1 继承7.2 基类和派生类7.3 单继承7.4 多继承7.5 虚基类第 8 章多态性和虚函数8.1 运算符重载8.2 静态联编和动态联编8.3 虚函数8.4 纯虚函数与抽象类8.5 虚析构函数名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -