计算机程序设计C++ MOOC(第10周编程作业)

本博客内容为中国大学生MOOC国家精品课程《计算机程序设计C++》作业记录,仅供参考,观者忌照搬照抄,欢迎交流批评指正!

##第十周编程作业

本周作业内容为构造函数与析构函数的应用

  1. 定义一个带重载构造函数的日期类
    在这里插入图片描述
#include<iostream>

using namespace std;

class Data
{
private:
	int year, month, day;
public:
	Data() :year(1900), month(1), day(1){};
	Data(int y, int m, int d);	
	void print_ymd()
	{
		cout << year << "-" <<month << "-" <<day;
	}
	void init(int y, int m, int d)
	{
		year = y; month = m; day = d;
	}
};

Data::Data(int y, int m, int d) :year(1900), month(1), day(1)
{
	if (y >= 1900 && y < 9999)
		year = y;
	else return;
	if (m >= 1 && m <= 12)
		month = m;
	else
	{
		year = 1900; return;
	}
	if (d >= 1 && d <= 31)
		day = d;
	else
	{
		year = 1900; month = 1; return;
	}
}

int main()
{
	Data d1, d2(2100, 12, 12);
	d1.print_ymd();
	cout << endl;
	d2.print_ymd();
	cout << endl;
	int a, b, c;
	cin >> a >> b >> c;
	d1.init(a, b, c);
	d1.print_ymd();
	cout << endl;
	return 0;
}
  1. 动态生成Person类的对象
    在这里插入图片描述
#include<iostream>
#include"string.h"

using namespace std;

class Person
{
private:
	char name[20];
	int age;
	char sex;
public:
	Person()
	{
		strcpy(name, "XXX");
		age = 0;
		sex = 'm';
	};
	void Register(char[],int,char);
	void showme();
	~Person()
	{		
		cout << "Now destroying the instance of Person" << endl;
	}
};

void Person::Register(char *a,int n,char s)
{
	strcpy(name, a);
	age = n;
	sex = s;
}

void Person::showme()
{
	cout << name << " " << age << " " << sex << endl;
}

int main()
{
	Person *p1, *p2;
	p1 = new Person;
	p2 = new Person;
	cout << "person1:";
	p1->showme();
	cout << "person2:";
	p2->showme();
	char a[20], s;
	int n;
	cin >> a >> n >> s;
	p1->Register(a, n, s);
	*p2 = *p1;
	cout << "person1:";
	p1->showme();
	cout << "person2:";
	p2->showme();
	delete p1;
	delete p2;
	return 0;
}
  1. 设计带构造函数的Dog类
    在这里插入图片描述
#include<iostream>
#include<string.h>

using namespace std;

class Dog
{
private:
	char name[10];
	int age;
	char sex;
	double weight;
public:
	Dog(char *, int, char, double);
	void GetName(){ cout << name; };
	void GetAge(){ cout << age; };
	void GetSex(){ cout << sex; };
	void GetWeight(){ cout << weight; };
	void speak();
};

Dog::Dog(char *name, int age, char sex, double weight)
{
	strcpy(this->name, name);
	this->age = age;
	this->sex = sex;
	this->weight = weight;
}

void Dog::speak()
{
	cout << "Arf!Arf!" << endl;
}

int main()
{
	char *name;
	name = new char;
	char sex;
	int age;
	double weight;
	cin >> name >> age >> sex >> weight;
	Dog dog1(name, age, sex, weight);
	dog1.GetName();
	cout << endl;
	dog1.GetAge();
	cout << endl;
	dog1.GetSex();
	cout << endl;
	dog1.GetWeight();
	cout << endl;
	dog1.speak();
	return 0;
}
  1. 设计并测试一个椭圆类
    在这里插入图片描述
#include<iostream>

using namespace std;

class Ellipse
{
private:
	int center_x, center_y;
	double major_axis, minor_axis;
public:
	Ellipse(int, int, double, double);
	double Area(){ return 3.14 * major_axis * minor_axis; }
};

Ellipse::Ellipse(int cx, int cy, double ja, double ia)
{
	center_x = cx; center_y = cy; major_axis = ja; minor_axis = ia;
}

int main()
{
	int a, b;
	double c, d;
	cin >> a >> b >> c >> d;
	Ellipse e(a, b, c, d);
	cout << e.Area() << endl;
	return 0;
}
  1. 设计一个多功能的MyTime类
    在这里插入图片描述
#include<iostream>

using namespace std;

class MyTime
{
private:
	int hour, minute, second;
public:
	MyTime(){ hour = 0; minute = 0; second = 0; }
	MyTime(int, int, int);
	void print_12();
	void print_24();
	void set_time(int, int, int);
	MyTime add(int,int,int);
	MyTime subtract(int, int, int);
};

MyTime::MyTime(int a, int b, int c)
{
	hour = (a >= 0 && a <= 23) ? a : 0;
	minute = (b >= 0 && b <= 59) ? b : 0;
	second = (c >= 0 && c <= 59) ? c : 0;
}

void MyTime::print_12()
{
	if (hour < 12)
	{
		printf("%02d:%02d:%02d AM", hour, minute, second);	
	}
	else
	{
		printf("%02d:%02d:%02d PM", hour-12, minute, second);
	}
	cout << endl;
}

void MyTime::print_24()
{
	printf("%02d:%02d:%02d", hour, minute, second);
	cout << endl;
}

void MyTime::set_time(int a, int b, int c)
{
	hour = (a >= 0 && a <= 23) ? a : 0;
	minute = (b >= 0 && b <= 59) ? b : 0;
	second = (c >= 0 && c <= 59) ? c : 0;
}

MyTime MyTime::add(int a,int b,int c)
{
	MyTime t0=*this;
	t0.hour = hour + a;
	t0.minute = minute + b;
	t0.second = second + c;
	if (t0.second >= 60)
	{
		t0.second -= 60;
		t0.minute++;
	}
	if (t0.minute >= 60)
	{
		t0.minute -= 60;
		t0.hour++;
	}
	if (t0.hour >= 24)
	{
		t0.hour -= 24;
	}
	return t0;
}

MyTime MyTime::subtract(int a, int b, int c)
{
	MyTime t0 = *this;
	t0.hour = hour - a;
	t0.minute = minute - b;
	t0.second = second - c;
	if (t0.second < 0)
	{
		t0.second += 60;
		t0.minute--;
	}
	if (t0.minute < 0)
	{
		t0.minute += 60;
		t0.hour--;
	}
	if (t0.hour < 0)
	{
		t0.hour += 24;
	}
	return t0;
}

int main()
{
	MyTime t1, t2(8, 10, 30),t3,t4;
	t1.print_12();
	t1.print_24();
	t2.print_12();
	t2.print_24();
	int a, b, c;
	cin >> a >> b >> c;
	t1.set_time(a, b, c);
	cin >> a >> b >> c;//待加减的时间
	t3 = t1.add(a, b, c);//t1加输入时间
	t3.print_12();
	t3.print_24();
	t4 = t2.subtract(a, b, c);//t2减输入时间
	t4.print_12();
	t4.print_24();
	return 0;
}

以上为第10周编程作业。(前9周的会陆续上传)

猜你喜欢

转载自blog.csdn.net/qq_35779286/article/details/84498584
今日推荐