鱼C论坛

 找回密码
 立即注册
查看: 1091|回复: 7

[已解决]求一个时间统计算法题的解法c++

[复制链接]
发表于 2021-10-17 00:06:30 | 显示全部楼层 |阅读模式

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

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

x
期望结果:希望能吧代码写出来,能加上注释就最好了,谢谢[em07]
题目来源杭电oj2021
Problem Description
某个实验需要统计时间,记录了实验开始和结束的时间,计算实验所用的时间。
Input
第一行输入一个整数n,表示样例个数,0<n<1000。接下来每组样例两行,表示开始时间和结束时间,格式为x天HH时MM分SS秒,x是一个整数表示第几天,0<x<20000,保证时间合法,结束时间比开始时间晚。
Output
每组数据输出经过的时间。
Sample Input
1
01天03小时26分12秒
01天04小时26分12秒
Sample Output
00天01小时00分00秒[/quote]
最佳答案
2021-10-17 16:23:31
没有这个函数?gmtime_r
那就改成 gmtime
#include <stdio.h>
#include <time.h>

int main() {
    struct tm a = {0}, b = {0};
    scanf("%d天%d小时%d分%d秒", &a.tm_mday, &a.tm_hour, &a.tm_min, &a.tm_sec);
    scanf("%d天%d小时%d分%d秒", &b.tm_mday, &b.tm_hour, &b.tm_min, &b.tm_sec);
    time_t c = mktime(&b) - mktime(&a);
    //struct tm d; gmtime_r(&c, &d);
    struct tm *d = gmtime(&c);
    //printf("%d天%d小时%d分%d秒\n", d.tm_mday - 1, d.tm_hour, d.tm_min, d.tm_sec);
    printf("%d天%d小时%d分%d秒\n", d->tm_mday - 1, d->tm_hour, d->tm_min, d->tm_sec);
    return 0;
}
$ ./main
01天03小时26分12秒
01天04小时26分12秒
0天1小时0分0秒
$ 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-17 01:29:15 | 显示全部楼层
#include <stdio.h>
#include <time.h>

int main() {
    struct tm a = {0}, b = {0};
    scanf("%d天%d小时%d分%d秒", &a.tm_mday, &a.tm_hour, &a.tm_min, &a.tm_sec);
    scanf("%d天%d小时%d分%d秒", &b.tm_mday, &b.tm_hour, &b.tm_min, &b.tm_sec);
    time_t c = mktime(&b) - mktime(&a);
    struct tm d; gmtime_r(&c, &d);
    printf("%d天%d小时%d分%d秒\n", d.tm_mday - 1, d.tm_hour, d.tm_min, d.tm_sec);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-17 16:16:50 | 显示全部楼层

您好,我试着拿着您的代码去oj上提交,上面显示下面这个,应该是格式错了,您能看看吗
C:\Windows\TEMP\ccA6rCpk.o:2_37884_3662432_3239.c:(.text.startup+0xe4): undefined reference to `gmtime_r'
collect2.exe: error: ld returned 1 exit status
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-17 16:23:31 | 显示全部楼层    本楼为最佳答案   
没有这个函数?gmtime_r
那就改成 gmtime
#include <stdio.h>
#include <time.h>

int main() {
    struct tm a = {0}, b = {0};
    scanf("%d天%d小时%d分%d秒", &a.tm_mday, &a.tm_hour, &a.tm_min, &a.tm_sec);
    scanf("%d天%d小时%d分%d秒", &b.tm_mday, &b.tm_hour, &b.tm_min, &b.tm_sec);
    time_t c = mktime(&b) - mktime(&a);
    //struct tm d; gmtime_r(&c, &d);
    struct tm *d = gmtime(&c);
    //printf("%d天%d小时%d分%d秒\n", d.tm_mday - 1, d.tm_hour, d.tm_min, d.tm_sec);
    printf("%d天%d小时%d分%d秒\n", d->tm_mday - 1, d->tm_hour, d->tm_min, d->tm_sec);
    return 0;
}
$ ./main
01天03小时26分12秒
01天04小时26分12秒
0天1小时0分0秒
$ 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-17 16:28:09 | 显示全部楼层
C++ ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-17 16:28:51 | 显示全部楼层
#include <bits/stdc++.h>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-10-17 16:47:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-17 16:48:56 | 显示全部楼层

哦不是,楼二的代码是c语言的,但都一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 16:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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