c ++ temp转换问题总是一致的结果

时间:2016-06-12 09:12:30

标签: c++

对此我不熟悉,我正在尝试使用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。有没有一个适当的优雅方式来做到这一点?谢谢。

3 个答案:

答案 0 :(得分:0)

问题在于

degreesC = 5.0/9*(degreesF -32);

beacuse =是C和C ++中的assignements运算符。这不是关系的定义。它在degreesF0时完成。

后来

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