将华氏温度转换为摄氏温度的C程序始终打印为零

时间:2011-02-03 19:02:51

标签: 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 个答案:

答案 0 :(得分:23)

5/9将导致整数除法,其将= 0

请尝试5.0/9.0

答案 1 :(得分:9)

你的问题在这里:

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

5/9将始终为您提供0。请改用(5.0/9.0)。

答案 2 :(得分:2)

尝试celsius = ((double)5/9) * (fahrenheit-32);或者您可以使用5.0。

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

答案 3 :(得分:0)

您需要使用浮点运算才能以任何精度执行这些类型的公式。如果需要,您始终可以将最终结果转换回整数。

答案 4 :(得分:0)

5/9.0而不是5/9 - 这会强制双重划分

答案 5 :(得分:0)

处理浮动时,需要为5.0f / 9.0f。

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

处理整数时,余数/分数总是被截断。 5/9结果介于0和1之间,因此每次都将其截断为0。将另一边乘以零,每次都完全取消你的答案。

答案 6 :(得分:0)

59属于int类型 因此5/9将始终生成0

您可以使用5/9.05.0/95.0/9.0

您还可以查看C program for converting Fahrenheit into Celsius

答案 7 :(得分:-4)

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();
}