【蓝桥杯】 C++ 时间显示

题目描述

小蓝要和朋友合作开发一个时间显示的网站。
在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。

输入描述

输入一行包含一个整数,表示时间。

输出描述

输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值为 0​​​​ 到 23​​​​,MM 表示分,值为 0​​​​ 到 59​​​,SS 表示秒,值为 0​​ 到 59​。时、分、秒 不足两位时补前导 0。

实现代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long ms;
    cin>>ms;
    int HH=0,MM=0,SS=0;
    HH=(ms/1000)/3600%24;
    MM=(ms/1000)%3600/60;
    SS=(ms/1000)%3600%60;

    cout<<setw(2)<<setfill('0')<<HH<<":";
    cout<<setw(2)<<setfill('0')<<MM<<":";
    cout<<setw(2)<<setfill('0')<<SS<<endl;
}

解题思路

输入毫秒数,然后再算。首先先把毫秒换成秒,把它除以1000,也就是 (ms/1000) ,因为 1 小时等于 3600 秒,HH 在计算的时候直接除 3600,得到的结果再模 24,因为小时数小于 24。MM 也一样,毫秒变秒之后模 3600,得到相对于 1 小时多出来的秒数,再除以 60,得到分钟数。SS 相似,毫秒变秒之后模 3600,得到相对于 1 小时多出来的秒数,再模 60,得到相对于 1 分钟多出来的秒数,就可以解决,之后根据格式输出。

注意点

注意计算小时的时候要模 24,不然输入的数大的时候会算出超级大的结果。

知识点

  • C++ 输出特定整数位数:代码 cout << setw(10) << setfill('0') << test << " "; 的意思是输出的整数有 10 位,不足 10 位就在前面补 0 。参考文章 [杂谈] 4. C++按指定的位数输出
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值