您的代码中有四个错误。
1) 重点是要认识到计算机按照你要求的顺序做事。显然正确的顺序是 a) 要求用户输入温度 b) 将其转换为摄氏度。但是你的代码反过来做。这是你的代码和我的一些评论
// convert fahrenheit to celcius
int celsius = 5/9*(fahrenheit-32);
// ask user to enter fahrenheit temperature
cout << "Please enter Fahrenheit degrees: ";
cin >> fahrenheit ;
希望现在很明显你有错误的方式
2)第二个错误是您为变量选择了错误的类型。温度不是一个整数(例如说温度是 80.5 度没有错)。因此,您应该为变量选择浮点类型float
,这是一种可能性。
3)第三个错误是相当技术性的,但理解起来很重要。在您编写的方程式中5/9
,5
和9
都是整数,因此计算机将执行整数除法,这意味着无论除法的数学结果如何,计算机都会删除结果的小数部分,留下一个整数。所以数学5/9
上是0.555555...
,去掉小数部分0
,所以你的方程是一样的0*(fahrenheit-32)
,显然不会给出正确的结果。使用5.0/9.0
而不是5/9
那种方式你得到浮点除法。
4)最终的错误是相当微不足道的
cout.precision(0); //two decimal for cents
如果你想要两位小数,它应该是
cout.precision(2);
最后,这不是一个错误,但在一个关于温度的程序中,关于钱的评论是不恰当的。
这是修复了这些错误的代码版本
int main() {
cout.setf(ios::fixed); //no scientific notation
cout.setf(ios::showpoint); //show decimal point
cout.precision(2); //two decimal places
float fahrenheit;
cout << "Please enter Fahrenheit degrees: ";
cin >> fahrenheit;
float celsius = 5.0/9.0*(fahrenheit-32.0);
cout << "Celsius: " << celsius << endl;
return 0;
}
我敢肯定你会惊讶于一个简短的程序可以有这么多的错误。它只是强调在编写代码时必须小心和精确。