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。 这将乘以另一方零,并完全废除你的答案每一次。
5
和9
是int
types的
因此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(); }