Die größte Zahl unter N Zahlen finden

CCBeginner
Jetzt üben

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

Einführung

In diesem Lab werden wir lernen, wie man ein C-Programm schreibt, das die größte Zahl aus einer Reihe von vom Benutzer eingegebenen Zahlen findet. Dies ist eine grundlegende Programmierübung, die mehrere wichtige Konzepte vermittelt:

  • Einlesen von Benutzereingaben
  • Arbeiten mit Schleifen
  • Durchführen von Vergleichen
  • Verfolgen des maximalen Werts über Iterationen hinweg

Der Algorithmus, den wir implementieren werden, ist einfach: Wir werden den Benutzer fragen, wie viele Zahlen er eingeben möchte, und dann durch jede eingegebene Zahl iterieren. Während wir jede Zahl verarbeiten, werden wir sie mit der bisher gefundenen größten Zahl vergleichen und die Variable "größte" bei Bedarf aktualisieren.

Am Ende dieses Labs haben Sie ein Programm erstellt, das beliebig viele Eingaben verarbeiten kann und zuverlässig den größten Wert daraus identifizieren kann.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123252{{"Die größte Zahl unter N Zahlen finden"}} c/if_else -.-> lab-123252{{"Die größte Zahl unter N Zahlen finden"}} c/for_loop -.-> lab-123252{{"Die größte Zahl unter N Zahlen finden"}} c/create_files -.-> lab-123252{{"Die größte Zahl unter N Zahlen finden"}} c/user_input -.-> lab-123252{{"Die größte Zahl unter N Zahlen finden"}} c/output -.-> lab-123252{{"Die größte Zahl unter N Zahlen finden"}} end

Erstellen unserer Programmdatei

Beginnen wir damit, eine neue C-Datei für unser Programm zu erstellen. Im WebIDE erstellen wir eine Datei namens main.c im Projektverzeichnis.

  1. Navigieren Sie im Terminalfenster zum Projektverzeichnis:

    cd ~/project
  2. Klicken Sie nun im WebIDE auf die Schaltfläche "Neue Datei" im linken Explorer-Bereich oder klicken Sie mit der rechten Maustaste im Explorer-Bereich und wählen Sie "Neue Datei".

  3. Benennen Sie die Datei main.c und drücken Sie die Eingabetaste.

  4. Fügen wir zunächst die Grundstruktur unseres C-Programms in die neu erstellte Datei ein:

    #include <stdio.h>
    
    int main() {
        // Wir werden unseren Code hier hinzufügen
    
        return 0;
    }
  5. Speichern Sie die Datei, indem Sie Strg+S drücken oder über das Menü Datei > Speichern auswählen.

Diese Struktur umfasst:

  • Die #include <stdio.h>-Direktive, die die Standard-Eingabe/Ausgabe-Bibliothek einbindet, die wir für Funktionen wie printf() und scanf() benötigen
  • Die main()-Funktion, die der Einstiegspunkt jedes C-Programms ist
  • Eine return 0;-Anweisung, die anzeigt, dass unser Programm erfolgreich ausgeführt wurde

Die Header-Datei stdio.h stellt Funktionen für Ein- und Ausgabeoperationen zur Verfügung. Die main()-Funktion ist der Startpunkt der Programmausführung, und return 0; signalisiert dem Betriebssystem, dass unser Programm ohne Fehler beendet wurde.

Umgang mit Benutzereingaben

Als nächstes müssen wir unser Programm so einrichten, dass es mit dem Benutzer interagiert. Wir müssen:

  1. Variablen deklarieren, um unsere Daten zu speichern
  2. Den Benutzer nach der Anzahl der Elemente fragen
  3. Den Prozess zum Empfang der ersten Zahl einrichten

Lassen Sie uns unseren Code in main.c aktualisieren:

#include <stdio.h>

int main() {
    // Declare variables
    int n;          // To store the number of elements
    float big;      // To store the largest number found

    // Prompt the user for the number of elements
    printf("Enter the number of elements you wish to find the greatest element of: ");
    scanf("%d", &n);

    // Check if the input is valid
    if (n <= 0) {
        printf("Please enter a positive number of elements.\n");
        return 1;  // Exit with error code
    }

    // Prompt for the first number and initialize 'big' with it
    printf("Enter %d numbers:\n", n);
    printf("Enter element 1: ");
    scanf("%f", &big);

    return 0;
}

Lassen Sie uns verstehen, was wir hinzugefügt haben:

  1. Variablendeklaration:

    • int n: Eine Ganzzahlvariable, um zu speichern, wie viele Zahlen der Benutzer eingeben möchte
    • float big: Eine Fließkommazahlvariable, um die größte gefundene Zahl zu speichern
  2. Benutzereingabe für die Anzahl:

    • Wir verwenden printf(), um eine Aufforderung anzuzeigen, die nach der Anzahl der Elemente fragt
    • Wir verwenden scanf("%d", &n), um eine Ganzzahl vom Benutzer einzulesen und sie in n zu speichern
    • Das & vor n ist der "Adress-Of"-Operator, der scanf() mitteilt, wo der Eingabewert gespeichert werden soll
  3. Eingabevalidierung:

    • Wir prüfen, ob der Benutzer eine positive Zahl eingegeben hat
    • Wenn nicht, geben wir eine Fehlermeldung aus und beenden das Programm mit dem Rückgabecode 1 (was einen Fehler anzeigt)
  4. Erste Zahleneingabe:

    • Wir fordern den Benutzer auf, die erste Zahl einzugeben
    • Wir speichern diese erste Zahl in big, da es an diesem Punkt die einzige (und daher größte) Zahl ist, die wir haben

Wenn Sie diesen Code ausführen, wird er nach der Anzahl der Elemente und dann nach dem ersten Element fragen, aber er wird noch nichts mit diesen Informationen tun. Im nächsten Schritt werden wir die Logik hinzufügen, um alle Zahlen zu verarbeiten und die größte zu finden.

Finden der größten Zahl

Jetzt implementieren wir die Kernlogik unseres Programms – das Finden der größten Zahl unter den Eingaben. Wir verwenden eine for-Schleife, um:

  1. Durch die verbleibenden Zahlen (von der zweiten bis zur n-ten) zu iterieren
  2. Jede Zahl mit unserem aktuellen größten Wert zu vergleichen
  3. Den größten Wert zu aktualisieren, wenn wir eine größere Zahl finden

Aktualisieren Sie Ihre main.c-Datei mit dem folgenden Code:

#include <stdio.h>

int main() {
    // Declare variables
    int n;          // To store the number of elements
    float big;      // To store the largest number found

    // Prompt the user for the number of elements
    printf("Enter the number of elements you wish to find the greatest element of: ");
    scanf("%d", &n);

    // Check if the input is valid
    if (n <= 0) {
        printf("Please enter a positive number of elements.\n");
        return 1;  // Exit with error code
    }

    // Prompt for the first number and initialize 'big' with it
    printf("Enter %d numbers:\n", n);
    printf("Enter element 1: ");
    scanf("%f", &big);

    // Process remaining numbers using a loop
    for (int i = 2; i <= n; i++) {
        float current;  // Variable to store the current number

        // Prompt for the current number
        printf("Enter element %d: ", i);
        scanf("%f", &current);

        // Compare with the current largest
        if (current > big) {
            big = current;  // Update 'big' if current number is larger
        }
    }

    // Display the result
    printf("The largest of the %d numbers is %.2f\n", n, big);

    return 0;
}

Lassen Sie uns den neuen Code verstehen, den wir hinzugefügt haben:

  1. For-Schleife:

    • Wir beginnen mit i = 2, weil wir das erste Element bereits verarbeitet haben
    • Wir setzen fort, bis wir n Elemente verarbeitet haben
    • Bei jeder Iteration erhöhen wir i um 1
  2. Verarbeitung jeder Zahl:

    • Wir deklarieren eine neue Variable current, um jede Eingabezahl zu speichern
    • Wir fordern den Benutzer auf, das aktuelle Element einzugeben
    • Wir lesen die Eingabe mit scanf()
  3. Finden des Maximums:

    • Wir vergleichen die aktuelle Eingabe current mit unserem aktuellen größten Wert big
    • Wenn current größer ist, aktualisieren wir big, um diesen neuen größten Wert zu speichern
    • Wenn nicht, lassen wir big unverändert und gehen zur nächsten Eingabe über
  4. Anzeige des Ergebnisses:

    • Nach der Verarbeitung aller Eingaben zeigen wir die gefundene größte Zahl an
    • Der Format-Spezifizierer %.2f zeigt die Fließkommazahl mit 2 Dezimalstellen an

Diese Implementierung folgt einem gängigen Muster zum Finden des maximalen Werts in einer Sequenz:

  1. Initialisieren Sie das Maximum mit dem ersten Wert
  2. Iterieren Sie durch die verbleibenden Werte
  3. Aktualisieren Sie das Maximum, wenn Sie einen größeren Wert finden
  4. Am Ende enthält die Variable den größten Wert aus der Sequenz

Kompilieren und Testen des Programms

Jetzt, da wir unser vollständiges C-Programm geschrieben haben, müssen wir es kompilieren und ausführen, um zu sehen, ob es korrekt funktioniert.

  1. Um das Programm zu kompilieren, führen Sie den folgenden Befehl im Terminal aus:

    gcc ~/project/main.c -o ~/project/main

    Dieser Befehl ruft den GNU C Compiler (gcc) auf, um unsere Quelldatei main.c zu kompilieren und eine ausführbare Datei namens main zu erstellen. Der -o-Schalter gibt den Namen der Ausgabedatei an.

  2. Wenn es keine Fehler in Ihrem Code gibt, wird der Befehl ohne Ausgabe ausgeführt. Dies bedeutet, dass Ihr Programm erfolgreich kompiliert wurde.

  3. Wenn Sie Fehlermeldungen sehen, lesen Sie sie sorgfältig, um zu verstehen, was schief gelaufen ist. Häufige Fehler sind:

    • Fehlende Semikolons (;)
    • Nicht übereinstimmende geschweifte Klammern ({ und })
    • Falsche Variablennamen oder -typen
    • Fehlende oder falsche Include-Anweisungen
  4. Sobald Sie das Programm erfolgreich kompiliert haben, führen Sie es mit folgendem Befehl aus:

    ~/project/main
  5. Testen Sie Ihr Programm mit verschiedenen Eingaben. Hier ist ein Beispiel-Testfall:

    Eingabe:

    Enter the number of elements you wish to find the greatest element of: 5
    Enter 5 numbers:
    Enter element 1: 12.5
    Enter element 2: 9.7
    Enter element 3: 25.8
    Enter element 4: 15.2
    Enter element 5: 4.9

    Erwartete Ausgabe:

    The largest of the 5 numbers is 25.80
  6. Versuchen Sie einen anderen Testfall mit negativen Zahlen:

    Eingabe:

    Enter the number of elements you wish to find the greatest element of: 3
    Enter 3 numbers:
    Enter element 1: -10.5
    Enter element 2: -2.3
    Enter element 3: -15.7

    Erwartete Ausgabe:

    The largest of the 3 numbers is -2.30
  7. Testen Sie auch mit einer einzelnen Zahl:

    Eingabe:

    Enter the number of elements you wish to find the greatest element of: 1
    Enter 1 numbers:
    Enter element 1: 42.0

    Erwartete Ausgabe:

    The largest of the 1 numbers is 42.00

Wenn Ihr Programm für diese Testfälle die erwarteten Ausgaben liefert, herzlichen Glückwunsch! Sie haben erfolgreich ein Programm implementiert, um die größte Zahl unter N Eingabezahlen zu finden.

Dieser Prozess des Kompilierens und Testens ist ein wesentlicher Teil der Softwareentwicklung. Er ermöglicht es Ihnen, zu überprüfen, ob Ihr Code wie erwartet funktioniert, und hilft Ihnen, Fehler oder Probleme zu identifizieren und zu beheben.

Zusammenfassung

In diesem Lab haben wir erfolgreich ein C-Programm implementiert, das die größte Zahl aus einer Menge von vom Benutzer angegebenen Zahlen findet. Lassen Sie uns zusammenfassen, was wir erreicht haben:

  1. Problemverständnis: Wir haben erkannt, dass es erforderlich ist, eine Sammlung von Zahlen zu verarbeiten und festzustellen, welche die größte ist.

  2. Programmstruktur: Wir haben ein gut strukturiertes C-Programm mit geeigneten Includes, Variablendeklarationen und einem logischen Ablauf erstellt.

  3. Benutzereingabe-Verarbeitung: Wir haben Code implementiert, um Eingaben von Benutzern zu erhalten, einschließlich einer Validierung, um die Korrektheit der Daten sicherzustellen.

  4. Algorithmus-Implementierung: Wir haben einen einfachen, aber effektiven Algorithmus verwendet, um den maximalen Wert zu finden:

    • Initialisierung mit dem ersten Wert
    • Vergleich jedes nachfolgenden Werts mit dem aktuellen Maximum
    • Aktualisierung des Maximums, wenn ein größerer Wert gefunden wird
  5. Testen und Ausführen: Wir haben unser Programm kompiliert und es mit verschiedenen Eingaben getestet, um zu überprüfen, ob es korrekt funktioniert.

Dieses Lab demonstriert grundlegende Programmierkonzepte, die in vielen Kontexten von Wert sind:

  • Sequenzielle Ausführung
  • Bedingte Anweisungen
  • Schleifenkonstrukte
  • Variablenverfolgung
  • Ein- und Ausgabeoperationen

Der vollständige Code

Hier ist der vollständige Code, den wir in diesem Lab entwickelt haben:

#include <stdio.h>

int main() {
    // Declare variables
    int n;          // To store the number of elements
    float big;      // To store the largest number found

    // Prompt the user for the number of elements
    printf("Enter the number of elements you wish to find the greatest element of: ");
    scanf("%d", &n);

    // Check if the input is valid
    if (n <= 0) {
        printf("Please enter a positive number of elements.\n");
        return 1;  // Exit with error code
    }

    // Prompt for the first number and initialize 'big' with it
    printf("Enter %d numbers:\n", n);
    printf("Enter element 1: ");
    scanf("%f", &big);

    // Process remaining numbers using a loop
    for (int i = 2; i <= n; i++) {
        float current;  // Variable to store the current number

        // Prompt for the current number
        printf("Enter element %d: ", i);
        scanf("%f", &current);

        // Compare with the current largest
        if (current > big) {
            big = current;  // Update 'big' if current number is larger
        }
    }

    // Display the result
    printf("The largest of the %d numbers is %.2f\n", n, big);

    return 0;
}

Sie können dieses Programm auf verschiedene Weise erweitern:

  • Sowohl die größte als auch die kleinste Zahl finden
  • Das Durchschnittsmaß aller Zahlen berechnen
  • Die Zahlen in aufsteigender oder absteigender Reihenfolge sortieren
  • Komplexere Datenstrukturen wie Arrays verarbeiten

Wir hoffen, dass dieses Lab Ihnen geholfen hat, die Grundlagen der C-Programmierung und des algorithmischen Denkens zu verstehen. Diese Konzepte bilden die Grundlage für fortgeschrittenere Programmier-Themen und Problemlösungs-Techniken.