2016-12-24 536 views
0

我在做以下编程锻炼:转换秒到天,小时,分,秒的格式(C++)

编写一个程序,要求用户输入的秒数为整数 值(利用类型longlong long),然后以天,小时,分钟和秒显示相当于 的时间。使用符号常量来表示一天中的小时数,一小时内的分钟数以及一秒钟内的秒数 。输出应该是这样的:

输入的秒数:31600000

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

所以我写了这个(在微软的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; 
} 

它产生正确的结果。 但我想知道是否有更好的报表day,hr,min,sec

回答

3

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

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; 
+0

omg。谢谢。它好多了! – user7327803

相关问题