鱼C论坛

 找回密码
 立即注册
查看: 1423|回复: 4

各位大佬这道题怎么做

[复制链接]
发表于 2023-10-29 16:22:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
利用一个命名为 time的结构体做一个时间表,并完成简单的运算要求: (1) 包含 year,moon,day,hour,minute 这五个量(2) 输出初定时间可以正常显示(3) 输入时间可进行简单的加减(4) 直至输入0可结束程序
(5)默认输出年份为 23
示例: 输入初定时间 :7,29,17,27输出:23y7m29d17h27m
输入:3d7h33m
输出:23y8m2d1h0m
输入:0
输出:down
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}

这样,我们就完成了这个题目的要求。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 为止。注意,本程序中对于月份和天数的处理是简化的,实际应用中可能需要更加精确的处理方式。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-29 16:44:50 | 显示全部楼层
希望这道题能用c语言解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 17:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表