为什么以下代码没有循环通过m?

时间:2017-08-05 14:08:37

标签: c loops while-loop

以下代码未输出所需结果。它只是通过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;
}

1 个答案:

答案 0 :(得分:4)

因为'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;
}