Программа для конверсии Фаренгейта в цель

Я пишу программу для classа, в котором я участвую, и мне нужна помощь в программе преобразования Фаренгейта в objectiveсий в C. Мой код выглядит так

#include  int main (void) { int fahrenheit; double celsius; printf("Enter the temperature in degrees fahrenheit:\n\n\n\n"); scanf("%d", &fahrenheit); celsius = (5/9) * (fahrenheit-32); printf ("The converted temperature is %lf\n", celsius); return 0; } 

Каждый раз, когда я его выполняю, результат равен 0,000000. Я знаю, что я что-то упускаю, но не могу понять, что.

5/9 приведет к целочисленному делению, которое будет = 0

Вместо этого попробуйте 5.0/9.0 .

У вас проблема:

 celsius = (5/9) * (fahrenheit-32); 

5/9 всегда даст вам 0 . Вместо этого используйте ( 5.0/9.0 ).

попробуйте celsius = ((double)5/9) * (fahrenheit-32); Или вы можете использовать 5.0.

Дело в том, что «/» смотрит на тип операнда. В случае int результат также является int, поэтому у вас есть 0. Когда 5 рассматривается как double, то деление будет выполнено правильно.

пишите 5/9.0 вместо 5/9 – это приводит к двойному делению

Вы должны использовать арифметику с плавающей запятой, чтобы выполнять эти типы формул с любой точностью. Вы всегда можете преобразовать конечный результат обратно в целое число, если это необходимо.

При работе с float он должен быть 5.0f / 9.0f.

При работе с удвоениями он должен быть 5.0 / 9.0.

При работе с целыми числами остатки / фракции всегда усекаются. Результаты 5/9 между 0 и 1, поэтому он усекается до 0 каждый раз. Это умножает другую сторону на ноль и полностью аннулирует ваш ответ каждый раз.

5 и 9 имеют тип int
следовательно, 5/9 всегда будет 0 .

Вы можете использовать 5/9.0 или 5.0/9 или 5.0/9.0

Вы также можете проверить программу C для преобразования Фаренгейта в objectiveсий

 using System; public class Calculate { public static void Main(string[] args) { //define variables int Celsius; int fahrenheit; string input; //prompt for input //read in the input and convert Console.WriteLine("Enter Celsius temperature"); input = Console.ReadLine(); Celsius = Convert.ToInt32(input); //calculate the result fahrenheit = ((Celsius * 9 )/5) + 32; //print to screen the result Console.WriteLine("32 degrees Celsius is {0}", "equivilant to 89.60 degrees fahrenheit"); Console.ReadLine(); } 
  • Присвоение строк массивам символов
  • C - О чем этот синтаксис? <<
  • Безопасно ли удалить указатель NULL?
  • Массивы, распадающиеся на указатели
  • Каково значение 0.0f при инициализации (в C)?
  • Почему getchar () не распознает return как EOF на консоли?
  • Что делает флаг FD_CLOEXEC fcntl ()?
  • srand (time (NULL)) не меняет начальное значение достаточно быстро
  • Как правильно использовать ключевое слово extern в C
  • Разница в int8_t, int_least8_t и int_fast8_t?
  • Сравните текущее время с двумя строками раз в день
  • Interesting Posts

    Null check chain vs catching NullPointerException

    Как заставить vim открывать сразу несколько файлов на вкладки

    jQuery – обнаружение, если файл был выбран во входном файле

    Как использовать Scanner для принятия только действительного int в качестве входного

    Где находится файл настроек Chrome?

    .Net regex: что такое символ character \ w?

    Каков максимальный размер MySQL VARCHAR?

    Является ли двойным действительно неподходящим для денег?

    Горячая клавиша для переключения языка ввода в Windows 7

    Как вернуть число измерений переменной (Variant), переданной ей в VBA

    ActionBar – пользовательский вид с центрированным ImageView, элементами действия по сторонам

    В чем разница между «classическим» и «интегрированным» режимами трубопровода в IIS7?

    Разбор арифметического выражения и построение дерева из него в Java

    Почему HttpContext.Current null?

    Вызов функции переопределения базового classа из метода базового classа

    Давайте будем гением компьютера.