2 时间转换2

2 时间转换2

作者: Turbo时间限制: 1S章节: 分支结构

问题描述 :

给定一个t,将t秒转化为DD days HH:MM:SS的形式,表示DD天HH小时MM分钟SS秒。

HH,MM,SS均是两位数,如果小于10用0补到两位。

如果大于等于2天,则输出DD days HH:MM:SS,比如 2 days 01:05:12

如果大于等于1天并小于2天,则输出 1 day HH:MM:SS,比如 1 day 01:05:12

如果大于等于1小时并小于1天,则只输出HH:MM:SS,比如 01:05:12

如果大于等于1分钟并小于1小时,则只输出MM:SS,比如 01:00

如果大于等于10秒并小于1分钟,则只输出SS,比如 10

如果小于10秒,则只输出一位,表示秒数,比如 9

输入说明 :

输入一个数t,表示时间的秒数。

0<=t<1002460*60。

输出说明 :

输出格式形如:

86 days 00:02:12

表示86天0小时2分12秒。

其中“days”前后各有一个空格,行尾没空格。

详细描述见上。

输入范例 :
8003045
输出范例 :
92 days 15:04:05

#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main()
{
	int t;
	cin >> t;
	string str1 = " days ", str2 = " day ";
	int DD, HH, MM, SS;
	int d = 24 * 60 * 60, h = 60 * 60, m = 60;
	DD = t / d;
	t -= DD*d;
	HH = t / h;
	t -= HH*h;
	MM = t / m;
	t -= MM*m;
	SS = t;
	if (DD >= 2)
	{
		cout << DD << str1;
		printf("%02d:%02d:%02d
", HH, MM, SS);
	}
	else if (DD == 1)
	{
		cout << DD << str2;
		printf("%02d:%02d:%02d
", HH, MM, SS);
	}
	else//DD==0
	{
		if (HH >= 1)
		{
			printf("%02d:%02d:%02d
", HH, MM, SS);
		}
		else//HH==0
		{
			if (MM >= 1)
			{
				printf("%02d:%02d
", MM, SS);
			}
			else//MM==0
			{
				cout << SS << endl;
			}
		}
	}
	return 0;
}
Yesterday is history,tomorrow ismystery,but today is a gift!That why it is called Present!
原文地址:https://www.cnblogs.com/VictorierJwr/p/12861232.html