当前位置: 首页 > 知识库问答 >
问题:

带终止字符C++切换情况计算器

芮瑾瑜
2023-03-14

我正在尝试制作一个开关实例计算器,它将要求一个表达式(例如2+2)并打印答案,重复这个过程直到用户输入'q'。

int main() {

double operand1;
double operand2;
char operation;
double answer;

while (operation != 'q'){

cout << "Enter an expression:""\n";
cin >> operand1 >> operation >> operand2;


     switch(operation)
{
    case '+':
        answer = (operand1 + operand2);
        break;

    case '-':
        answer = (operand1 - operand2);
        break;

    case '*':
        answer = (operand1 * operand2);
        break;

    case '/':
        answer = (operand1 / operand2);
        break;


    default:
            cout << "Not an operation :/";
            return 0;

}

    cout <<operand1<<operation<<operand2<< "=" << answer<< endl;

}
 return 0;
}

共有1个答案

阴礼骞
2023-03-14

由于您正在一次读取3个变量,当您在控制台中键入q时,它将被分配给operand1,而不是operation,后者是while循环的终止符-因此,将启动无限循环。

基本问题是应用程序的逻辑。该代码的最快解析如下:

int main() {

    double operand1;
    double operand2;
    char operation;
    char more = 'y';
    double answer;

    while (more != 'n') {

        cout << "Enter an expression:""\n";
        cin >> operand1 >> operation >> operand2;

        switch (operation)
        {
        case '+':
            answer = (operand1 + operand2);
            break;

        case '-':
            answer = (operand1 - operand2);
            break;

        case '*':
            answer = (operand1 * operand2);
            break;

        case '/':
            answer = (operand1 / operand2);
            break;


        default:
            cout << "Not an operation :/";
            return 0;

        }

        cout << operand1 << operation << operand2 << "=" << answer << endl;
        cout << "Continue? (y/n) ";
        cin >> more;
    }
    return 0;
}
 类似资料:
  • 问题内容: 我需要在检查的同时将以下更改为- ,以改善圈复杂度。 但是我不确定我将获得什么价值。 问题答案: Java(版本7之前的版本)在switch / case中不支持String。但是您可以通过使用枚举来达到预期的结果。

  • 我一直在玩流,然后我注意到当我执行以下操作时,它不会在控制台中产生输出: 我认为这是因为是一个非终止流方法,应该使用而不是来终止流并生成结果: 然而,是否有一种方法可以‘提前’终止流,使用一个自定义的终止方法(函数接口),它除了终止流之外什么都不做?..有没有一个适当的方法来利用Java现有的东西来做到这一点? 我知道我可以这样做: 但那感觉很浪费。

  • 问题内容: 很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用: 感谢您的任何建议! 问题答案: 这有效: 此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是您的case表达式必须为布尔值。 之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同

  • 我有一个XML文件,其中包含一个带有特殊字符或转义字符的元素。当我将该文件解组为Java对象时,JAXB会自动转义这些字符。但是,我不希望转义它们,应该用XML文件中存在的任何值填充对象。我的XML文件片段如下所示: 我的JAXB订单类如下所示: 在解组时,Order类对象的名称字段的值为“Order one” 我知道将这个值放在CDATA中的解决方案,这样它就不会被转义,但是我正在解组的XML文

  • 问题内容: 我使用带有标签的php docker容器作为基础: 当我尝试重新启动容器内的apache2时,容器停止: 如何在不停止容器的情况下重新启动apache2? 在将更改放入dockerfile之前,我想使用容器并对其进行自定义。我想安装一些扩展程序,为了使其正常工作,我需要重新启动apache才能使更改生效。 这是通过以下文件的日志文件: 问题答案: 如果将apache用作保持运行容器的主

  • 获取“未终止字符类”错误。 如何修复? 短暂性脑缺血发作 这是我点击运行按钮时的屏幕打印(请注意错误信息):