本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。
输出格式:
输出在一行中给出hh:mm:ss格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
思路:
1.将所有时间转化成秒数
2.将转换后的秒数加上过去的秒数,得到新的秒数
3.一天有86400秒,如果秒数超过86400,则表明到了第二天,需要用秒数减去86400,得到第二天的秒数
4.将秒数分别转化成小时,分钟,秒,然后输出
5.别忘了将数字宽度设置为2
代码:
#include<stdio.h>
int main()
{
int h,m,s;
scanf("%d:%d:%d:",&h,&m,&s);
int n;
scanf("%d",&n);//输入的秒数
int time;//定义变量表示时间,以秒的形式存储
time=3600*h+60*m+s+n;//将相加后的时间表示成秒
if(time>=86400)//一天86400秒,如果相加后秒数大于86400,则表明到了第二天
{
time=time-86400;//减去前一天的秒数,表示新一天的秒数
}
if(time<86400)//反之则没有超过一天
{
time=time;
}
int hour,minute,second;//定义小时,分钟,秒,将秒转换成小时数,分钟数,秒数
hour=time/3600;
minute=(time-(3600*hour))/60;
second=(time-3600*hour-60*minute);
printf("%02d:%02d:%02d",hour,minute,second);
return 0;
}
代码:(无注释)
#include<stdio.h>
int main()
{
int h,m,s;
scanf("%d:%d:%d:",&h,&m,&s);
int n;
scanf("%d",&n);
int time;
time=3600*h+60*m+s+n;
if(time>=86400)
{
time=time-86400;
}
if(time<86400)
{
time=time;
}
int hour,minute,second;
hour=time/3600;
minute=(time-(3600*hour))/60;
second=(time-3600*hour-60*minute);
printf("%02d:%02d:%02d",hour,minute,second);
return 0;
}