C++ 为什么不是';我的陈述工作时不做

C++ 为什么不是';我的陈述工作时不做,c++,while-loop,C++,While Loop,你能修好这个程序吗。这不会发生 int main() { using namespace std; int x, y, z, a; cout << "Please enter a number" << endl; cin >> x; cout << "Please enter another number" << endl; cin >> y; cout <<

你能修好这个程序吗。这不会发生

int main()
{
    using namespace std;
    int x, y, z, a;
    cout << "Please enter a number" << endl;
    cin >> x;
    cout << "Please enter another number" << endl;
    cin >> y;
    cout << "What do you want to do with these numbers?" << endl;
    cout << "1 = +" << endl;
    cout << "2 = -" << endl;
    cout << "3 = *" << endl;
    cout << "4 = /" << endl;
    cin >> a;

    do {
        z = add(x, y);
    } while (a == 1);

    do {
        z = sub(x, y);
    } while (a == 2);

    do {
        z = mul(x, y);
    } while (a == 3);

    do {
        z = dis(x, y);
    } while (a == 4);

    cout << z;
    return 0;
}
intmain()
{
使用名称空间std;
int x,y,z,a;
cout x;
库蒂;

cout您的代码正在进入一个无限循环,请这样修改它

   int main()
{
using namespace std;
int x, y, z, a;
do
{
cout << "Please enter a number" << endl;
cin >> x;
cout << "Please enter another number" << endl;
cin >> y;
cout << "What do you want to do with these numbers?" << endl;
cout << "1 = +" << endl;
cout << "2 = -" << endl;
cout << "3 = *" << endl;
cout << "4 = /" << endl;
cin >> a;
switch(a)
{
  case 1:
    z = add(x, y);
    break;
  case 2:
    z = sub(x, y);
    break;
  case 3:
    z = mul(x, y);
    break;
  case 4:
    z = dis(x, y);
    break;
}  
cout << z;
} while( 1 >= a <= 4)
return 0;
}
intmain()
{
使用名称空间std;
int x,y,z,a;
做
{
cout x;
库蒂;

cout无论您输入哪个选项,它都将进入do while循环,并且永远不会退出,因为条件将始终得到满足。例如,如果我输入1,它将进入:

do {
    z = add(x, y);
} while (a == 1);
由于a始终为1,它将永远不会退出此操作。其他条件也是如此。相反,您可以使用switch语句。类似于:

switch(a) {
    case 1 : z = add(x, y);
             break;
    case 2 : z = sub(x, y);
             break;
    case 3 : z = mul(x, y);
             break;
    case 4 : z = div(x, y);
             break;
    default : cout<<"Please choose a valid option to proceed.";
}
cout << z;
return 0;
声明:

 while( 1 >= a <= 4)

[括号仅为清晰起见,您可以删除两组内部括号]

@PSR-Huh?我不明白。请提供更多详细信息。您的循环不会修改
a
。因此,如果它进入其中一个循环,它将永远不会出来。您可以使用开关吗statement@PSRLokoko建议使用下面的switch语句,但是不,我不能使用它。为什么不使用switch语句呢?如果我使用switch语句,你不需要那么多nts。这就是为什么会有一个switch case。谢谢你的回答。它确实帮了我的忙,但是如果我真的想使用do while语句,有什么方法可以使用它吗?如果你真的想保留旧代码并避免无限循环,试试这个do{z=add(x,y);a=5;}while(a==1);我会让它更漂亮一点。@Premsuraj谢谢,我想学习如何扭曲代码。谢谢!这个switch语句很酷。我将对它进行一点尝试。另外,我注意到您使用了div(x,y),但是,我无法使用div,我只被允许使用dis。所以在我的代码中,它是dis(x,y).这是什么原因造成的?是div忙还是什么?可能是输入错误:)请您将ans标记为正确。如果您的问题已解决?tnks。
 while( 1 >= a <= 4)
while( (1 >= a) <= 4);
while ( (1 >= a) && (a <= 4) );