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。 我知道我错过了一些东西,但无法弄清楚什么。

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。

事实是“/”看操作数types。 在int的情况下,结果也是一个int,所以你有0。当5被视为double时,那么除法将被正确执行。

5/9.0而不是5/9 – 这迫使双重分裂

您需要使用浮点运算来执行任何精度的这些types的公式。 如果需要的话,您总是可以将最终结果转换回整数。

处理浮游物时,需要5.0f / 9.0f。

处理双打时,需要5.0 / 9.0。

处理整数时,余数/分数总是被截断。 5和9之间的结果在0和1之间,所以每次只截取0。 这将乘以另一方零,并完全废除你的答案每一次。

59inttypes的
因此5/9总是会导致0

您可以使用5/9.05.0/95.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(); }