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);   //使用友员函数
}

试卷




posted @ 2019-04-24 12:47  fishers  阅读(796)  评论(0编辑  收藏  举报