🏠 Zurück zur Startseite

💻 Labor 4

Schleifen und formatierte Ausgabe
Grundlagen der Programmierung in C • HTW Berlin • WiSe 2025/26

📋 Lernziele

In diesem Labor werden Sie:

1 Summenberechnung

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das die Summe aller Zahlen von 1 bis n berechnet.

Der Benutzer soll n eingeben können.

📝 Beispielausgabe

Geben Sie eine Zahl ein: 5 Die Summe von 1 bis 5 ist: 15

💡 Hinweise

🔒 Musterlösung
Falsches Passwort!

Dateiname: summe.c

/*
 * summe.c
 * Berechnet die Summe von 1 bis n mit einer for-Schleife
 */

#include <stdio.h>

int main()
{
    int n, summe = 0;

    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", &n);

    // Summe mit for-Schleife berechnen
    for (int i = 1; i <= n; i++)
    {
        summe = summe + i;
    }

    printf("Die Summe von 1 bis %d ist: %d\n", n, summe);

    return 0;
}

✅ Testfälle

  • Eingabe: 5 → Ausgabe: 15 (1+2+3+4+5)
  • Eingabe: 10 → Ausgabe: 55
  • Eingabe: 100 → Ausgabe: 5050

2 Fakultät berechnen

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das die Fakultät einer Zahl berechnet.

Formel: n! = 1 × 2 × 3 × ... × n

Beispiel: 5! = 1 × 2 × 3 × 4 × 5 = 120

📝 Beispielausgabe

Geben Sie eine Zahl ein: 5 5! = 120

💡 Hinweise

🔒 Musterlösung
Falsches Passwort!

Dateiname: fakultaet.c

/*
 * fakultaet.c
 * Berechnet die Fakultät einer Zahl
 */

#include <stdio.h>

int main()
{
    int n;
    long long fakultaet = 1;  // long long für große Ergebnisse

    printf("Geben Sie eine Zahl ein: ");
    scanf("%d", &n);

    // Fakultät berechnen
    for (int i = 1; i <= n; i++)
    {
        fakultaet = fakultaet * i;
    }

    printf("%d! = %lld\n", n, fakultaet);

    return 0;
}

✅ Testfälle

  • Eingabe: 5 → Ausgabe: 120
  • Eingabe: 10 → Ausgabe: 3628800
  • Eingabe: 0 → Ausgabe: 1 (0! = 1 per Definition)

3 Einmaleins-Reihe ausgeben

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das eine Einmaleins-Reihe ausgibt.

Der Benutzer gibt eine Zahl ein (z.B. 7).

Das Programm gibt dann die 7er-Reihe aus: 7×1, 7×2, ... bis 7×10.

📝 Beispielausgabe

Welche Einmaleins-Reihe möchten Sie sehen? 7 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 7 x 10 = 70

💡 Hinweise

🌟 Bonusaufgabe (10 Zusatzpunkte)

Für Fortgeschrittene: Geben Sie die komplette Einmaleins-Tabelle (1-10 × 1-10) als formatierte Tabelle aus!

Nutzen Sie verschachtelte Schleifen und %4d für die Formatierung.

🔒 Musterlösung
Falsches Passwort!

Dateiname: einmaleins.c

Grundaufgabe: Einzelne Reihe (15 Punkte)

/*
 * einmaleins.c
 * Gibt eine Einmaleins-Reihe aus
 */

#include <stdio.h>

int main()
{
    int zahl;

    printf("Welche Einmaleins-Reihe möchten Sie sehen? ");
    scanf("%d", &zahl);

    printf("\n");

    // Schleife von 1 bis 10
    for (int i = 1; i <= 10; i++)
    {
        printf("%d x %d = %d\n", zahl, i, zahl * i);
    }

    return 0;
}

🌟 Bonusaufgabe: Komplette Tabelle (10 Zusatzpunkte)

/*
 * einmaleins_tabelle.c
 * Gibt die komplette Einmaleins-Tabelle aus
 */

#include <stdio.h>

int main()
{
    printf("Einmaleins-Tabelle:\n\n");

    // Äußere Schleife: Zeilen (1 bis 10)
    for (int zeile = 1; zeile <= 10; zeile++)
    {
        // Innere Schleife: Spalten (1 bis 10)
        for (int spalte = 1; spalte <= 10; spalte++)
        {
            // %4d = rechtsbündig, 4 Zeichen breit
            printf("%4d", zeile * spalte);
        }
        printf("\n");  // Neue Zeile nach jeder Zeile
    }

    return 0;
}

✅ Testfälle

  • Grundaufgabe: Eingabe 7 → Ausgabe: 7×1=7, 7×2=14, ..., 7×10=70
  • Bonus: Eine perfekt ausgerichtete 10×10 Tabelle mit allen Produkten

4 Zahlenraten-Spiel

🎯 Aufgabenstellung

Erstellen Sie ein einfaches Zahlenraten-Spiel:

  • Das Programm "denkt" sich eine Zahl zwischen 1 und 100 aus (hier: 42)
  • Der Benutzer rät, bis er die richtige Zahl gefunden hat
  • Das Programm gibt Hinweise: "Zu klein!" oder "Zu groß!"
  • Am Ende wird die Anzahl der Versuche ausgegeben

📝 Beispielausgabe

Rate eine Zahl zwischen 1 und 100! Ihr Tipp: 50 Zu groß! Ihr Tipp: 25 Zu klein! Ihr Tipp: 42 Richtig! Sie haben 3 Versuche gebraucht.

💡 Hinweise

🌟 Bonusaufgabe (5 Zusatzpunkte)

Für Fortgeschrittene: Generieren Sie eine zufällige Zahl mit rand()!

Tipp: #include <stdlib.h> und #include <time.h>

🔒 Musterlösung
Falsches Passwort!

Dateiname: zahlenraten.c

Grundaufgabe: Feste Zahl (20 Punkte)

/*
 * zahlenraten.c
 * Einfaches Zahlenraten-Spiel mit do-while-Schleife
 */

#include <stdio.h>

int main()
{
    int geheimzahl = 42;  // Die gesuchte Zahl
    int tipp;
    int versuche = 0;

    printf("Rate eine Zahl zwischen 1 und 100!\n");

    // Schleife läuft, bis die richtige Zahl geraten wurde
    do
    {
        printf("Ihr Tipp: ");
        scanf("%d", &tipp);
        versuche++;

        if (tipp < geheimzahl)
        {
            printf("Zu klein!\n");
        }
        else if (tipp > geheimzahl)
        {
            printf("Zu groß!\n");
        }
        else
        {
            printf("Richtig! Sie haben %d Versuche gebraucht.\n", versuche);
        }

    } while (tipp != geheimzahl);

    return 0;
}

🌟 Bonusaufgabe: Zufallszahl (5 Zusatzpunkte)

/*
 * zahlenraten_random.c
 * Zahlenraten mit Zufallszahl
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    // Zufallsgenerator initialisieren
    srand(time(NULL));

    // Zufallszahl zwischen 1 und 100 generieren
    int geheimzahl = rand() % 100 + 1;
    int tipp;
    int versuche = 0;

    printf("Rate eine Zahl zwischen 1 und 100!\n");

    do
    {
        printf("Ihr Tipp: ");
        scanf("%d", &tipp);
        versuche++;

        if (tipp < geheimzahl)
        {
            printf("Zu klein!\n");
        }
        else if (tipp > geheimzahl)
        {
            printf("Zu groß!\n");
        }
        else
        {
            printf("Richtig! Sie haben %d Versuche gebraucht.\n", versuche);
        }

    } while (tipp != geheimzahl);

    return 0;
}

✅ Testfälle

  • Grundaufgabe: Die Zahl ist immer 42
  • Bonus: Bei jedem Programmstart eine neue Zufallszahl

5 Eingabevalidierung

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das eine Zahl zwischen 1 und 10 einliest.

Wenn der Benutzer eine ungültige Zahl eingibt, soll das Programm erneut fragen.

📝 Beispielausgabe

Geben Sie eine Zahl zwischen 1 und 10 ein: 15 Ungültige Eingabe! Bitte erneut versuchen. Geben Sie eine Zahl zwischen 1 und 10 ein: 0 Ungültige Eingabe! Bitte erneut versuchen. Geben Sie eine Zahl zwischen 1 und 10 ein: 7 Danke! Sie haben 7 eingegeben.

💡 Hinweise

🔒 Musterlösung
Falsches Passwort!

Dateiname: validierung.c

/*
 * validierung.c
 * Eingabevalidierung mit do-while-Schleife
 */

#include <stdio.h>

int main()
{
    int zahl;

    // Schleife läuft, bis eine gültige Zahl eingegeben wurde
    do
    {
        printf("Geben Sie eine Zahl zwischen 1 und 10 ein: ");
        scanf("%d", &zahl);

        if (zahl < 1 || zahl > 10)
        {
            printf("Ungültige Eingabe! Bitte erneut versuchen.\n");
        }

    } while (zahl < 1 || zahl > 10);

    printf("Danke! Sie haben %d eingegeben.\n", zahl);

    return 0;
}

✅ Testfälle

  • Eingabe: 15 → "Ungültige Eingabe!" → erneute Eingabe
  • Eingabe: 0 → "Ungültige Eingabe!" → erneute Eingabe
  • Eingabe: 7 → "Danke! Sie haben 7 eingegeben."

6 Formatierte Preistabelle

🎯 Aufgabenstellung

Erstellen Sie eine Preistabelle für ein Produkt (Grundpreis: 19.99€) mit verschiedenen Mengen.

Die Tabelle soll folgendes Format haben:

  • Menge 1-10
  • Einzelpreis rechtsbündig
  • Gesamtpreis rechtsbündig mit 2 Nachkommastellen

📝 Erwartete Ausgabe

Menge | Einzelpreis | Gesamtpreis ------|-------------|------------- 1 | 19.99 | 19.99 2 | 19.99 | 39.98 3 | 19.99 | 59.97 ...

💡 Hinweise

🔒 Musterlösung
Falsches Passwort!

Dateiname: preistabelle.c

/*
 * preistabelle.c
 * Formatierte Preistabelle mit printf-Formatierung
 */

#include <stdio.h>

int main()
{
    double einzelpreis = 19.99;

    // Tabellenüberschrift
    printf("Menge | Einzelpreis | Gesamtpreis\n");
    printf("------|-------------|-------------\n");

    // Tabellenzeilen mit for-Schleife
    for (int menge = 1; menge <= 10; menge++)
    {
        double gesamtpreis = einzelpreis * menge;

        // %5d: rechtsbündig, 5 Zeichen (Menge)
        // %12.2f: rechtsbündig, 12 Zeichen, 2 Nachkommastellen (Preise)
        printf("%5d | %12.2f | %12.2f\n", menge, einzelpreis, gesamtpreis);
    }

    return 0;
}

✅ Erwartetes Ergebnis

Eine perfekt formatierte Tabelle mit 10 Zeilen, alle Werte schön ausgerichtet!

💡 Formatierungs-Codes

  • %5d = Integer, rechtsbündig, 5 Zeichen breit
  • %12.2f = Fließkommazahl, rechtsbündig, 12 Zeichen breit, 2 Nachkommastellen

🎉 Labor 4 abgeschlossen!

✅ Grundaufgaben: 120 Punkte

🌟 Bonusaufgaben: 15 Zusatzpunkte

📊 Maximal erreichbar: 135 Punkte

🚀 Nächste Schritte

Gut gemacht! Sie beherrschen jetzt Schleifen in C!
Weiter üben und experimentieren!