【问题标题】:Why following code is not looping through m?为什么下面的代码没有通过 m 循环?
【发布时间】:2017-08-05 14:08:36
【问题描述】:

以下代码未输出所需的结果。它只是通过 n 迭代,而不是 y。为什么以及如何解决?

int product(int m,int n){
    int x,p;
    while(m>=100){
        while(n>=100){
            printf("Value of m= %d and n=%d\n",m,n );
            x=m*n;
            p=palindrome(x);
            if (p==0)
            {
                printf("These two numbers are %d and %d\n",m,n );

            }
            n--;
        }
        m--;

    }
    return 0;
}

【问题讨论】:

  • 看起来你第一次通过内部循环递减,最终将失败整个条件 n>=100,假设 n 开始时大于 100。
  • "它只通过 n 迭代,而不是 y"。什么?变量?

标签: c loops while-loop


【解决方案1】:

因为 `n' 不再 >= 100。所以外部循环迭代但在第一个循环之后永远不会进入内部。

解决方案:小心!!!! - 如果你在线执行它,你会杀死你的浏览器:)

int product(int m,int n){
    int x,p, savedn = n;
    while(m>=100){
        while(n>=100){
            printf("Value of m= %d and n=%d\n",m,n );
            x=m*n;
            p=palindrome(x);
            if (p==0)
            {
                printf("These two numbers are %d and %d\n",m,n );

            }
            n--;
        }
        m--;
        n = savedn;

    }
    return 0;
}

【讨论】:

  • 谢谢你,现在我意识到我的错误了。
猜你喜欢
  • 2020-09-13
  • 2023-03-07
  • 2019-09-16
  • 2017-02-21
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 2021-06-01
  • 2020-01-13
相关资源
最近更新 更多