MINT üben

Arrays und Zeichenketten

Dreißig Übungen zu Arrays und Zeichenketten — vom Index über das Endezeichen bis zu den Grenzen im Speicher.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
sizeof gegen strlen
AFB II

Weise nach, dass sizeof um 1 größer ist als strlen: Ordne jeder Zeile der Herleitung die passende Begründung zu.

C · lena.c (Ausschnitt)
char wort[] = "Lena";
Ordne jeder Zeile der Herleitung die passende Begründung zu: Karte anklicken, dann das Feld neben der Zeile (oder Karte direkt auf das Feld ziehen). Mit der Tastatur: Tab zur Karte, Enter, dann Tab zum Feld und Enter. Ein Klick auf ein belegtes Feld legt die Karte zurück. Nicht alle Karten werden gebraucht.

Zu zeigen: sizeof(wort) ist um 1 größer als strlen(wort).

  1. wort besteht aus L, e, n, a und dem Endezeichen
  2. Das Array hat 4 + 1 = 5 Elemente
  3. sizeof(wort) = 5
  4. strlen(wort) = 4
  5. 5 − 4 = 1
Mit dem Endezeichen belegt „Lena“ fünf Byte, strlen zählt nur die vier Zeichen davor. Der Unterschied ist immer genau 1 – wenn das Array nicht größer angelegt wurde.
Ansatz: Gehe die Herleitung von oben nach unten durch: Was legt der Compiler im Speicher ab?
Weiter: Entscheidend ist, was sizeof misst (das ganze Array) und was strlen zählt (bis zum Endezeichen).
A2
Summe bis zur Grenze
AFB IIMix

Berechne die Werte der Variablen nach der Schleife und stelle die Zählwerke darauf ein.

C · grenze.c (Ausschnitt)
int t[5] = {4, 8, 15, 16, 23};
int summe = 0, i = 0;
while (summe < 30) {
    summe = summe + t[i];
    i++;
}
Drehe jede Ziffernrolle mit ▲/▼ oder ziehe sie mit Maus oder Finger nach oben bzw. unten. Mit der Tastatur: Tab zur Rolle, ↑/↓ dreht, ←/→ wechselt die Rolle, eine Zifferntaste setzt die Ziffer direkt. „Prüfen“ zeigt, ob der Stand stimmt.
summe wächst 4, 12, 27, 43. Nach t[3] = 16 ist 43 nicht mehr kleiner als 30 – die Schleife endet. i wurde viermal erhöht und steht auf 4.
Ansatz: Notiere nach jedem Durchlauf summe und i.
Weiter: Die Bedingung wird vor jedem Durchlauf geprüft: Bei 27 läuft die Schleife noch einmal, bei 43 nicht mehr.
A3
Rätsel rund um Arrays
AFB I

Löse das Kreuzworträtsel mit Begriffen aus dem Kapitel.

Klicke einen Hinweis oder ein Kästchen an und tippe das Wort — der Cursor springt von selbst weiter. ←→↑↓ wandern, Leertaste wechselt die Richtung, ⌫ löscht, Enter prüft. Umlaute als Ä, Ö, Ü eintippen.
Waagerecht
Senkrecht
STRCMP, STRLEN, ARRAY und INDEX – die Grundbegriffe rund um Arrays und Zeichenketten.
Ansatz: Beginne mit dem Wort, das du sicher weißt, und nutze die Kreuzungsbuchstaben.
Weiter: STRCMP und STRLEN beginnen im selben S; ARRAY kreuzt STRCMP im R, INDEX kreuzt STRLEN im E.