Einführung
In diesem Labor lernen wir, wie man mit einem C-Programm überprüft, ob eine gegebene Zahl eine Armstrong-Zahl ist. Zuerst lesen wir eine ganzzahlige Eingabe vom Benutzer, dann berechnen wir die Summe jeder Ziffer, die auf die Potenz der Gesamtzahl der Ziffern erhoben wird, und schließlich geben wir aus, ob die Zahl eine Armstrong-Zahl ist oder nicht.
Das Programm führt den Benutzer Schritt für Schritt durch den Prozess, von der Eingabe bis zur Bestimmung, ob die Zahl eine Armstrong-Zahl ist.
Eine Ganzzahl einlesen
In diesem Schritt lernen wir, wie man eine ganzzahlige Eingabe vom Benutzer in einem C-Programm liest, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt.
Erstellen wir zunächst eine neue C-Datei im Projektverzeichnis:
cd ~/project
nano armstrong.c
Schreiben wir nun den Anfangscode zum Einlesen einer Ganzzahl:
#include <stdio.h>
int main() {
int number;
// Den Benutzer auffordern, eine Zahl einzugeben
printf("Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: ");
// Die ganzzahlige Eingabe lesen
scanf("%d", &number);
// Die eingegebene Zahl ausgeben, um die Eingabe zu verifizieren
printf("Sie haben eingegeben: %d\n", number);
return 0;
}
Kompilieren und ausführen des Programms:
gcc armstrong.c -o armstrong
./armstrong
Beispielausgabe:
Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: 153
Sie haben eingegeben: 153
Zerlegung des Codes:
scanf("%d", &number)liest eine Ganzzahl aus der Benutzereingabe&numberübergibt die Speicheradresse der Variablennumberprintf()wird verwendet, um den Benutzer aufzufordern und die eingegebene Zahl anzuzeigen
Summe jeder Ziffer potenziert mit der Ziffernanzahl berechnen
In diesem Schritt erweitern wir unser vorheriges Programm, um die Summe jeder Ziffer potenziert mit der Gesamtzahl der Ziffern zu berechnen.
Öffnen Sie die Datei armstrong.c:
cd ~/project
nano armstrong.c
Aktualisieren Sie den Code, um die Ziffersumme zu berechnen:
#include <stdio.h>
#include <math.h>
int main() {
int number, originalNumber, remainder, digitCount = 0;
long long digitSum = 0;
// Den Benutzer auffordern, eine Zahl einzugeben
printf("Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: ");
scanf("%d", &number);
// Die ursprüngliche Zahl für den späteren Vergleich speichern
originalNumber = number;
// Die Anzahl der Ziffern zählen
while (number != 0) {
number /= 10;
digitCount++;
}
// Zahl auf den ursprünglichen Wert zurücksetzen
number = originalNumber;
// Summe jeder Ziffer potenziert mit der Ziffernanzahl berechnen
while (number != 0) {
remainder = number % 10;
digitSum += pow(remainder, digitCount);
number /= 10;
}
// Die Ergebnisse ausgeben
printf("Anzahl der Ziffern: %d\n", digitCount);
printf("Summe der potenzierten Ziffern: %lld\n", digitSum);
return 0;
}
Kompilieren Sie das Programm mit der Mathematikbibliothek:
gcc armstrong.c -o armstrong -lm
./armstrong
Beispielausgabe:
Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: 153
Anzahl der Ziffern: 3
Summe der potenzierten Ziffern: 153
Erklärung der Schlüsselkonzepte:
digitCountzählt die Anzahl der Ziffernpow(remainder, digitCount)potenziert jede Ziffer mit der Gesamtzahl der Ziffernnumber % 10extrahiert die letzte Ziffernumber /= 10entfernt die letzte Ziffer in jeder Iterationlong longwird verwendet, um potenziell große Ziffersummen zu verarbeiten
Ausgabe, ob eine Zahl eine Armstrong-Zahl ist
In diesem Schritt vervollständigen wir unseren Armstrong-Zahl-Prüfer, indem wir die ursprüngliche Zahl mit der berechneten Ziffersumme vergleichen.
Öffnen Sie die Datei armstrong.c:
cd ~/project
nano armstrong.c
Aktualisieren Sie den Code, um zu bestimmen und auszugeben, ob die Zahl eine Armstrong-Zahl ist:
#include <stdio.h>
#include <math.h>
int main() {
int number, originalNumber, remainder, digitCount = 0;
long long digitSum = 0;
// Den Benutzer auffordern, eine Zahl einzugeben
printf("Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: ");
scanf("%d", &number);
// Die ursprüngliche Zahl für den späteren Vergleich speichern
originalNumber = number;
// Die Anzahl der Ziffern zählen
while (number != 0) {
number /= 10;
digitCount++;
}
// Zahl auf den ursprünglichen Wert zurücksetzen
number = originalNumber;
// Summe jeder Ziffer potenziert mit der Ziffernanzahl berechnen
while (number != 0) {
remainder = number % 10;
digitSum += pow(remainder, digitCount);
number /= 10;
}
// Überprüfen, ob die Zahl eine Armstrong-Zahl ist
if (digitSum == originalNumber) {
printf("%d ist eine Armstrong-Zahl.\n", originalNumber);
} else {
printf("%d ist keine Armstrong-Zahl.\n", originalNumber);
}
return 0;
}
Kompilieren Sie das Programm:
gcc armstrong.c -o armstrong -lm
./armstrong
Beispielausgaben:
Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: 153
153 ist eine Armstrong-Zahl.
Geben Sie eine Zahl ein, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt: 154
154 ist keine Armstrong-Zahl.
Erklärung der Schlüsselkonzepte:
- Vergleichen Sie
digitSummit deroriginalNumber. - Wenn sie gleich sind, handelt es sich um eine Armstrong-Zahl.
- Das Programm verarbeitet verschiedene Eingabefälle.
Zusammenfassung
In diesem Labor lernen Sie, wie Sie eine ganzzahlige Eingabe vom Benutzer lesen, die Summe jeder Ziffer potenziert mit der Gesamtzahl der Ziffern berechnen und feststellen, ob die Zahl eine Armstrong-Zahl ist. Der erste Schritt besteht darin, den Benutzer aufzufordern, eine Zahl einzugeben, und diese in einer Variablen zu speichern. Der zweite Schritt konzentriert sich auf die Berechnung der Summe jeder Ziffer, potenziert mit der Gesamtzahl der Ziffern. Diese Summe wird dann mit der ursprünglichen Zahl verglichen, um zu prüfen, ob es sich um eine Armstrong-Zahl handelt.



