Перевод минут в секунды - C (СИ)
Формулировка задачи:
Скажите в чем проблема. Написал программу, она работает но не совсем верно.
unsigned int [0..65535], unsigned long [0..4294967295]. Т.е. minutes*60 спокойно помещается в seconds. Но на выходе, если minutes большое (>1000 и т.д.) результат как будто приводится к unsigned int, в итоге переполнение. Хотя читал что, приводится должно к long. Может что то напудрил в форматным вводом-выводом?
Среда разработки Borland C++ 3.1.
/*
Программа выполяняет перевод минут в секунды.
Данные вводятся с клавиатуры.
*/
#include <stdio.h> // подлючение заголовочных файлов
#include <conio.h>
unsigned int minutes;
unsigned long seconds;
void main()
{
printf("\nВведите число минут: ");
scanf("%u", &minutes);
seconds = minutes*60;
printf("В %u минутах содержится %lu секунд.\n", minutes, seconds);
printf("\nДля завершения работы нажмите любую клавишу.");
getch();
}Решение задачи: «Перевод минут в секунды»
textual
Листинг программы
#include <stdio.h>
int main(void){
unsigned int m;
unsigned long s;
printf("Min: ");
scanf("%u", &m);
s = (unsigned long)m * 60UL;
printf("Sec: %lu\n", s);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки
для работы с вводом/выводом - Объявление переменных: — m - переменная типа unsigned int для хранения количества минут — s - переменная типа unsigned long для хранения количества секунд
- Вывод сообщения
Min:и запрос ввода количества минут с помощью функции scanf - Перевод количества минут в секунды, умножая на 60 (переменная m умножается на 60 и приводится к типу unsigned long с суффиксом UL)
- Вывод количества секунд с помощью функции printf
- Завершение работы программы с возвратом 0