对此我不熟悉,我正在尝试使用c ++代码将farrenheit转变为celcius。
#include <iostream>
#include <cassert>
using namespace std;
int main(){
double degreesF{0};
double degreesC{0};
double temp;
//Define relationship between C and F
degreesC = 5.0/9*(degreesF -32);
//Prompt user for degreesF
cout << "Enter the temperate in degrees F: ";
cin >> temp;
degreesC = temp;
//Report the result
cout << temp << endl;
return 0;
};
但它没有输出正确的结果。我认为我需要一个临时变量,因为否则在用户输入值之前会为degreesC分配一个值,结果始终为-17.7778。有没有一个适当的优雅方式来做到这一点?谢谢。
答案 0 :(得分:0)
问题在于
degreesC = 5.0/9*(degreesF -32);
beacuse =
是C和C ++中的assignements运算符。这不是关系的定义。它在degreesF
为0
时完成。
后来
degreesC = temp;
degreesC
vlaue替换为temp
的值。无需计算,只需复制数据。
主要问题在于
cout << temp << endl;
必须在哪里
cout << degreesC << endl;
试试这个:
#include <iostream>
#include <cassert>
using namespace std;
int main(void)
{
double degreesC = 0.0;
double degreesF;
//Prompt user for degreesF
cout << "Enter the temperate in degrees F: ";
cin >> degreesF;
// Calculation
degreesC = 5.0/9*(degreesF -32);
//Report the result
cout << degreesC << endl;
return 0;
};
答案 1 :(得分:0)
#include <iostream>
#include <cassert>
using namespace std;
int main(){
double degreesF = 0;
double degreesC = 0;
//Prompt user for degreesF
cout << "Enter the temperate in degrees F: ";
cin >> degreesF;
//Define relationship between C and F
degreesC = 5.0/9*(degreesF -32);
//Report the result
cout << degreesC << endl;
return 0;
};
这是你想做的吗?
答案 2 :(得分:0)
在c ++ =
中是一个赋值运算符(它使得左侧的内容在逻辑上等于右侧的内容)。
很明显,您要声明degreesC
代表转化功能而不是作业。
这是一种方式:
#include <iostream>
#include <cassert>
using namespace std;
int main(){
double degreesF{0};
double temp;
//Define relationship between C and F
auto degreesC = [](double degreesF) { return 5.0/9*(degreesF -32); };
//Prompt user for degreesF
cout << "Enter the temperate in degrees F: ";
cin >> degreesF;
temp = degreesC(degreesF);
//Report the result
cout << temp << endl;
return 0;
};
示例I / O:
Enter the temperate in degrees F: 89
31.6667