我写了这个代码打印所有从1到n的强数字,但根本没有得到输出。运行该程序后终端卡住了,我不知道错在哪里。请纠正我。C程序打印所有从1到n的强数字
145
是强一些,因为1! + 4! + 5! == 145
#include <stdio.h>
void main() {
int i = 1, fact, sum, n, a;
long int number;
printf("\n Find Strong numbers between 1 to \n");
scanf("\n%ld", &number);
printf("\n All Strong numbers between 1 to %ld are:\n", number);
for (int j = 1; j <= number; j++) {
sum = 0;
while (j != 0) {
a = j % 10;
j = j/10;
fact = 1;
while (i <= a) {
fact = fact * a;
a--;
}
sum = sum + fact;
}
if (j == sum)
printf("\n%d\n", j);
}
}
如果您正在从根本上走错了就是'for'循环通过增加'j'进行迭代,并且第一个内部'while'循环将'j'减少到零。结合起来,这会造成无限循环。这也意味着'j == sum'永远不会是真的,所以不会产生输出。结合起来,这会使代码看起来“卡住” - 程序不断循环,不产生任何输出。最后,'main()'返回'int',而不是'void'。 – Peter
我不相信在'\ n'中使用scanf。 请看这里,如何使用长整数的scanf。 [看这里](http://stackoverflow.com/questions/2852390/using-scanf-in-c-c) – allevo