将秒转换为天,小时,分钟,秒格式(C ++)

时间:2016-12-24 16:15:32

标签: c++

我正在做以下编程练习:

编写一个程序,要求用户输入整数秒数 值(使用类型long,或者,如果可用,long long),然后显示等效值 以天,小时,分钟和秒为单位的时间。使用符号常量来表示 一天中的小时数,一小时的分钟数和数量 一分钟内的秒数。输出应如下所示:

  

输入秒数:31600000

     

31600000秒= 365天,17小时,46分钟,40秒

所以我写了这个(在Microsoft Visual Studio 2015中):

#include "stdafx.h"
#include iostream

int main()

{

    using namespace std;

    const int sec_per_min = 60;
    const int min_per_hr = 60;
    const int hr_per_day = 24;

    cout << "Enter numbers of second: ";
    long long seconds;
    cin >> seconds;
    int day, hr, min, sec;

    day = seconds / (sec_per_min * min_per_hr * hr_per_day);
    hr = (seconds - day * hr_per_day * min_per_hr * sec_per_min) / (sec_per_min * min_per_hr);
    sec = seconds % sec_per_min;
    min = (seconds - sec) / sec_per_min % min_per_hr;

    cout << seconds << " seconds = ";
    cout << day << " days, ";
    cout << hr << " hours, ";
    cout << min << " minutes, ";
    cout << sec << " seconds.";
    return 0;
}

它产生了正确的结果。 但我想知道dayhrminsec是否有更好的陈述?

1 个答案:

答案 0 :(得分:4)

我会做以下事情。我认为它更清楚:

auto n=seconds;

sec = n % sec_per_min;
n /= sec_per_min;

min = n % min_per_hr;
n /= min_per_hr;

hr = n % hr_per_day;
n /= hr_per_day;

day = n;