C++ 外部while循环有什么问题?

C++ 外部while循环有什么问题?,c++,loops,while-loop,nested-loops,C++,Loops,While Loop,Nested Loops,每当我运行上述代码时,它都会显示一个随机数。但是在那之后,即使我输入了没有引号的ch as y的值,当然!标记为问题循环的while循环无法继续。是的,我知道这是某种运行时错误,但是有谁能指定是什么导致了这个问题,并且通过对代码进行什么样的精确更改可以让我成功地运行它吗?您将ch定义为int,这意味着cin将把输入解释为一个整数,并将其读入ch。您可以观察到,当您输入121并且代码继续时,会发生这种情况。要解决您的问题,只需更改 int x,y,n=0,ch='y'; 进入 int x,y,n=

每当我运行上述代码时,它都会显示一个随机数。但是在那之后,即使我输入了没有引号的ch as y的值,当然!标记为问题循环的while循环无法继续。是的,我知道这是某种运行时错误,但是有谁能指定是什么导致了这个问题,并且通过对代码进行什么样的精确更改可以让我成功地运行它吗?

您将ch定义为int,这意味着cin将把输入解释为一个整数,并将其读入ch。您可以观察到,当您输入121并且代码继续时,会发生这种情况。要解决您的问题,只需更改

int x,y,n=0,ch='y'; 进入

int x,y,n=0; char ch='y'; 另外,您有一个永远不会发生的if语句,因此您最好去掉ifn>3&&n您将ch定义为int,这意味着cin将把输入解释为整数并将其读入ch。您可以观察到,当您输入121并且代码继续时,会发生这种情况。要解决您的问题,只需更改

int x,y,n=0,ch='y'; 进入

int x,y,n=0; char ch='y';

也有一个IF语句,它永远不会发生,所以你最好去掉IFN > 3 &它是:C++还是C?因为CH是int。将它改为char。N3是什么时候的?是C++还是C?因为CH是int。将它改为char。N3何时才是真的?

#include<iostream>
using namespace std;
int main()
{
  int x,y,n=0,ch='y';
  while(ch=='y')//problem loop
  {
    gno:
    x=rand()%9999+1000;
    y=x;
    n=0;
    while(y>0)
    {
      y=y/10;
      n++;
      if(n>3&&n<3)
        goto gno;
    }
    cout<<x<<endl;
    cin>>ch;
  }
  return 0;
}