如何在c ++中修复此代码?

时间:2017-04-06 15:13:54

标签: c++ if-statement

我是C ++的初学者,我写了一个简单的程序来研究C ++的语法。代码会响应,但是错误。代码是:

// converter_temp1.cpp
// converter 3 temp. celsius, fahrenheit e kelvin

// entrar: temperatura, escala atual e pretendida

#include "stdafx.h"


int main()
{
    double t, tempC, tempF, tempk;

    std::string sa, sp, cel, fah, kel;

    std::cout << "Enter with your temperature, actual and pretend scale, for celsius = cel, fahrenheit = fah and kelvin = kel" << std::endl;
    std::cin >> t >> sa >> sp;

    if (sa == cel && sp == fah) {
        tempF = 32 + (9 * t) / 5;
        std::cout << ">>>> Temperature is " << tempF << " F in Fahrenheit!!!! <<<<" << std::endl;

    }else {
        if (sa == kel && sp == cel) {
            tempC = t + 273;
            std::cout << ">>>> Temperature is " << tempC << " C in Celsius!!!! <<<<" << std::endl;

        }
        else {
            std::cout << ">>>> Temperature scale wrong!!!! <<<<" << std::endl;
        }
    }

    return 0;
}

此代码的答案始终是&gt;&gt;&gt;&gt;温度刻度错!!!! &LT;&LT;&LT;&LT ;. 谁能帮助我?

谢谢!

1 个答案:

答案 0 :(得分:4)

您永远不会为变量celfahkel分配值,因此,所有这些值都使用空字符串进行初始化。这就是为什么当您输入任何非空值sasp时,它们永远不会等于celfah或{{ 1}},你最终进入kel分支。

顺便说一句,你可以比输入这个问题更快地找到问题。请阅读here如何操作。