刷题笔记
题目:
题目描述:
给定一个以秒为单位的时间t,要求用 “< H> :< M> :< S> ”的格式来表示这个时间。< H> 表示时间,< M> 表示分钟, 而< S> 表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。
输入:
输入只有一行,是一个整数t(0< =t< =86399)。
输出:
输出只有一行,是以“< H> :< M> :< S> ”的格式所表示的时间,不包括引号。
样例输入
5436
样例输出
1:30:36
分析:除于时分秒相对应的秒数取整即可
这道题真的给我心态给弄崩了,代码明明没有错可是在蓝桥杯上测试错误,题目要求用的是H,M,S,但就是提交失败,我纳闷了老半天了,在网上搜了好多基本和我的算法一样,最后粘贴了一个变量为a,b,c的变量,结果正确了,简直吐 了,不知道蓝桥系统有什么限制,绝了,有知道的伙伴可以告诉我一下。
下面给大家介绍两种思路。
代码如下:代码片
第一种:
#include<stdio.h>
int main() {
int t,H,M,S;
scanf("%d",&t);
H = t/3600;
M = t%3600/60;
S = t%3600%60;
printf("%d:%d:%d\n",H,M,S);
}
和下面一样
#include<stdio.h>
int main()
{
int n,a,b,c;
scanf("%d",&n);
a=n/3600; //一个小时3600秒,取整即得
b=n%3600/60; //总秒数求3600余数得到剩余分钟+秒的总和,再取整60就是分钟的
c=n%3600%60; //总秒数求3600余数得到剩余分钟+秒的总和,再取余60就是分钟的
printf("%d:%d:%d\n",a,b,c);
return 0;
}
第二种:
#include<stdio.h>
int main()
{
int n,a,b,c;
scanf("%d",&n);
a=n/3600; //一个小时3600秒,取整即得
b=(n-a*3600)/60; //总秒数减去小时的时间,再除60就是分钟的时间
c=n-a*3600-b*60; //总秒数减去上面球的时间和分钟秒数就算剩下的秒数
printf("%d:%d:%d\n",a,b,c);
return 0;
}
运行结果如下:代码片
5436
1:30:36
--------------------------------
Process exited after 7.35 seconds with return value 0
请按任意键继续. . .
分享经验到此结束,有什么疑问或者更好的方法,欢迎留言评论。