否则,如果选项3没有产生答案......我做错了什么?

时间:2016-08-07 03:02:31

标签: c if-statement user-defined-functions equation udf

该程序运行但我无法弄清楚为什么第三个功能 否则if语句不返回准确的值。感谢您的帮助 提前。

finaltemp = newtemp(t, choice);

printf("\nThe converted temperature is: %f", finaltemp);

return(0);
}

double newtemp(double a, double b)
{
double result;
if (b==1)
  {
    result = (a-(273.15));
  }
if (b==2)
  {
    result = (a+(273.15));
  }
if (b==3)
  {
    result = (((5/9)*(a))-32);
  }
if (b==4)
  {
    result = (((9/5)*(a))+32);
  }
if (b==5)
  {
    result = (((9/5)*(a))-459.67);
  }
if (b==6)
  {
    result = ((a+459.67)*(9/5));
  }

 return(result);
 }

1 个答案:

答案 0 :(得分:3)

您正在执行整数除法,而不是浮点除法。

表达式(5/9)除以两个int值,因此结果为int,特别是0.您需要使用浮点常量来强制浮点除法。

if (b==3)
  {
    result = (((5.0/9.0)*(a))-32);
  }
if (b==4)
  {
    result = (((9.0/5.0)*(a))+32);
  }
if (b==5)
  {
    result = (((9.0/5.0)*(a))-459.67);
  }
if (b==6)
  {
    result = ((a+459.67)*(9.0/5.0));
  }