WKYNEKO

博客园 首页 新随笔 联系 订阅 管理

1382: C++第9章 定义一个带重载构造函数的日期类
时间限制:1.000s 内存限制:128MB

题目描述
定义一个带重载构造函数的日期类Date,数据成员有年、月、日;成员函数包括:一个带参数的构造函数Date(int, int, int),一个不带参数的构造函数(设置日期为1900年1月1日),一个按“年 - 月 - 日”格式显示日期的函数,一个对数据成员赋值的函数void init(int, int, int)。
主函数中对类的测试要求:
1. 分别使用两个不同的重载构造函数创建两个日期类对象(必须为d1, d2,d2初始值为2100 - 12 - 12);
2. 按“年 - 月 - 日”格式分别显示两个对象的值;
3. 输入数据,用init函数为d1赋值;
4.按“年 - 月 - 日”格式显示对象d1的值;。

输入格式
给d1赋值的数据

输出格式
d1的默认值

d2的初始值

d1赋值后的值

样例输入
2011 4 29
样例输出
1900 - 1 - 1
2100 - 12 - 12
2011 - 4 - 29


#include<iostream>
using namespace std;
class date
{
int year;
int month;
int day;
public:
date(int a, int b, int c)
{
year = a;
month = b;
day = c;
}
date()
{
year = 1900;
month = 1;
day = 1;
}
void display()
{
cout << year << "-" << month << "-" << day << endl;
}
void init()
{
cin >> year;
cin >> month;
cin >> day;
}
};
int main()
{
date d1, d2(2100, 12, 12);
date d3 = d1;
d1.init();
d3.display();
d2.display();
d1.display();
return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 


1383: C++第9章 设计一个多功能的时间类MyTime
时间限制:1.000s 内存限制:128MB

题目描述
设计一个多功能的MyTime类,设计多个重载的构造函数,可以设置时间,进行时间的加减运算,按各种可能的格式(24小时制、12小时制)输出时间。
注意:
(1)请考虑设置的时间的合理性(时0 - 23; 分0 - 59;秒0 - 59)。
(2)12小时制中,12 : 00 : 00前为AM, 12 : 00 : 00及以后为PM
(3)加减运算的加数、减数是一个时间的长度,单位为“时、分、秒”
(4)构造函数:没参数时,设置时间为0时 0分 0秒;有参数时,设置成给定的时、分、秒。
在主函数中
(1)声明两个对象t1, t2,并通过构造函数初始化它们(t1初始化为00 : 00 : 00, t2初始化为为8 : 10 : 30)
(2)显示按12、24小时制显示t1、t2的时间。
(3)再设置t1的时间,数据由用户输入(本题为11 30 30)。
(4)再输入待加减的时间。
(5)t1加输入的时间,并按12小时和24小时制显示。
(6)t2减输入的时间,并按12小时和24小时制显示。
输入格式
第一行为t1的时间,第二行为待加减的时间
输出格式
显示按12、14小时制显示t1、t2的初始时间
t1加输入的待加减的时间按12小时和24小时制显示。
t2减输入的待加减的时间按12小时和24小时制显示
样例输入
11 30 30
5 15 20
样例输出
00:00 : 00 AM
00 : 00 : 00
08 : 10 : 30 AM
08 : 10 : 30
04 : 45 : 50 PM
16 : 45 : 50
02 : 55 : 10 AM
02 : 55 : 10


#include<iostream>
using namespace std;
class MyTime
{
int hour;
int minute;
int second;
public:
MyTime()
{
hour = 0;
minute = 0;
second = 0;
}
MyTime(int a, int b, int c)
{
hour = a;
minute = b;
second = c;
}
void setdata()
{
cin >> hour >> minute >> second;
}
void add(int h, int m, int s)
{
hour += h;
minute += m;
second += s;
if (second >= 60)
{
second = second - 60;
minute += 1;
}
if (minute >= 60)
{
minute = minute - 60;
hour = hour + 1;
}
if (hour >= 24)
{
hour = hour - 24;
}
}
void dis(int h, int m, int s)
{
if (second < s)
{
second += 60;
minute--;
}
if (minute < m)
{
minute += 60;
hour--;
}
if (hour < h)
{
hour = hour + 24;
}
hour = hour - h;
minute = minute - m;
second = second - s;
}
void print_12()
{
int h;
hour >= 12 ? h = hour - 12 : h = hour;
if (h < 10)
{
cout << 0;
}
cout << h << ":";
if (minute < 10)
{
cout << 0;
}
cout << minute << ":";
if (second < 10)
{
cout << 0;
}
cout << second;
if (hour >= 12 && ((minute > 0) || (second > 0)))
{
cout << " " << "PM" << endl;
}
else cout << " " << "AM" << endl;
}
void print_24()
{
if (hour < 10)
{
cout << "0";
}
cout << hour << ":";
if (minute < 10)
{
cout << 0;
}
cout << minute << ":";
if (second < 10)
{
cout << 0;
}
cout << second << endl;
}
};
int main()
{
MyTime t1, t2(8, 10, 30);
MyTime t4;
MyTime t3 = t1, t5 = t2;
t1.setdata();
int h, m, s;
cin >> h >> m >> s;
t3.print_12();
t3.print_24();
t5.print_12();
t5.print_24();
t1.add(h, m, s);
t2.dis(h, m, s);
t1.print_12();
t1.print_24();
t2.print_12();
t2.print_24();
return 0;
}

posted on 2023-04-02 22:19  BKYNEKO  阅读(92)  评论(0编辑  收藏  举报