摄氏到华氏转换始终在摄氏刻度下显示零

时间:2018-11-04 15:30:49

标签: c algorithm

最近我一直在返回C编程,并且从一些简单的练习开始。但是,当我尝试运行从Farenheit到Celsius的转换程序时,我写的Farenheit列呈现良好,但是Celsius列始终被计算为零。这是我的代码:

#include <stdio.h>

int main()
{
    int step;
    int upper;
    float farenheit;
    float celsius;

    step = 20;
    upper = 300;

    celsius = 0.0;
    farenheit = 0.0;

    printf("Farenheit \t Celsius\n");

    while(farenheit <= upper)
    {

        celsius = ((farenheit - 32.0) * 5.0) / 9.0;
        printf("\n%6f \t %6.1f\n", farenheit, celsius);

        farenheit = farenheit + step;
    }   

    return 0;
}

输出结果如下:

Farenheit        Celsius

     0   -0.000000

    20   -0.000000

    40   0.000000

    60   0.000000

    80   0.000000

   100   0.000000

   120   0.000000

   140   0.000000

   160   0.000000

   180   0.000000

   200   0.000000

   220   0.000000

   240   0.000000

   260   0.000000

   280   0.000000

   300   0.000000


------------------
(program exited with code: 0)
Press return to continue

我看到其他人也遇到了这个问题,他们已经通过将适当的零附加到意为浮点的值来解决此问题。但是,这似乎对我不起作用,我不确定这是什么问题。我正在为此代码使用Geany Linux集成开发环境。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

集成开发环境编译器似乎有错误。我使用gcc语法在命令行中编译了源代码,与运行内置编译器相比,运行该程序时一切正常。看来我的问题已经解决。但是,有趣的是,IDE编译器存在这样的问题。但是,我要感谢大家对这个问题的投入。

编辑:啊哈!这个问题实际上非常简单。对于浪费大家的时间,我深表歉意。看起来它与错误的编译器无关,但事实上,当我使用IDE进行编译时,它不会创建可执行文件。为了使我能够正常运行该程序,我必须对其进行编译,然后选择一个选项来构建它。

我看到在Geany IDE中,对于使用C#编程语言编译的文件,“编译”选项既可以编译一个文件,也可以同时构建一个可执行文件。对于使用C编程语言编译的文件,Geany更改了可用于分离编译和构建功能的选项。

答案 1 :(得分:0)

您的程序对我来说很好用。我使用GCC进行编译。我觉得奇怪的是,在您的输出中,华氏温度显示没有6位小数,因为它是默认值。而且您的摄氏输出也不遵循您的小数点后1位格式。我将此错误归咎于您的编译器。我没有Geany Linux经验。

答案 2 :(得分:-2)

您的演员表出现问题,因为华氏温度是浮点数,但正在将其与int进行比较,这很可能会引起您的问题。

float step;
float upper;
float farenheit;
float celsius;

step = 20.0;
upper = 300.0;

celsius = 0.0;
farenheit = 0.0;

printf("Farenheit \t Celsius\n");

while(farenheit <= upper) {

    celsius = ((farenheit - 32.0) * 5.0) / 9.0;
    printf("\n%6f \t %6.1f\n", farenheit, celsius);

    farenheit = farenheit + step;
}   

return 0;