zoukankan      html  css  js  c++  java
  • 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
    ",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);   //使用友员函数
    }
    

    试卷




  • 相关阅读:
    Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
    Prometheus 通过 consul 实现自动服务发现
    Prometheus 通过 consul 分布式集群实现自动服务发现
    使用 PushGateway 进行数据上报采集
    AlertManager 之微信告警模板,UTC时间错8个小时的解决办法
    Prometheus 监控报警系统 AlertManager 之邮件告警
    Elasticsearch:使用 IP 过滤器限制连接
    Elasticsearch:创建 API key 接口访问 Elasticsearch
    Elasticsearch:反向代理及负载均衡在 Elasticsearch 中的应用
    Kibana:如何周期性地为 Dashboard 生成 PDF Report
  • 原文地址:https://www.cnblogs.com/fisherss/p/10761728.html
Copyright © 2011-2022 走看看