C++复习

C++编程题:

1. 定义个datetime类,使其对象可以显示当前系统时间和日期 。
#include<time.h>
#include<stdio.h>
class datetime
{
public:
    int year;
    int month;
    int day;
    int hour;
    int min;
    int sec;
    datetime()
    {
        struct tm* ptm;
        time_t m;
        time(&m);
        ptm = localtime(&m);
        year = ptm->tm_year+1900;
        month = ptm->tm_mon+1;
        day = ptm->tm_mday;
        hour = ptm->tm_hour;
        min = ptm->tm_min;
        sec = ptm->tm_sec;
    }
    void output()
    { 
        printf("%.4d/%.2d/%.2d %.2d:%.2d:%.2d\n",year,month,day,hour,min,sec);
    }
};
void main(void)
{
    datetime d;
    d.output();
}
2、设计一个汽车类Vehicle,包含数据成员车轮数和车重,由它派生出类Car和类Truck,前者包含载客数,后者包含载重量。编写程序实现。
#include<iostream.h> 
class vehicle // 定义汽车类 
{ 
    protected: 
        int wheels; // 车轮数 
        float weight; // 重量 
    public: 
        vehicle(int wheels,float weight); 
        int get_wheels(); 
        float get_weight(); 
        float wheel_load(); 
        void show(); 
}; 

class car:public vehicle // 定义小车类 
{ 
    int passenger_load; // 载人数 
    public: 
        car(int wheels,float weight,int passengers=4); 
        int get_passengers(); 
        void show(); 
}; 

class truck:public vehicle // 定义卡车类 
{ 
    int passenger_load; // 载人数 
    float payload; // 载重量 
public: 
    truck(int wheels,float weight,int passengers=2,float max_load=24000.00); 
    int get_passengers(); 
    float efficiency(); 
    void show(); 
}; 

vehicle::vehicle(int wheels,float weight) 
{ 
    vehicle::wheels=wheels; 
    vehicle::weight=weight; 
} 

int vehicle::get_wheels() 
{ 
    return wheels; 
} 

float vehicle::get_weight() 
{ 
    return weight/wheels; 
} 

void vehicle::show() 
{ 
    cout << "车轮:" << wheels << "个" << endl; 
    cout << "重量:" << weight << "公斤" << endl; 
} 

car::car(int wheels, float weight, 
int passengers) :vehicle (wheels, weight) 
{ 
    passenger_load=passengers; 
} 

int car::get_passengers () 
{ 
    return passenger_load; 
} 

void car::show() 
{ 
    cout <<" 车型:小车" << endl; 
    vehicle::show(); 
    cout << "载人:" << passenger_load << "人" << endl; 
    cout << endl; 
} 

truck:: truck(int wheels, float weight,int passengers, float max_load):vehicle(wheels,weight) 
{ 
    passenger_load=passengers; 
    payload=max_load; 
} 

int truck::get_passengers() 
{ 
    return passenger_load; 
} 


float truck::efficiency() 
{ 
    return payload/(payload+weight); 
} 


void truck::show() 
{ 
    cout <<"车型:卡车" << endl; 
    vehicle:: show (); 
    cout << "载人:" << passenger_load << "人" << endl; 
    cout << "效率:" << efficiency() << endl; 
    cout << endl; 
} 


void main () 
{ 
    car car1(4,2000,5); 
    truck tru1(10,8000,3,340000); 
    cout << "输出结果" << endl; 
    car1. show (); 
    tru1. show (); 
}
3、设计一个点类Point,包含点的坐标x,y 两个数据成员,采用友元类的方式分别计算两点间的水平距离和垂直距离。
#include<iostream>
using namespace std;
    
class Point;//先声明类型Point
int horizontalDistance(const Point& first, const Point& second);//水平距离函数声明
int verticalDistance(const Point& first, const Point& second);//垂直距离函数声明

class Point
{
    private:
        int x;//横坐标
        int y;//纵坐标
    public:
        Point(int x=0, int y = 0)//构造函数
        {
        this->x = x;
        this->y = y;
        }
        friend int horizontalDistance(const Point& first, const Point& second);
        friend int verticalDistance(const Point& first, const Point& second);
};    
//水平距离函数定义
int horizontalDistance(const Point& first, const Point& second)
{
    if(first.x -second.x >=0)
        return first.x-second.x;
    else
        return second.x-first.x;
}
 //垂直距离函数定义
int verticalDistance(const Point& first, const Point& second)
{
    if(first.y -second.y >=0)
        return first.y-second.y;
    else
        return second.y-first.y;
}
int main()
{ 
    Point a(1,2);    //定义三个Point对象
    Point b(0,0);
    Point c(-1,-1);
    //测试
    cout<< horizontalDistance(a,b) <<endl;
    cout<< horizontalDistance(a,c) <<endl;
    cout<< verticalDistance(a,b) <<endl;
    cout<< verticalDistance(a,c) <<endl;
    return 0;
}
4、设计一个点类Point,包含横、纵两个坐标数据x,y,由它派生出圆类Circle,并添加一个半径数据r,求其面积area。
#include<iostream>        //#include<iomanip>//此头文件与下面的setprecision(3)对应,可同时加上,控制输出精度
using namespace std;
#define PI 3.1415926
//点类如下:
class Point
{
    public:
        Point(){}
        
        Point(float x1,float y1)
        {
            x=x1;
            y=y1;
        }
        virtual float area()=0;
        virtual float perim()=0;//周长
    private:
        float x;
        float y;
};

class Circle:public Point
{
    public:
        Circle(float x1,float y1,float r1);
        float area();
        float perim();
    private:
        float r;
};

Circle::Circle(float x1,float y1,float r1):Point(x1,y1)
{
    r=r1;
}

float Circle::area()
{
    return PI*r*r;
}

float Circle::perim()
{
    return 2*PI*r;
}

int main()
{
    Point *p;
    Circle circle(0,0,3);//前两个为point(0,0),第三个常量"3"为圆的半径。
    p=&circle;
    cout<<"Circle的周长是:"<<p->perim()<<endl;
    cout<<"Circle的面积是:"<<p->area()<<endl;
}
5、设计一个点类Point,包含两个坐标数据成员x,y和一个构造函数;再设计一个友元函数distance()用于求两点之间的距离。
#include<iostream>
using namespace std;
class Point;//先声明类型Point
int horizontalDistance(const Point& first, const Point& second);//水平距离函数声明
int verticalDistance(const Point& first, const Point& second);//垂直距离函数声明
class Point
{
private:
 int x;//横坐标
 int y;//纵坐标
public:
 Point(int x=0, int y = 0)//构造函数
 {
  this->x = x;
  this->y = y;
 }
 friend int horizontalDistance(const Point& first, const Point& second);
};
//水平距离函数定义
 int  horizontalDistance(const Point& first, const Point& second)
{
 if(first.x -second.x >=0)
  return first.x-second.x;
 else
  return second.x-first.x;
}
int main()
{ 
 Point a(1,2);//定义三个Point对象
 Point b(0,0);
 Point c(-1,-1);
 cout<< horizontalDistance(a,b) <<endl;
 cout<< horizontalDistance(a,c) <<endl;
 return 0;
}
6、编写class cA的派生类class cAB,增加成员函数,用于求圆的周长
class cA
{
    int r;
    public:
        cA(int x){ r=x; }
        double area( ) { return r*r*3.14; }
        int get_r( ) { return r; }
};

class cAB:public Ca
{
    cAB(int x):cA(x){ }
    double girth( ) { return 2*get_r( )*3.14; }
};
7、定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:

①构造函数重载;②成员函数设置缺省参数;③定义一个友元函数来打印日期(3分);④可使用不同的构造函数来创建不同的对象。

#include <stdio.h>
class TDate
{
    public:
        TDate();        //构造函数
        TDate(int nMoth,int nDay,int nYear); //构造函数重载
        void SetDay(int nDay=1);    //三个设置某个成员变量的成员函数,都带有默认值
        void SetMonth(int nMonth=1);
        void SetYear(int nYear=2001);
        void SetDate(int nMoth,int nDay,int nYear);//一个非静态成员函数
        friend void PrintDate(TDate cTdate);       //友员函数         
    private:
        int m_nMonth;
        int m_nDay;
        int m_nYear;
};

TDate::TDate()
{
    m_nDay=1;
    m_nMonth=1;
    m_nYear=2000;
}

TDate::TDate(int nMoth,int nDay,int nYear)
{
    m_nYear=nYear;
    m_nDay=nDay;
    m_nMonth=nMoth;
}

void TDate::SetDate(int nMoth,int nDay,int nYear)
{
    m_nYear=nYear;
    m_nDay=nDay;
    m_nMonth=nMoth;
}

void TDate::SetDay(int nDay/*=1*/)
{
    m_nDay=nDay;
}

void TDate::SetMonth(int nMonth/*=1*/)
{
    m_nMonth=nMonth;
}

void TDate::SetYear(int nYear/*=2000*/)
{
    m_nYear=nYear;
}

void PrintDate(TDate cTDate)
{
    printf("Date is:%d-%d-%d",cTDate.m_nYear,cTDate.m_nMonth,cTDate.m_nDay);
}

void main()
{
    TDate cTdate;    
    cTdate.SetDate(6,1,2012); //使用成员函数
    cTdate.SetDay(10);
    TDate CMyDate(6,1,2012);//重载的构造函数生成对象实例
    PrintDate(CMyDate);   //使用友员函数
}

试卷

1454456-20190425183345733-1390578031.png
1454456-20190425183354463-444011522.png
1454456-20190425183407772-1025062394.png
1454456-20190425183416141-24200192.png

转载于:https://www.cnblogs.com/fisherss/p/10761728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值