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.
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.
Navigieren Sie im Terminalfenster zum Projektverzeichnis:
cd ~/projectKlicken 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".
Benennen Sie die Datei
main.cund drücken Sie die Eingabetaste.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; }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 wieprintf()undscanf()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.
Verarbeitung der Benutzereingabe
Als nächstes müssen wir unser Programm so einrichten, dass es mit dem Benutzer interagiert. Wir müssen:
- Variablen deklarieren, um unsere Daten zu speichern
- Den Benutzer nach der Anzahl der Elemente fragen
- 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:
Variablendeklaration:
int n: Eine Ganzzahlvariable, um zu speichern, wie viele Zahlen der Benutzer eingeben möchtefloat big: Eine Fließkommazahlvariable, um die größte gefundene Zahl zu speichern
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 innzu speichern - Das
&vornist der "Adress-Of"-Operator, derscanf()mitteilt, wo der Eingabewert gespeichert werden soll
- Wir verwenden
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)
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:
- Durch die verbleibenden Zahlen (von der zweiten bis zur n-ten) zu iterieren
- Jede Zahl mit unserem aktuellen größten Wert zu vergleichen
- 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", ¤t);
// 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:
For-Schleife:
- Wir beginnen mit
i = 2, weil wir das erste Element bereits verarbeitet haben - Wir setzen fort, bis wir
nElemente verarbeitet haben - Bei jeder Iteration erhöhen wir
ium 1
- Wir beginnen mit
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()
- Wir deklarieren eine neue Variable
Finden des Maximums:
- Wir vergleichen die aktuelle Eingabe
currentmit unserem aktuellen größten Wertbig - Wenn
currentgrößer ist, aktualisieren wirbig, um diesen neuen größten Wert zu speichern - Wenn nicht, lassen wir
bigunverändert und gehen zur nächsten Eingabe über
- Wir vergleichen die aktuelle Eingabe
Anzeige des Ergebnisses:
- Nach der Verarbeitung aller Eingaben zeigen wir die gefundene größte Zahl an
- Der Format-Spezifizierer
%.2fzeigt die Fließkommazahl mit 2 Dezimalstellen an
Diese Implementierung folgt einem gängigen Muster zum Finden des maximalen Werts in einer Sequenz:
- Initialisieren Sie das Maximum mit dem ersten Wert
- Iterieren Sie durch die verbleibenden Werte
- Aktualisieren Sie das Maximum, wenn Sie einen größeren Wert finden
- 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.
Um das Programm zu kompilieren, führen Sie den folgenden Befehl im Terminal aus:
gcc ~/project/main.c -o ~/project/mainDieser Befehl ruft den GNU C Compiler (gcc) auf, um unsere Quelldatei
main.czu kompilieren und eine ausführbare Datei namensmainzu erstellen. Der-o-Schalter gibt den Namen der Ausgabedatei an.Wenn es keine Fehler in Ihrem Code gibt, wird der Befehl ohne Ausgabe ausgeführt. Dies bedeutet, dass Ihr Programm erfolgreich kompiliert wurde.
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
- Fehlende Semikolons (
Sobald Sie das Programm erfolgreich kompiliert haben, führen Sie es mit folgendem Befehl aus:
~/project/mainTesten 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.9Erwartete Ausgabe:
The largest of the 5 numbers is 25.80Versuchen 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.7Erwartete Ausgabe:
The largest of the 3 numbers is -2.30Testen 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.0Erwartete 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:
Problemverständnis: Wir haben erkannt, dass es erforderlich ist, eine Sammlung von Zahlen zu verarbeiten und festzustellen, welche die größte ist.
Programmstruktur: Wir haben ein gut strukturiertes C-Programm mit geeigneten Includes, Variablendeklarationen und einem logischen Ablauf erstellt.
Benutzereingabe-Verarbeitung: Wir haben Code implementiert, um Eingaben von Benutzern zu erhalten, einschließlich einer Validierung, um die Korrektheit der Daten sicherzustellen.
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
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", ¤t);
// 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.



