慎&独 2022-11-27 22:38 采纳率: 87.5%
浏览 1
已结题

以下是实现日期加s秒的操作,找不到哪里错了

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

```c++
#include<iostream>
using namespace std;
class DateType
{
public:
    int y;
    int m;
    int d;
    void PrintDate()
    {
        cout << y << "-" << m << "-" << d << endl;
    }
};
class TimeType
{
public:
    int hr;
    int mi;
    int se;
};
class DateTimeType {
private://自定义的日期时间类 DateTimeType
    DateType date; //类 DateType 的类对象 date 作为其数据成员
    TimeType time; //类 TimeType 的类对象 time 作为其另一个数据成员
public:
    DateTimeType(int y0 , int m0, int d0 , int hr0 , int mi0 , int se0 );
    //构造函数,设定 DateTimeType 类对象的日期时间,并为各参数设置了默认值
    DateType& GetDate() { return date; } //返回本类的私有数据对象 data
    TimeType& GetTime() { return time; } //返回本类的私有数据对象 time
    void IncrementSecond(int s);  //增加若干秒,注意“进位”问题
    void PrintDateTime(); //屏幕输出日期时间对象的有关数据
};
DateTimeType::DateTimeType(int y0 = 1, int m0 = 1, int d0 = 1, int hr0 = 0, int mi0 = 0, int se0 = 0)
{
    date.y = y0;
    date.m = m0;
    date.d = d0;
    time.hr = hr0;
    time.mi = mi0;
    time.se = se0;
}
void DateTimeType:: IncrementSecond(int s)
{
    int temp = 0;
    int m1[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    time.se += s;
    if (time.se >=60)
    {
        temp = time.se / 60;
        time.se -= temp * 60;
        time.mi += temp;
        if (time.mi >= 60)
        {
            temp = time.mi / 60;
            time.mi -= temp * 60;
            time.hr += temp;
            if (time.hr >= 24)
            {
                temp = time.hr / 24;
                time.hr -= temp * 24;
                date.d += temp;
                if (date.y % 4 == 0 && date.y % 100 == 0 || date.y % 400 == 0) { m1[2] = 29; }
                while (date.d > m1[date.m])
                {
                    date.d= date.d - m1[date.m];
                    date.m++;
                }
                if (date.m > 12)
                {
                    temp = date.m / 12;
                    date.m -= temp * 12;
                    date.y += temp;
                }
            }
        }

    }

}
void  DateTimeType:: PrintDateTime()
{
    cout << date.y << "-" << date.m << "-" << date.d << ” “<<time.hr << ":" << time.mi << ":" << time.se << endl;
}
void main() {
    DateTimeType dttm1(1999, 12, 31, 23, 59, 59), dttm2;
    (dttm1.GetDate()).PrintDate(); //调用对象成员所属类的公有成员函数
    cout << endl;
    dttm1.PrintDateTime(); //调用本派生类的成员函数 PrintDateTime
    dttm2.PrintDateTime();
    dttm1.IncrementSecond(30); //调用本派生类成员函数
    dttm1.PrintDateTime();
}

  • 写回答

1条回答 默认 最新

  • 浪客 2022-11-27 23:01
    关注

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月27日
  • 已采纳回答 11月27日
  • 修改了问题 11月27日
  • 创建了问题 11月27日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。