本博客内容为中国大学生MOOC国家精品课程《计算机程序设计C++》作业记录,仅供参考,观者忌照搬照抄,欢迎交流批评指正!
##第十周编程作业
本周作业内容为构造函数与析构函数的应用
- 定义一个带重载构造函数的日期类
#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;
}
- 动态生成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;
}
- 设计带构造函数的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;
}
- 设计并测试一个椭圆类
#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;
}
- 设计一个多功能的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周的会陆续上传)