我寫了這個代碼打印所有從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