首页 > 解决方案 > 为什么这个应该请求操作然后进行必要计算的代码不起作用

问题描述

include using namespace std;

int main() {
  float n1, n2, sum, diff, pro, quot;
  char f;

  cout << "PLease enter your function(A,S,D,M or X to end the program" << endl;
  cin >> f;

  while (f != 'A', 'S', 'D', 'M', 'X') {
    cout << "Invalid Operation" << endl;
    cout << "PLease enter your function(A,S,D,M or X to end the program"
         << endl;
    cin >> f;
  }

  if (f == 'X') return 0;
  if (f == 'A', 'S', 'D', 'M') {
    cout << "Please enter two numbers";
    cin >> n1 >> n2;

    if (f == 'A') {
      sum = n1 + n2;
      cout << sum;
    }

    else if (f == 'S') {
      if (n1 > n2) {
        diff = n1 - n2;
        cout << diff;
      } else {
        diff = n2 - n1;
        cout << diff;
      }
    } else if (f == 'D') {
      if (n1 > n2) {
        quot = n1 / n2;
        cout << quot;
      } else {
        quot = n2 / n1;
        cout << quot;
      }
    } else if (f == 'M') {
      pro = n1 * n2;
      cout << pro;
    }
  }

  return 0;
}

它不接受 A,S,M,D

标签: c++if-statementwhile-loopcalculator

解决方案


你的while说法是问题所在。它使用逗号表达式,这不是您想要的,因为它最终评估为“X”。您需要分别比较f每个选项。

实现此目的的一种方法是将while语句中的比较扩展为类似

while (f != 'A' && f != 'S' && f != 'D' && f != 'M' && f != 'X')
{
  ...
}

if您在下面几行的陈述也是如此。


推荐阅读