最近我一直在返回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集成开发环境。
任何帮助将不胜感激。
答案 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;