一,问题描述
二,题目分析
1,已知数据
(1)给予从1970年1月1日00:00:00开始的一个毫秒数
(2)1秒=1000毫秒
(3)小时的范围为0~23
分钟与秒的范围为0~59
(4)输出格式为HH:MM:SS
当数组小于10时,前置0
2,思路
(1)单位化为秒
注:由于毫秒太大,故使用long long类型
(2)分别得到小时 分钟 秒
在这部分中,同时规定了他们的范围
(3)判断是否需要前置补0
调用了sprintf函数,格式为sprintf(变量,“输入格式”,输入内容);
三,源代码
#include<stdio.h>
#include<string.h>
int main() {//一天86400秒
long long mytime;
int a = 0, b = 0, c = 0;
int i = 0;
//int tmp = 0;
char ch1[20] = { 0 };
scanf("%lld",&mytime);
mytime = mytime / 1000;//将毫秒化为秒
i = mytime % 60;//秒
b = ((mytime % 3600) / 60)%60;//分
a = (mytime / 3600)%24;//时
if (i > 10) {//秒
c = i / 10;
i = i % 10;
sprintf(ch1, "%d%d:%d%d:%d%d", 0, 0, 0, 0, c, i);
}
else { sprintf(ch1, "%d%d:%d%d:%d%d", 0, 0, 0, 0, 0, i); }
if (b > 10) {//分
c = b / 10;
b = b % 10;
sprintf(ch1, "%d%d:%d%d:%d%d", 0, 0, c, b);
}
else { sprintf(ch1, "%d%d:%d%d:%d%d", 0, 0, 0, b); }
if (a > 10) {//时
c = a / 10;
a = a % 10;
sprintf(ch1, "%d%d:%d%d:%d%d", c, a);
}
else { sprintf(ch1, "%d%d:%d%d:%d%d", 0, a); }
printf("%s",ch1);
return 0;
}