我的函数保持返回0而不是实际计算的返回值?

时间:2016-12-09 08:29:36

标签: c function

#include <stdio.h>

//function prototypes
const double fiveNinths = 5 / 9;

int toCelsius(double value) 
{
    return ((value - 32) * (fiveNinths));
}

int toFarenheit(double value) 
{
    return (value * 1.8) + 32;
}


int main (void) 
{
    int intValue, menuSelect; 
    double results;
    intValue = 1;

    while (intValue > 0) 
    {
        printf( "enter a positive integer: \n");
        scanf("%d", &intValue);

        if (intValue > 0) 
        {
            printf("Enter 1 to convert to Farenheit, enter 2 to convert to Celsius: \n");
            scanf("%d", &menuSelect);

            if (menuSelect == 1)
            {
                results = toFarenheit(intValue);
                printf("%d degrees to Farenheit is %d\n", intValue, results);
            }
            else if (menuSelect == 2)
            {
                results = toCelsius(intValue);
                printf("%d degrees to Celsius is %d\n", intValue, results);

            }
            else
            {
                printf("invalid menu item, please input only 1 or 2\n");
            }
        }
    }

    return 0;
}

我无法弄清楚为什么我的toCelsius值总是返回0.我的toFarenheit函数工作得很好。此外,该程序通过让用户输入负整数值来终止;它是家庭作业的一部分,所以无视这一部分。

2 个答案:

答案 0 :(得分:0)

尝试使用:

const double fiveNinths = 5.0 / 9.0;
double toCelsius(double value) {
    return ((value - 32.0) * (fiveNinths));
}

通过这一行:double results = toCelsius(double value),该方法应该返回一个double值,而不是一个ineger值。

当你只使用95时,你实际上是整数除法,所以它返回整数值0,既不是正确的双值。

答案 1 :(得分:-1)

在您的功能声明中,它显示int toCelsius(double value),但您正在使用results = toCelsius(intValue);打开主要功能。然后计算操作与整数一起使用,并且5/9可以看作是0,这也总是使返回值为0。尝试将5/9与1交换,只是为了看看你是否得到不同于0的值。如果是这种情况你就找到了错误。