C++面向对象程序设计上机考试题库[1](8)

2019-08-29 18:53

r1.setX(2); r1.setY(2); r1.input(); r1.input1(); r1.getd1(); r1.dis(); r1.area(); r1.zhou(); r1.show1();

return 0; }

19.声明一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义Speak( )成员函数,基类中定义为虚函数。声明一个Dog类的对象,调用Speak()函数,观察运行结果。 #include class Mammal {

public:

Mammal():itsAge(1) { cout << \~Mammal() { cout << \

virtual void Speak() const { cout << \private: int itsAge; };

class Dog : public Mammal {

public:

Dog() { cout << \~Dog() { cout << \void Speak() const { cout << \};

int main() {

Mammal *pDog = new Dog; pDog->Speak(); delete pDog; return 0; }

20.定义一个抽象类Cshape,包含纯虚函数Area(用来计算面积)和SetData(用来重设形状大小)。然后派生出三角形Ctriangle类、矩形Crect类、圆Ccircle类,分别求其面积。最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过Carea类构造函数或成员函数来设置。编写一个完整程序。

#include

【第 36 页 共 48 页】

using namespace std;

class Cshape {

public:

virtual float Area()=0; };

class CTriangle :public Cshape {

int vect; public:

CTriangle(int v):vect(v) {}

float Area() {return vect*1.732/4;} };

class CRect:public Cshape {

int length,height; public:

CRect(int l,int h):length(l),height(h) {} float Area() {return length*height;} };

class CCircle:public Cshape {

int radius; public:

CCircle(int r):radius(r) {}

float Area() {return 3.14*radius*radius;} };

class Area {

CTriangle t; CRect r; CCircle c; public:

Area(int v,int l,int h,int r):t(v),r(l,h),c(r) {} float sum() {return t.Area()+r.Area()+c.Area();} };

int main()

【第 37 页 共 48 页】

{

Area a(10,20,30,5); cout<

三、第三类题目[(10道,每题11分,请自行设计输出格式)

1.商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。现已知当天3名销货员的销售情况为:

销货员号(num) 销货件数(quantity) 销售单价(price) 101 5 23.5 102 12 24.56 103 100 21.5

请编程序,计算出当日此商品的总销售款sum,以及每件商品的平均售价。要求用静态数据成员和静态成员函数。(提示:将折扣discount、总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average(求平均售价)和display(输出结果)。

#include using namespace std; class Product {public:

Product(int n,int q,float p):num(n),quantity(q),price(p){}; void total();

static float average(); static void display(); private: int num;

int quantity; float price;

static float discount; static float sum; static int n; };

void Product::total() {float rate=1.0;

if(quantity>10) rate=0.98*rate;

sum=sum+quantity*price*rate*(1-discount); n=n+quantity; }

void Product::display() {cout<

cout<

float Product::discount=0.05; float Product::sum=0; int Product::n=0;

【第 38 页 共 48 页】

int main() { Product

Prod[3]={ Product(101,5,23.5),Product(102,12,24.56),Product(103,100,21.5)};

for(int i=0;i<3;i++) Prod[i].total(); Product::display(); return 0; }

2.请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double(){ return real;}。初值自拟。 #include using namespace std; class Complex {public:

Complex(){real=0;imag=0;}

Complex(double r){real=r;imag=0;}

Complex(double r,double i){real=r;imag=i;} operator double(){return real;} void display(); private:

double real; double imag; };

void Complex::display()

{cout<<\int main()

{Complex c1(3,4),c2; double d1; d1=2.5+c1;

cout<<\ c2=Complex(d1); cout<<\ c2.display(); return 0;}

3.定义一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为:一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。 #include using namespace std; class Student {public:

Student(int,char[],char,float); int get_num(){return num;}

char * get_name(){return name;}

【第 39 页 共 48 页】

char get_sex(){return sex;} void display()

{cout<<\;}

private: int num;

char name[20]; char sex; float score; };

Student::Student(int n,char nam[],char s,float so) {num=n;

strcpy(name,nam); sex=s; score=so;} class Teacher {public: Teacher(){}

Teacher(Student&);

Teacher(int n,char nam[],char sex,float pay); void display(); private: int num;

char name[20]; char sex;

float pay; };

Teacher::Teacher(int n,char nam[],char s,float p) {num=n;

strcpy(name,nam); sex=s; pay=p;}

Teacher::Teacher(Student& stud) {num=stud.get_num();

strcpy(name,stud.get_name()); sex=stud.get_sex(); pay=1500;}

void Teacher::display()

{cout<<\int main()

{Teacher teacher1(10001,\ Student student1(20010,\ cout<<\ student1.display();

teacher2=Teacher(student1); cout<<\ teacher2.display();

【第 40 页 共 48 页】


C++面向对象程序设计上机考试题库[1](8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:3+4基础综合(2015年试卷)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: