Prüfen, ob eine Zahl eine Armstrong-Zahl in C ist

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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 Variablen number
  • printf() 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:

  • digitCount zählt die Anzahl der Ziffern
  • pow(remainder, digitCount) potenziert jede Ziffer mit der Gesamtzahl der Ziffern
  • number % 10 extrahiert die letzte Ziffer
  • number /= 10 entfernt die letzte Ziffer in jeder Iteration
  • long long wird 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 digitSum mit der originalNumber.
  • 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.