我正在尝试制作一个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;
}
答案 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
并不遵循该模式。