【问题标题】:What's the problem in the outer while loop?外部while循环有什么问题?
【发布时间】:2020-07-09 03:53:46
【问题描述】:
#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;
}

每当我运行上述代码时,它都会显示一个随机数。但在那之后,即使我将 ch 的值输入为“y”(当然没有引号!)标记为“问题循环”的 while 循环也不会继续。是的,我知道这是某种运行时错误,但任何人都可以指定导致此问题的原因,并通过对代码进行哪些确切的更改来让我成功运行它?

【问题讨论】:

  • 它是C++还是C?
  • 因为chint。将其更改为char
  • n&lt;3&amp;&amp;n&gt;3 什么时候是真的?

标签: c++ loops while-loop nested-loops


【解决方案1】:

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

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

进入

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

另外,你有一个永远不会发生的 if 语句,所以你不妨去掉if(n&gt;3&amp;&amp;n&lt;3)goto。请记住goto is bad.

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2013-01-19
    相关资源
    最近更新 更多