很多小伙伴们在编写有关时间输出问题时总被0给困扰,计算程序已经写的非常好,但最后输出时不标准;
例如:
Imput time :11:09:30
Duration:32s(这里以秒为例);
Output time :11:10:02
最后输出正确的是 11:10:02;
但很多人总是在秒上少一个0,例如11:10:2;
这里就是对%d的运用,
直接在最后输出时写
printf("%02d:%02d:%02d",s,f,m);
即可;
所以,解决方法就是%02d
这里有我自己写的一个以秒数为Duration的程序:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int s = 0, f = 0, m = 0;
//初始化时分秒
int n = 0;
//初始化时间差
printf("Input time:");
scanf("%d:%d:%d", &s, &f, &m);
printf("Input duration:");
scanf("%d", &n);
if (m + n < 60)
{
printf("New time:%d:%d:%d", s, f, m + n);
}
else if (m + n == 60)
{
if (f != 59)
{
printf("New time:%d:%d:%d", s, f+1, 0);
}
else if (f == 59 && s == 23)
{
printf("New time:%d:%d:%d", 0, 0, 0);
}
else if (f == 59 && s != 23)
{
printf("New time:%d:%d:%d", s+1, 0, 0);
}
}
else if (m + n > 60)
{
if (f != 59)
{
printf("New time:%d:%d:%d", s, f + 1, m+n-60);
}
else if (f == 59 && s == 23)
{
printf("New time:%d:%d:%d", 0, 0, m+n-60);
}
else if (f == 59 && s != 23)
{
printf("New time:%d:%d:%d", s+1, 0, m+n-60);
}
}
return 0;
}