这个c程序有什么问题?调试它表明该程序在while(sqroot!= 0)时被攻击;

Gou*_*kur 2 c math integer-arithmetic

这是
我正在学习用C语言编程的调试过程的屏幕截图.我试图找出一个数字是否是一个镜像,但程序编译没有错误但没有给出所需的结果.调试程序显示它在while时触发(sqroot!= 0);

    // Mirror number
    #include <stdio.h>
    #include <math.h>
    int main() {
            int num, rev1, rev2, rem1, rem2, sqr, sqroot;
            printf("Enter a number\n");
            scanf("%d", & num);
            sqr = pow(num, 2);
            while (sqr != 0) {
                    rem1 = sqr % 10;
                    rev1 = rev1 * 10 + rem1;
                    sqr = sqr / 10;

            }
            sqroot = sqrt(rev1);

            while (sqroot != 0); {
                    rem2 = sqroot % 10;
                    rev2 = rev2 * 10 + rem2;
                    sqroot = sqroot / 10;
            }

            if (rev2 == num)
                    printf("number is mirror");
            else
                    printf("Not a mirror number");

            return 0;
    }
Run Code Online (Sandbox Code Playgroud)

Cid*_*Cid 10

while (sqroot != 0); { ... }是一个无限循环.因为它;被认为是一个空指令.的指令只是后(空的或不是)if (condition)或者while (condition)被认为是唯一的指令if,while,for范围.

它与写作相同

while (sqroot != 0)
{
    ; /* Do nothing */
}
/* The scope below doesn't belong to the while */
{
    rem2 = sqroot % 10;
    rev2 = rev2 * 10 + rem2;
    sqroot = sqroot / 10;
}
Run Code Online (Sandbox Code Playgroud)

删除;,这个问题应该解决.

while (sqroot != 0) {
    rem2 = sqroot % 10;
    rev2 = rev2 * 10 + rem2;
    sqroot = sqroot / 10;
}
Run Code Online (Sandbox Code Playgroud)