PTA 时间几何

作者 Happyer

单位 湖北文理学院

乘火车或飞机常有由始发时间+历经时间计算终到时间的事儿。我们通过三个 函数来完成,当然,为了存储几点几分这个时间,我们专门定义了一个结构体Time_gxx,你要完成的是写二个函数:1)string2Time()是将输入的表示时间的字符串(确保正常无误)转换成时间的结构体并返回(程序只计算是几点几分的时间,不考虑是哪一天)。
2) Add() 某时间加一上段历经时间后的时间。当历经时间可能为负数时,表示的是由终到时间计算始发时间。

函数接口定义:

Time_gxx string2Time(char *st);//string:"8:28"-->Time_gxx:{8,18}
Time_gxx Add(Time_gxx x,int y);{//{23:23}+100-->{01:03}

x 为某个时间,'y'为历经时间,为正时表示向后推算,为负时表示向前推算。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
typedef  struct date_gxx{
    int hh,mm;
} Time_gxx;
Time_gxx string2Time(char *st);//string:"08:28"-->Time_gxx:{8,18}
char* Time2string(Time_gxx d);//Time_gxx:{9,18}-->tring:"09:18"  由测试程序提供,略去不表
Time_gxx Add(Time_gxx x,int y);{//{23:23}+100-->{01:03}
int main(){
    char st[9];gets(st);
    int dt;scanf("%d",&dt);
    Time_gxx t=string2Time(st);
    t=Add(t,dt);
    printf("%s",Time2string(t));    
    return 0;
}
/* 请在这里填写答案 */

输入样例1:

18:18
128

输出样例1:

20:26

输入样例2:

8:8
-666

输出样例2:

21:02

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码如下:

Time_gxx string2Time(char *st) {
    Time_gxx time;
    sscanf(st, "%d:%d", &time.hh, &time.mm);
    return time;
}

Time_gxx Add(Time_gxx x, int y) {
    int total_minutes = x.hh * 60 + x.mm + y;
    Time_gxx result;
    while (total_minutes < 0) {
        total_minutes += 24 * 60;
    }
    total_minutes%=24*60;
    result.hh = total_minutes / 60;
    result.mm = total_minutes % 60;
    return result;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值