private:
intc;
};
voidmain()
{
Cc1(5,7,3,6);
c1.print();
}
四、程序设计题
将编写的程序标上小题题号,写在答题纸上。
本题共4小题,45分。
1.编写一个程序,设计一个产品类Product,其定义如下:
ClassProduct
{
char*name;//产品名称
intprice;//产品单价
intquantity;//剩余产品数量
public:
Product(char*n,intp,intq);//构造函数
~Product();//析构函数
voidbuy(intmoney);//购买产品
voidget()const;//显示剩余产品数量
};
并用数据进行测试。
(10分)
2.以面向对象的方法设计一个类,此类包含3个私有数据:
unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公升),请以构造函数方式建立此值。
试输入某天所加的汽油量,本程序将列出加油站当天的总收入。
(10分)
3.编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。
(12分)
4.编一个程序计算正方体,球体和圆柱体的表面积和体积。
要求:
抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。
抽象类中定义一个公共的数据成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。
由该抽象类派生出的三个类,都有求表面积和体积的实际定义。
键盘输入radius的值后,可以输出这3种立方体的面积。
(13分)
8
山东师范大学信息科学与工程2009-2010学年第一学期
一、选择题(25小题,共25分)
1A6D11C16D21C
2D7D12A17B22C
3D8B13C18D23A
4D9A14A19C24C
5C10B15D20D25D
二、填空题(每空2分,共10分)
1继承
2多态
3对象
4封装
5继承
三、分析程序的执行结果,填空(5小题,每小题4分,共20分)
1.5,7
22,25
2.12,2014,3016,4018,50
20,6022,7024,8026,90
3.Default
Default
Default
Constructor.
DestructorMa
Constructor.
DestructorWang
Constructor.
DestructorLi
Ma,4.8
Wang,3.6
Li,3.1
DestructorLi
DestructorWang
DestructorMa
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,其定义如下:
classProduct
{
char*name;//产品名称
intprice;//产品单价
intquantity;//剩余产品数量
public:
Product(char*n,intp,intq);//构造函数
~Product();//析构函数
voidbuy(intmoney);//购买产品
voidget()const;//显示剩余产品数量
};
并用数据进行测试。
(10分)
#include
#include
classProduct
{
char*name;
intprice;
intquantity;
public:
Product(char*n,intp,intq)
{
name=newchar[strlen(n)+1];
strcpy(name,n);
price=p;
quantity=q;
}
~Product()
{
if(name)
{
delete[]name;
name=0;
}
}
voidbuy(intmoney)
{
intn,r;
n=money/price;
if(n>quantity)
cout<<"数量不够"<else
{
quantity-=n;
r=money%price;
cout<<"产品:
"<"<cout<}
}
voidget()const
{
cout<<"产品:
"<"<}
};
voidmain()
{
Productp1("电视机",2000,15);
p1.buy(7000);
p1.get();
p1.buy(4500);
p1.get();
}
2.以面向对象的方法设计一个类,此类包含3个私有数据:
unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公升),请以构造函数方式建立此值。
试输入某天所加的汽油量,本程序将列出加油站当天的总收入。
(10分)
#include
classTc
{
private:
doubleunlead,lead,total;
intunprice,price;
public:
Tc(){unprice=17;price=16;}
voidgetdata()
{
cout<<"无铅汽油总量;";
cin>>unlead;
cout<<"有铅汽油总量;";
cin>>lead;
total=unprice*unlead+price*lead;
}
voiddisp()
{
cout<<"总收入:
"<}
};
voidmain()
{
TcA;
A.getdata();
A.disp();
}
3.编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。
(12分)
#include
#include
classrectangle
{
private:
floatledge,sedge;
public:
rectangle(){};
rectangle(floata,floatb)
{
ledge=a;
sedge=b;
};
floatarea()
{
returnledge*sedge;
};
voidaddarea(rectangler1,rectangler2)
{
cout<<"总面积:
"<}
};
voidmain()
{
rectangleA(3.5,2.5),B(4.2,3.8),C;
C.addarea(A,B);
}
4.编一个程序计算正方体,球体和圆柱体的表面积和体积。
要求:
抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。
抽象类中定义一个公共的数据成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。
由该抽象类派生出的三个类,都有求表面积和体积的实际定义。
键盘输入radius的值后,可以输出这3种立方体的面积。
(13分)
#include
classCircle
{
public:
Circle(doublei){r=i;}
doubleArea(doubler){a=r*r*3.14159;returna;}
voidShow(){cout<<"area="<
private:
doubler,a;
};
classRectangle
{
public:
Rectangle(doublei,doublej)
{l=i;w=j;}
doubleArea(doublei,doublej){a=i*j;returna;}
voidShow(){cout<<"area="<
private:
doublel,w,a;
};
classGraph:
publicCircle,publicRectangle
{public:
Graph(doublei,doublej,doublek):
Circle(i),Rectangle(j,k)
{r=i;l=j;w=k;}
doubleArea(doubler,doublel,doubleh){a=Circle:
:
Area(r)+Rectangle:
:
Area(l,h);returna;}
voidShow(){cout<<"area="<
private:
doubler,l,w,a;
};
voidmain()
{
Circlec(10);
c.Show();
Rectanglerec(20,50);
rec.Show();
Graphg(10.0,20.0,50.0);
g.Show();
}