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

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

#include <stdio.h>
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. Я знаю, что что-то упустил, но не могу понять, что.

8 ответов

Решение

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.0f / 9.0f.

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

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

Записывать 5/9.0 вместо 5/9 - это заставляет двойное деление

5 а также 9 являются из int тип
следовательно 5/9 всегда будет результатом 0,

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

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

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();
}
Другие вопросы по тегам