Ich habe diesen Code geschrieben, um alle starken Zahlen von 1 bis n zu drucken, bekomme aber die Ausgabe überhaupt nicht. Das Terminal bleibt nach dem Programmstart stecken, ich habe keine Ahnung, wo ich falsch liege. Bitte korrigieren Sie mich.C Programm zum Drucken aller starken Zahlen von 1 bis n
145
ist eine starke Zahl, da 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);
}
}
zu finden, wo Sie grundsätzlich falsch gehen, ist, dass die 'for' Die Schleife iteriert, indem sie "j" erhöht, und die erste innere "while" -Schleife reduziert "j" auf Null. In Kombination bedeutet das eine Endlosschleife. Es bedeutet auch, dass "j == Summe" niemals wahr ist, also wird keine Ausgabe erzeugt. In Kombination wird dies den Code als "festgefahren" erscheinen lassen - das Programm läuft kontinuierlich und produziert keine Ausgabe. Schließlich gibt 'main()' 'int', nicht' void' zurück. – Peter
Ich bin nicht davon überzeugt, scanf mit '\ n' zu verwenden. Bitte lesen Sie hier, wie Sie scanf mit langen Ganzzahlen verwenden können. [Siehe hier] (http://stackoverflow.com/questions/2852390/using-scanf-in-c-c) – allevo