MINT üben

Datentypen und printf

Miras Wetterstation meldet einen verdächtig glatten Mittelwert, und die Mensa-Kasse der Schülerfirma soll auf den Cent genau abrechnen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Die Tagesanzeige der Wetterstation

AFB I–II

Die Wetter-AG betreibt auf dem Schuldach eine kleine Wetterstation. Mira schreibt ein C-Programm, das auf dem Display im Foyer eine Tageszusammenfassung zeigt. Heute wurden vier Temperaturen gemessen: 19 °C, 22 °C, 24 °C und 18 °C. Zum Testen trägt Mira die Werte fest im Programm ein.

C · wetter.c
#include <stdio.h>

int main(void) {
    int summe = 83;          // vier Messwerte in °C: 19 + 22 + 24 + 18
    int anzahl = 4;
    double mittel = summe / anzahl;
    char einheit = 'C';
    int regen = 35;          // Regenwahrscheinlichkeit in Prozent

    printf("Messungen:%5d\n", anzahl);
    printf("Mittel:%8.2f %c\n", mittel, einheit);
    printf("Regen:\t%d%%\n", regen);
    return 0;
}

Beim ersten Test wundert sich Mira: Der Mittelwert sollte doch 20,75 °C sein.

  1. Ermitteln Sie die genaue Ausgabe des Programms. Kennzeichnen Sie jedes Leerzeichen mit dem Zeichen ␣ und den Tabulator mit →.
  2. Begründen Sie, warum beim Mittelwert nicht 20.75 erscheint, obwohl mittel als double deklariert ist.
  3. Nennen Sie zwei verschiedene Änderungen der Zeile double mittel = summe / anzahl;, nach denen 20.75 ausgegeben wird.

Hinweise

Hinweis zu Aufgabe a)
Gehen Sie die drei printf-Aufrufe einzeln durch. %5d reserviert 5 Zeichen, %8.2f reserviert 8 Zeichen inklusive Punkt und Nachkommastellen; der Wert steht rechtsbündig. Was macht %%?
Hinweis zu Aufgabe b)
Welchen Typ haben summe und anzahl? In welcher Reihenfolge passieren Rechnen und Speichern in mittel?
Hinweis zu Aufgabe c)
Es genügt, wenn einer der beiden Operanden ein Kommazahl-Typ ist. Vorsicht mit Klammern: Wann wird umgewandelt?