wsccp 发表于 2023-10-29 16:22:57

各位大佬这道题怎么做

利用一个命名为 time的结构体做一个时间表,并完成简单的运算要求: (1) 包含 year,moon,day,hour,minute 这五个量(2) 输出初定时间可以正常显示(3) 输入时间可进行简单的加减(4) 直至输入0可结束程序
(5)默认输出年份为 23
示例: 输入初定时间 :7,29,17,27输出:23y7m29d17h27m
输入:3d7h33m
输出:23y8m2d1h0m
输入:0
输出:down

陶远航 发表于 2023-10-29 16:23:47

这是一个C++编程问题,需要创建一个名为\"time\"的结构体来处理时间的加减运算。以下是一个可能的解决方案:

#include<iostream>
using namespace std;

struct Time {
    int year, month, day, hour, minute;
    Time(int y = 23, int mo = 0, int d = 0, int h = 0, int mi = 0) : year(y), month(mo), day(d), hour(h), minute(mi) {}
    void add(int d, int h, int m) {
      minute += m;
      hour += minute / 60;
      minute %= 60;
      hour += h;
      day += hour / 24;
      hour %= 24;
      day += d;
      month += day / 30; // 假设每个月都有30天
      day %= 30;
      year += month / 12;
      month %= 12;
    }
    void print() {
      cout << year << \"y\" << month << \"m\" << day << \"d\" << hour << \"h\" << minute << \"m\" << endl;
    }
};

int main() {
    int d, h, m;
    char ch;
    Time t;
    cin >> t.month >> ch >> t.day >> ch >> t.hour >> ch >> t.minute;
    t.print();
    while (cin >> d >> ch >> h >> ch >> m) {
      if (d == 0 && h == 0 && m == 0) {
            cout << \"down\" << endl;
            break;
      }
      t.add(d, h, m);
      t.print();
    }
    return 0;
}


这个程序首先定义了一个名为\"Time\"的结构体,包含了年、月、日、小时和分钟五个成员变量,并提供了一个构造函数和两个成员函数。构造函数用于初始化时间,成员函数\"add\"用于添加时间,成员函数\"print\"用于打印时间。

在主函数中,首先创建了一个\"Time\"对象\"t\",然后从输入中读取月、日、小时和分钟的值,并打印出来。然后在一个循环中,从输入中读取日、小时和分钟的值,如果这三个值都是0,就打印\"down\"并结束程序,否则就调用\"add\"函数添加时间,并打印出来。

注意,这个程序假设每个月都有30天,这是一个简化的假设,实际情况可能会有所不同。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-10-29 16:24:06

首先,我们需要定义一个名为time的结构体,该结构体包含year、month、day、hour和minute这五个成员变量。

struct time {
    int year;
    int month;
    int day;
    int hour;
    int minute;
};


接下来,我们需要实现一个函数来输出给定时间的字符串表示形式。

void printTime(struct time t) {
    printf("%dy%dm%dd%dh%dm\n", t.year, t.month, t.day, t.hour, t.minute);
}


然后,我们需要实现一个函数来处理用户输入的时间,并进行相应的加减运算。

void processTime(struct time *t) {
    int d, h, m;
    scanf("%dd%dh%dm", &d, &h, &m);
    t->day += d;
    t->hour += h;
    t->minute += m;
   
    // 处理时间溢出
    if (t->minute >= 60) {
      t->hour += t->minute / 60;
      t->minute %= 60;
    }
    if (t->hour >= 24) {
      t->day += t->hour / 24;
      t->hour %= 24;
    }
}


最后,我们可以编写主函数来实现完整的程序逻辑。

int main() {
    struct time t = {23, 0, 0, 0, 0};
    int input;
   
    while (1) {
      scanf("%d", &input);
      
      if (input == 0) {
            printf("down\n");
            break;
      }
      
      if (input == 1) {
            printTime(t);
      } else {
            processTime(&t);
            printTime(t);
      }
    }
   
    return 0;
}


这样,我们就完成了这个题目的要求。

Mike_python小 发表于 2023-10-29 16:24:47

问题描述:

利用一个命名为 time 的结构体做一个时间表,并完成简单的运算要求:

(1) 包含 year,moon,day,hour,minute 这五个量

(2) 输出初定时间可以正常显示

(3) 输入时间可进行简单的加减

(4) 直至输入 0 可结束程序

(5) 默认输出年份为 23

示例:

输入初定时间 :7,29,17,27

输出:23y7m29d17h27m

输入:3d7h33m

输出:23y8m2d1h0m

输入:0

输出:down。

解决方案:

下面是一个可能的解决方案,其中定义了 Time 结构体来表示时间:


#include <iostream>
using namespace std;

struct Time {
    int year;
    int month;
    int day;
    int hour;
    int minute;
};

void print_time(const Time& t) {
    cout << t.year << "y" << t.month << "m" << t.day << "d" << t.hour << "h" << t.minute << "m" << endl;
}

void add_time(Time& t, const Time& delta) {
    t.minute += delta.minute;
    t.hour += delta.hour;
    t.day += delta.day;
    t.month += delta.month;
    t.year += delta.year;

    if (t.minute >= 60) {
      t.minute -= 60;
      t.hour += 1;
    }
    if (t.hour >= 24) {
      t.hour -= 24;
      t.day += 1;
    }
    if (t.day > 30) {
      t.day -= 30;
      t.month += 1;
    }
    if (t.month > 12) {
      t.month -= 12;
      t.year += 1;
    }
}

int main() {
    Time t = {23, 7, 29, 17, 27};
    print_time(t);

    while (true) {
      int d, h, m;
      cin >> d;
      if (d == 0) {
            cout << "down" << endl;
            break;
      }
      cin >> h >> m;

      Time delta = {0, 0, d, h, m};
      add_time(t, delta);
      print_time(t);
    }

    return 0;
}


在上述代码中,print_time 函数用于输出时间,add_time 函数用于将指定的时间 delta 加到当前时间 t 上。在 main 函数中,首先输出初始时间,然后进入循环读取用户输入的时间差,并将其加到当前时间上,直到用户输入 0 为止。注意,本程序中对于月份和天数的处理是简化的,实际应用中可能需要更加精确的处理方式。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

wsccp 发表于 2023-10-29 16:44:50

希望这道题能用c语言解决
页: [1]
查看完整版本: 各位大佬这道题怎么做