Hallo Lu :)
In C sind Stings als Arrays vom Typ char realisiert. Als Kennzeichen für das Stringende werden diese char-Arrays mit dem Nullbyte NUL ('\0') abgeschlossen. Fast alle C-Bibliotheksfunktionen erwarten dieses NUL als Stringende-Kennzeichen. Fehlt es, kann es zu Speicherzugriffsfehlern kommen, weil die Bibliotheksfunktionen so lange im Speicher lesen, bis sie das erste NUL finden.
Eine Besonderheit sind konstante Strings, die in Anführungszeichen stehen, etwa "Die", "können" und "Übungen" aus der Aufgabe. Diese werden vom Compiler in einen separaten Speicherbereich am Ende des Programms als char-Arrays abgelegt, wobei der Compiler das NUL-Byte automatisch ergänzt. Immer wenn im Programm dann ein konstanter String auftaucht, trägt der Compiler einen const-Zeiger auf diesen Speicherbereich im Programm ein.
Bei der Aufgabe musste man daher wissen, dass Strings in C zwingend ein NUL am Ende brauchen und wie die Initialisierung von Arrays erfolgt. Bei fehlender Array-Größe reserviert der Compiler exakt so viel Platz wie für die Initialisierungsliste nötig ist und kopiert(!) die Elemente aus der Initialisierungsliste in das Array. Ist eine Array-Größe angegeben, reserviert der Compiler exakt diese Größe und kopiert(!) die Elemente aus der Initialisierungsliste in das Array, bis es zur angegebenen Größe aufgefüllt ist. Sind zu viele Elemente in der Initialisierungsliste werden sie einfach ignoriert, sind zu wenig Elemente in der Initialisierungsliste wird mit dem 0-Wert des entsprechenden Datentyps (bei char also NUL) aufgefüllt.
Das kann man übrigens gut nutzen, um Arrays in C zu initialisieren.
int a[100] erzeugt ein Array a mit Platz für 100 int-Werte, aber es findet keine Initialisierung statt.
int a[100]= {0} erzeugt ebenfalls ein Array a mit Platz für 100 int-Werte, kopiert die Initialisierungsliste in das Array, setzt also a[0]=0, und füllt dann bis zum Ende des Array mit den Nullwerten vom Typ int auf. Also wird das ganze Array mit Nullen initialisiert.