这是调试过程的截图
我正在学习用 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;
}
while (sqroot != 0); { ... }
是一个无限循环。因为;
被视为空指令。紧接着一个指令(空或非空)if (condition)
or a while (condition)
被认为是only的指示if
, while
, for
scope.
这和写作是一样的
while (sqroot != 0)
{
; /* Do nothing */
}
/* The scope below doesn't belong to the while */
{
rem2 = sqroot % 10;
rev2 = rev2 * 10 + rem2;
sqroot = sqroot / 10;
}
去除;
这个问题应该得到解决。
while (sqroot != 0) {
rem2 = sqroot % 10;
rev2 = rev2 * 10 + rem2;
sqroot = sqroot / 10;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)