本题要求编写程序,以hh:mm:ss
的格式输出某给定时间再过n
秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss
的格式给出起始时间,第二行给出整秒数n
(<60)。
输出格式:
输出在一行中给出hh:mm:ss
格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
分析:
- 首先定义了一个名为"time"的结构体,这个结构体包含三个整型成员:小时(h),分钟(m),和秒(s)。
- 定义了一个"time"类型的变量"time",用于存储输入的时间。
- 通过scanf函数,输入时间的小时、分钟和秒,并存储到"time"变量中。
- 通过scanf函数,输入一个表示分钟的整数"o"。
- 计算给定的分钟数"o"转换为小时和分钟:将"o"除以60得到小时数,余数作为分钟数。这个计算的结果保存在变量"mark"中。
- 如果计算出来的小时数"mark"大于等于1,那么将"mark"的小时数加到"time.m"中,并将余下的分钟数(即60减去"mark"的分钟数)加到"time.s"中。
- 如果计算出来的小时数"mark"小于1,那么直接将"mark"的分钟数加到"time.s"中。
- 如果增加分钟后,"time.m"等于60,那么将"time.h"加1,并将"time.m"减去60。
- 如果增加小时后,"time.h"等于24,那么将"time.h"重置为0。
- 最后,通过printf函数输出结果时间。
代码:
#include<stdio.h>
int main()
{
typedef struct time
{
int h;
int m;
int s;
}t;
t time;
scanf("%d:%d:%d",&time.h,&time.m,&time.s);
int o;
scanf("%d",&o);
int mark=(time.s+o)/60;
if(mark>=1)
{
time.m+=mark;
time.s=time.s+o-mark*60;
}
else{
time.s+=o;
}
if(time.m==60)
{
time.h+=1;
time.m-=60;
}
if(time.h==24)
{
time.h=0;
}
printf("%.2d:%.2d:%.2d",time.h,time.m,time.s);
return 0;
}
总结:
这段代码通过结构体定义了时间,并通过输入的时间和分钟数,将时间增加相应的分钟。增加的时间如果超过一小时,会相应地调整小时和分钟。如果增加的时间超过一天(24小时),则将小时数归零。最后输出增加时间后的结果。