作者 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;
}