Bestimmung von perfekten Quadratzahlen in C

CBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie mit der Programmiersprache C feststellen können, ob eine Zahl eine perfekte Quadratzahl ist. Eine perfekte Quadratzahl ist eine Zahl, die als Produkt einer ganzen Zahl mit sich selbst ausgedrückt werden kann. Beispielsweise ist 16 eine perfekte Quadratzahl, weil sie gleich 4 × 4 ist, und 25 ist eine perfekte Quadratzahl, weil sie gleich 5 × 5 ist.

Am Ende dieses Labs verstehen Sie das Konzept der perfekten Quadratzahlen und können ein C-Programm schreiben, das prüft, ob eine vom Benutzer eingegebene Zahl eine perfekte Quadratzahl ist oder nicht.

Grundlagen zu perfekten Quadratzahlen

Bevor wir mit dem Codieren beginnen, verstehen wir zunächst, was eine perfekte Quadratzahl ist und wie wir feststellen können, ob eine Zahl eine perfekte Quadratzahl ist.

Eine perfekte Quadratzahl ist eine Zahl, die das Quadrat einer ganzen Zahl ist. Mit anderen Worten, es ist eine Zahl, die als n² geschrieben werden kann, wobei n eine ganze Zahl ist.

Beispiele für perfekte Quadratzahlen:

  • 1 = 1² (1 × 1)
  • 4 = 2² (2 × 2)
  • 9 = 3² (3 × 3)
  • 16 = 4² (4 × 4)
  • 25 = 5² (5 × 5)

Um zu bestimmen, ob eine Zahl eine perfekte Quadratzahl ist, können wir prüfen, ob es eine ganze Zahl gibt, deren Quadrat gleich der gegebenen Zahl ist.

Erstellen wir ein Verzeichnis für unser Projekt und navigieren wir dorthin:

mkdir -p ~/project/perfect-square
cd ~/project/perfect-square

Ein Verzeichnis erstellen

Jetzt erstellen wir eine neue C-Datei für unser Programm:

  1. Navigieren Sie im WebIDE zum Dateiexplorer auf der linken Seite.
  2. Klicken Sie mit der rechten Maustaste auf den Ordner perfect-square und wählen Sie "Neue Datei".
  3. Benennen Sie die Datei perfect_square.c und drücken Sie die Eingabetaste.

Erstellen der grundlegenden Programmstruktur

Jetzt erstellen wir die grundlegende Struktur unseres C-Programms. Wir müssen die erforderlichen Header-Dateien einbinden und die Hauptfunktion einrichten.

Öffnen Sie die Datei perfect_square.c im WebIDE, indem Sie darauf im Dateiexplorer klicken. Fügen Sie dann folgenden Code hinzu:

#include <stdio.h>

int main() {
    int number;

    // Aufforderung an den Benutzer zur Eingabe
    printf("Enter a number to check if it's a perfect square: ");
    scanf("%d", &number);

    // Wir werden im nächsten Schritt Code hinzufügen, um auf eine perfekte Quadratzahl zu prüfen

    return 0;
}

Lassen Sie uns den Code verstehen:

  1. #include <stdio.h> - Dies bindet die Standard-Eingabe-Ausgabe-Bibliothek ein, die Funktionen wie printf und scanf bereitstellt.
  2. int main() - Dies ist die Hauptfunktion, in der die Programmausführung beginnt.
  3. int number; - Wir deklarieren eine Ganzzahlvariable, um die Benutzereingabe zu speichern.
  4. printf("Enter a number..."); - Dies zeigt dem Benutzer eine Eingabeaufforderung an.
  5. scanf("%d", &number); - Dies liest eine Ganzzahl-Eingabe vom Benutzer und speichert sie in der Variable number. Der &-Operator wird verwendet, um die Speicheradresse der Variable zu erhalten, in der die Eingabe gespeichert wird.

Speichern Sie die Datei, indem Sie Strg+S drücken oder auf Datei > Speichern klicken.

Implementierung des Algorithmus zur Überprüfung auf perfekte Quadratzahlen

Jetzt implementieren wir die Logik, um zu prüfen, ob die vom Benutzer eingegebene Zahl eine perfekte Quadratzahl ist. Es gibt mehrere Möglichkeiten, um zu prüfen, ob eine Zahl eine perfekte Quadratzahl ist. Wir verwenden einen einfachen Ansatz, bei dem wir prüfen, ob die Quadratzahl einer ganzen Zahl von 1 bis zur gegebenen Zahl gleich der gegebenen Zahl ist.

Aktualisieren Sie Ihre Datei perfect_square.c mit folgendem Code:

#include <stdio.h>

int main() {
    int number;
    int isPerfectSquare = 0;  // Flag, um anzuzeigen, ob die Zahl eine perfekte Quadratzahl ist

    // Aufforderung an den Benutzer zur Eingabe
    printf("Enter a number to check if it's a perfect square: ");
    scanf("%d", &number);

    // Prüfen, ob die Zahl negativ ist
    if (number < 0) {
        printf("%d is negative, and negative numbers cannot be perfect squares.\n", number);
        return 0;
    }

    // Prüfen, ob die Zahl eine perfekte Quadratzahl ist
    for (int i = 0; i <= number; i++) {
        if (i * i == number) {
            isPerfectSquare = 1;
            printf("%d is a perfect square. It is %d squared.\n", number, i);
            break;  // Die Schleife verlassen, sobald wir die Antwort gefunden haben
        }

        // Optimierung: Wenn i*i die Zahl überschreitet, müssen wir nicht weiter prüfen
        if (i * i > number) {
            break;
        }
    }

    // Wenn es keine perfekte Quadratzahl ist, den Benutzer informieren
    if (isPerfectSquare == 0) {
        printf("%d is not a perfect square.\n", number);
    }

    return 0;
}

Lassen Sie uns den neuen Code verstehen:

  1. Wir haben ein isPerfectSquare-Flag hinzugefügt, um zu verfolgen, ob wir festgestellt haben, dass die Zahl eine perfekte Quadratzahl ist.
  2. Wir prüfen, ob die Zahl negativ ist, da negative Zahlen keine perfekten Quadratzahlen sein können.
  3. Wir verwenden eine for-Schleife, um von 0 bis zur Zahl zu iterieren.
  4. Innerhalb der Schleife prüfen wir, ob i * i gleich der Zahl ist. Wenn dies der Fall ist, setzen wir unser Flag, geben eine Nachricht aus und verlassen die Schleife.
  5. Wir haben eine Optimierung hinzugefügt: Wenn i * i die Zahl überschreitet, können wir die Prüfung beenden, da alle folgenden Werte ebenfalls die Zahl überschreiten werden.
  6. Schließlich informieren wir den Benutzer, wenn das Flag immer noch 0 ist, dass die Zahl keine perfekte Quadratzahl ist.

Speichern Sie die Datei (Strg+S oder Datei > Speichern).

Kompilieren und Testen des Programms

Nachdem wir den Code zur Prüfung auf perfekte Quadratzahlen fertiggestellt haben, können wir ihn kompilieren und testen. Wir verwenden den GCC-Compiler, um unser C-Programm zu kompilieren.

Navigieren Sie in das Verzeichnis, das unseren Code enthält (falls Sie nicht bereits dort sind):

cd ~/project/perfect-square

Kompilieren Sie das Programm:

gcc perfect_square.c -o perfect_square

Dieser Befehl kompiliert perfect_square.c und erstellt eine ausführbare Datei namens perfect_square. Wenn die Kompilierung erfolgreich ist, sehen Sie keine Ausgabe.

Jetzt führen wir das Programm aus:

./perfect_square

Programm ausführen

Das Programm fordert Sie auf, eine Zahl einzugeben. Testen wir es mit verschiedenen Eingaben:

  1. Geben Sie eine perfekte Quadratzahl ein, wie z. B. 16. Die Ausgabe sollte lauten: 16 is a perfect square. It is 4 squared.

  2. Geben Sie eine Zahl ein, die keine perfekte Quadratzahl ist, wie z. B. 10. Die Ausgabe sollte lauten: 10 is not a perfect square.

  3. Geben Sie eine negative Zahl ein, wie z. B. -4. Die Ausgabe sollte lauten: -4 is negative, and negative numbers cannot be perfect squares.

Sie können das Programm mehrmals ausführen, um es mit verschiedenen Eingaben zu testen.

Versuchen wir auch einen Randfall, die Zahl 0:

./perfect_square

Geben Sie 0 ein, wenn Sie dazu aufgefordert werden. Die Ausgabe sollte lauten: 0 is a perfect square. It is 0 squared.

Herzlichen Glückwunsch! Sie haben erfolgreich ein C-Programm erstellt, das prüft, ob eine Zahl eine perfekte Quadratzahl ist.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie ein C-Programm erstellen, das feststellt, ob eine Zahl eine perfekte Quadratzahl ist. Hier sind die behandelten Schlüsselkonzepte:

  1. Perfekte Quadratzahlen sind Zahlen, die als Quadrat einer ganzen Zahl ausgedrückt werden können.
  2. Grundlegende Konzepte der C-Programmierung, einschließlich Variablen, bedingten Anweisungen und Schleifen.
  3. Einlesen von Benutzereingaben mit scanf und Anzeigen von Ausgaben mit printf.
  4. Verwenden einer Schleife, um zu prüfen, ob eine Zahl eine perfekte Quadratzahl ist, indem jede mögliche Zahl getestet wird.
  5. Optimieren der Lösung, indem die Schleife bei Bedarf verlassen wird.
  6. Behandeln von Randfällen wie negativen Zahlen und Null.

Dieses Lab hat gezeigt, wie mathematische Konzepte in der Programmierung implementiert werden können. Sie können dieses Programm erweitern, indem Sie weitere Funktionen hinzufügen, wie z. B. das Finden der nächsten perfekten Quadratzahl nach einer gegebenen Zahl oder das Prüfen, ob eine Zahl ein Kubik (n³) statt ein Quadrat ist.