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)