本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。
输出格式:
输出在一行中给出hh:mm:ss格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
我的代码:
#include<iostream>
using namespace std;
int main()
{
char f1,f2;
int h,m,s;
cin>>h>>f1>>m>>f2>>s;
int n;
cin>>n;
getchar();
if((s+n)<60)s=s+n;
else if((s+n)==60)
{
m+=1;s=0;
if(m==60)
{h+=1;m=0;if(h>=24)h-=24;}
}
else {
s=s+n-60;
m+=1;
if(m==60)
{h+=1;m=0;if(h>=24)h-=24;}
}
printf("%2d:%2d:%2d",h,m,s);
return 0;
}
%02d实现补零操作,这样就不会00只输出0 了
#include<iostream>
using namespace std;
int main()
{
char f1,f2;
int h,m,s;
cin>>h>>f1>>m>>f2>>s;
int n;
cin>>n;
getchar();
if((s+n)<60)s=s+n;
else if((s+n)==60)
{
m+=1;s=0;
if(m==60)
{h+=1;m=0;if(h>=24)h-=24;}
}
else {
s=s+n-60;
m+=1;
if(m==60)
{h+=1;m=0;if(h>=24)h-=24;}
}
printf("%02d:%02d:%02d",h,m,s);
return 0;
}
using namespace std;
int main()
{
char f1,f2;
int h,m,s;
cin>>h>>f1>>m>>f2>>s;
int n;
cin>>n;
getchar();
s = s + n;
m += (s - s%60) > 0, s %= 60;
h += (m - m%60) > 0, m %= 60;
h %= 24;
printf("%02d:%02d:%02d",h,m,s);
return 0;
}
这道题之前我写过,也出过一篇相关的文章,题主也可以去看看:
https://blog.csdn.net/qq_51646682/article/details/122702732
以下代码,供题主做思路参考:
//编码及注释:Code_流苏
//定义头文件
#include<stdio.h>
#include<stdlib.h>
//主函数
int main()
{
//定义h,m,s,n,a变量
//h,m,s分别是 时 分 秒
//n 是 需经过的秒数
//a 是 中间变量 用于计算求值
int h,m,s,n,a;
//输入小时分钟秒
printf("请输入时间:\n");
scanf("%d:%d:%d",&h,&m,&s);
//输入需经过的秒数n的值
printf("请输入需要经过的秒数:\n");
scanf("%d",&n);
//计算经过n秒后的时 分 秒(h m s)
a=3600*h+60*m+s+n;
a=a%86400;
h=(a-a%3600)/3600;
a=a%3600;
m=(a-a%60)/60;
a=a%60;
s=a;
//输出结果
printf("经过%d秒后的结果为:\n",n);
printf("%02d:%02d:%02d",h,m,s);
//返回0,代表程序执行结束
return 0;
}
希望对题主有所帮助,可以的话,帮忙点个采纳!
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!