Вопрос о печати номеров в определенном формате на С - PullRequest
0 голосов
/ 04 октября 2018

Вопрос C-программирования:

Мы хотим получить положительное целое число в секундах и распечатать его в формате ЧЧ: ММ: СС.

Например, еслимы получаем 3600, мы должны напечатать 01:00:00.или 4201 -> 01:10:01 (предыдущие 0 должны быть напечатаны).Я знаю, как получить часы, минуты и секунды, но моя проблема связана с форматом вывода.

Примечание. Мы не можем использовать функции, связанные со временем (например, функции time.h, структуры и т. Д.).), а также мы не можем использовать оператор if (чтобы проверить, меньше или меньше число часов, минут или секунд).Как мы можем это сделать?Возможно ли это?

1 Ответ

0 голосов
/ 04 октября 2018

Мы хотим получить положительное целое число в секундах и напечатать его в формате ЧЧ: ММ: СС.

Я знаю, как получить часы, минуты и секунды, но моя проблема сформат вывода.

Использование "%02d" @ user3121023 .

"2" - это минимальная ширина текста.
"0" заставляет заполнение использовать '0' для создания минимальной ширины.

printf("%02d:%02d:%02d", hour, minute, second);

Более интересно, как распечатать все int total.Это имеет проблемы со знаком при разбивке на hour, minute, second и проблемы с диапазоном для hour.

".2" - это ширина минимум цифр.Это следует использовать с hour для гарантии того, что -7 напечатано как «-07», а не «-7».

#define SECS_PER_MIN 60
#define MINS_PER_HOUR 60

// Print time, valid for all `int`
void print_hms(int total /* total seconds */) {
  int sec =  total%SECS_PER_MIN;
  total /= SECS_PER_MIN;
  int min =  total%MINS_PER_HOUR;
  total /= MINS_PER_HOUR;
  int hour = total;

  // use abs() to print negative, `min,sec` without a sign
  printf("%0.2d:%02d:%02d", hour, abs(min), abs(sec));
}

Образец

print_hms(0);
print_hms(3600 + 23*60 + 45);
print_hms(24*3600);
print_hms(-7*3600);
print_hms(INT_MIN);

00:00:00
01:23:45
24:00:00
-07:00:00
-596523:14:08
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...