我需要帮助来查找此代码中的错误

时间:2019-05-02 08:29:48

标签: c

我正在尝试制作一个C程序,查找给定的数字是否为强数,但是它不起作用。

我正在使用代码块,运行该程序后,当我输入要检查其强度是否不强的数字时,什么都没有发生!没有崩溃,没有错误,没有关闭cmd框什么也没有,我不知道我做错了什么。

 
#include <stdio.h>

int main(){

int i, j, k, n, m, x=1, y=0;

printf("Enter the number: ");
scanf(" %d", &n);
k=n;

for(i=n; i>=1; ) {
    m=n%10;
    for(j=m; j>=1; j--) {
        x*=j;
    }
    y+=x;
    n/=10;
}
if(y==k)
    printf("number is strong");
else
    printf("number is not strong");

return 0;
 }

1 个答案:

答案 0 :(得分:0)

您应该遍历n的数字。每次循环时,您应将i除以10,而不是n

您还需要将每个数字的x重置为1。否则,您将新数字的阶乘乘以以前的阶乘。

for(i=n; i>=1; i/=10) {
    m=i%10;
    x = 1;
    for(j=m; j>=1; j--) {
        x*=j;
    }
    y+=x;
}

大多数for循环的一般模式是:

  • 初始化变量
  • 测试该变量
  • 在循环内使用变量
  • 更新该变量

有时候,如果它只是一个计数器,就不会使用该变量。但是在这里您确实需要使用它,因为它是您想要获取其最后一位数字的值。初始化i然后更新n并不遵循该模式。