Multiple-Choice-Fragen (MC)

1. Einführung in C

MC1: In welchem Jahrzehnt wurde die Programmiersprache C entwickelt?

  • A) 1950er
  • B) 1960er
  • C) 1970er
  • D) 1980er

MC2: Wofür ist C besonders gut geeignet? (Mehrere Antworten möglich)

  • A) Webentwicklung
  • B) Betriebssystem- und Embedded-Programmierung
  • C) Datenanalyse
  • D) Grafikdesign

2. Relevanz von C

MC3: Warum bleibt C auch heute noch eine weit verbreitete Programmiersprache? (Mehrere Antworten möglich)

  • A) Sie ist die modernste Sprache
  • B) Hohe Leistung und Nähe zur Hardware
  • C) Umfangreiche integrierte Bibliotheken
  • D) Plattformunabhängigkeit

3. Grundprinzipien von C

MC4: Welches Prinzip ist für C charakteristisch? (Mehrere Antworten möglich)

  • A) Hohe Abstraktion von der Hardware
  • B) Effizienz vor Sicherheit
  • C) Automatische Fehlerbehandlung
  • D) Manuelle Speicherverwaltung

MC5: Welche der folgenden Aussagen trifft auf C zu? (Mehrere Antworten möglich)

  • A) Es bietet umfangreiche Schutzmechanismen
  • B) Der Programmierer hat hohe Kontrolle
  • C) Es ist eine rein funktionale Sprache
  • D) Es verwendet Garbage Collection

4. Literaturhinweise

MC6: Welche Ressource ist am besten geeignet, um C-Programmierung zu erlernen? (Mehrere Antworten möglich)

  • A) Ein Roman über Programmierer
  • B) Fachbücher und Online-Tutorials
  • C) Videospiele
  • D) Soziale Medien

5. Hello World Beispiel

MC7: Welches Schlüsselwort wird in C verwendet, um Text auf dem Bildschirm auszugeben?

  • A) print
  • B) echo
  • C) printf
  • D) display

MC8: Wie lautet die korrekte Syntax für das “Hello World”-Programm in C? (Mehrere Antworten möglich)

  • A) echo(“Hello World”);
  • B) printf(“Hello World”);
  • C) print(“Hello World”);
  • D) display(“Hello World”);

6. Kommentare

MC9: Wie wird ein mehrzeiliger Kommentar in C eingeleitet?

  • A) //
  • B) /*
  • C) <!--
  • D) #

MC10: Welche der folgenden Optionen ist ein einzeiliger Kommentar in C?

  • A) /*
  • B) #
  • C) //
  • D) --

7. Präprozessor

MC11: Welche Präprozessor-Direktive wird verwendet, um eine Header-Datei einzubinden?

  • A) #define
  • B) #include
  • C) #import
  • D) #header

MC12: Was bewirkt die Direktive #define in C? (Mehrere Antworten möglich)

  • A) Definiert eine Konstante oder Makro
  • B) Importiert eine Bibliothek
  • C) Beendet das Programm
  • D) Deklariert eine Variable

8. Funktionen

MC13: Wie wird eine Funktion in C definiert?

  • A) function myFunc() {}
  • B) def myFunc() {}
  • C) void myFunc() {}
  • D) func myFunc() {}

MC14: Welche der folgenden Aussagen ist korrekt bezüglich Funktionen in C? (Mehrere Antworten möglich)

  • A) Funktionen können keine Rückgabewerte haben
  • B) Funktionen müssen immer einen Parameter haben
  • C) Funktionen können rekursiv aufgerufen werden
  • D) Funktionen werden automatisch parallel ausgeführt

9. Ein-/Ausgabe

MC15: Welches Formatierungszeichen wird in printf verwendet, um einen Ganzzahlwert auszugeben?

  • A) %f
  • B) %d
  • C) %s
  • D) %c

MC16: Welche Funktion wird in C verwendet, um Benutzereingaben zu lesen?

  • A) scanf
  • B) input
  • C) read
  • D) get

10. Steuerzeichen

MC17: Was bewirkt das Steuerzeichen \n in einem String?

  • A) Tabulator
  • B) Neue Zeile
  • C) Nullterminierung
  • D) Rückwärtsschrägstrich

MC18: Welches Steuerzeichen wird verwendet, um einen Tabulator einzufügen?

  • A) \n
  • B) \t
  • C) \0
  • D) \

11. Variablen

MC19: Wie wird eine ganzzahlige Variable in C deklariert?

  • A) integer x;
  • B) int x;
  • C) var x;
  • D) number x;

MC20: Welche der folgenden Namen entspricht den Namenskonventionen in C? (Mehrere Antworten möglich)

  • A) 1variable
  • B) my_variable
  • C) my-variable
  • D) my variable

12. Basistypen in C

MC21: Welcher der folgenden ist kein Basistyp in C?

  • A) int
  • B) float
  • C) string
  • D) char

MC22: Welche Aussage über den char-Datentyp ist korrekt?

  • A) Er belegt 4 Byte Speicher
  • B) Er kann Zeichen wie ‘a’ oder ‘1’ speichern
  • C) Er wird für Fließkommazahlen verwendet
  • D) Er ist ein komplexer Datentyp

13. Deklaration vs Definition

MC23: Was ist der Unterschied zwischen Deklaration und Definition in C?

  • A) Deklaration reserviert Speicher, Definition nicht
  • B) Definition reserviert Speicher, Deklaration nicht
  • C) Beide bedeuten dasselbe
  • D) Deklaration definiert den Typ, Definition den Wert

MC24: Welche der folgenden Zeilen ist eine Definition einer Variable?

  • A) extern int x;
  • B) int x;
  • C) int x;
  • D) void func();

14. Operatoren

MC25: Welcher Operator wird für die Addition verwendet?

  • A) -
  • B) *
  • C) +
  • D) /

MC26: Welcher Operator prüft auf Gleichheit?

  • A) =
  • B) ==
  • C) !=
  • D) ===

15. Binäre Flags

MC27: Welche Bitoperation setzt ein bestimmtes Bit auf 1?

  • A) AND (&)
  • B) OR (|)
  • C) XOR (^)
  • D) NOT (~)

MC28: Was bewirkt der Bitshift-Operator << in C?

  • A) Verschiebt Bits nach rechts
  • B) Verschiebt Bits nach links
  • C) Invertiert alle Bits
  • D) Setzt alle Bits auf 0

16. Pointer (Zeiger)

MC29: Was ist ein Pointer in C?

  • A) Eine Variable, die einen Wert speichert
  • B) Eine Funktion, die eine Adresse speichert
  • C) Eine Variable, die eine Speicheradresse speichert
  • D) Ein Datentyp für Zeichenketten

MC30: Welches Symbol wird verwendet, um den Wert zu dereferenzieren, auf den ein Pointer zeigt?

  • A) &
  • B) *
  • C) %
  • D) #

17. Arrays

MC31: Wie wird ein eindimensionales Array von 10 Ganzzahlen in C deklariert?

  • A) int array[10];
  • B) array int[10];
  • C) int[10] array;
  • D) array int(10);

MC32: Welche Aussage über Arrays in C ist korrekt?

  • A) Die Größe eines Arrays kann zur Laufzeit geändert werden
  • B) Arrays können nur aus Zeichen bestehen
  • C) Arrays sind statische Felder mit fester Größe
  • D) Arrays sind automatisch sortiert

18. Arrayadressierung

MC33: Wie greift man auf das dritte Element eines Arrays arr zu?

  • A) arr[2]
  • B) arr[3]
  • C) arr{3}
  • D) arr(2)

MC34: Was ist die Adresse des ersten Elements eines Arrays arr gleich?

  • A) &arr[1]
  • B) arr + 1
  • C) arr
  • D) &arr

19. Strukturen

MC35: Wie definiert man eine Struktur in C?

  • A) struct Person { char name[50]; int age; };
  • B) class Person { string name; int age; };
  • C) structure Person { string name; int age; };
  • D) typedef Person { char name[50]; int age; };

MC36: Wie greift man auf das Feld age einer Strukturvariable p zu?

  • A) p.age
  • B) page
  • C) p[age]
  • D) age(p)

20. Aufzählungen (enum)

MC37: Was ist der Standardwert des ersten Elements in einer enum in C, wenn kein Wert zugewiesen wird?

  • A) 1
  • B) -1
  • C) 0
  • D) Es ist undefiniert

MC38: Wie deklariert man eine enum für Wochentage in C?

  • A) enum Wochentag { Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag };
  • B) enum Wochentag = { Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag };
  • C) enum Wochentag (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag);
  • D) enum Wochentag { “Montag”, “Dienstag”, “Mittwoch”, “Donnerstag”, “Freitag”, “Samstag”, “Sonntag” };

21. Vereinigungen (union)

MC39: Was ist eine union in C?

  • A) Eine Datenstruktur, die nur einen Typ enthält
  • B) Eine Datenstruktur, die mehrere Typen im gleichen Speicher speichern kann
  • C) Eine spezielle Art von Struktur mit festen Werten
  • D) Eine Funktion zur Speicherverwaltung

MC40: Wie groß ist der Speicher einer union, die ein int und ein float enthält?

  • A) Größe von int + Größe von float
  • B) Größe des größeren Typs
  • C) Größe des kleineren Typs
  • D) Unabhängig von den enthaltenen Typen

22. Kontrollfluss - if/else

MC41: Welche der folgenden Bedingungen ist korrekt in einer if-Anweisung in C?

  • A) if (a = 5)
  • B) if (a == 5)
  • C) if (a === 5)
  • D) if (a != 5)

MC42: Wie lautet die korrekte Syntax für eine if-else-Anweisung in C?

  • A) if (Bedingung) { /_ Code / } else { / Code _/ }
  • B) if { Bedingung } else { /_ Code _/ }
  • C) if (Bedingung) /_ Code / else / Code _/
  • D) if: (Bedingung) { /_ Code / } else: { / Code _/ }

23. Kontrollfluss - switch

MC43: Welche Datenarten können in einer switch-Anweisung in C verwendet werden?

  • A) Nur Ganzzahlen und Zeichen
  • B) Alle Datentypen
  • C) Nur Zeichenketten
  • D) Nur Fließkommazahlen

MC44: Was bewirkt das break-Statement innerhalb eines case in einer switch-Anweisung?

  • A) Beendet das gesamte Programm
  • B) Überspringt den aktuellen case
  • C) Verhindert das Durchfallen in den nächsten case
  • D) Führt den nächsten case sofort aus

24. Schleifen

MC45: Welche Schleife garantiert mindestens eine Iteration?

  • A) for
  • B) while
  • C) do-while
  • D) foreach

MC46: Wie lautet die korrekte Syntax für eine for-Schleife in C?

  • A) for (int i = 0; i < 10; i++) { /_ Code _/ }
  • B) for int i = 0; i < 10; i++ { /_ Code _/ }
  • C) for (i = 0; i < 10; i++) /_ Code _/
  • D) for i from 0 to 10 { /_ Code _/ }

25. Speicherverwaltung

MC47: Was ist der Hauptunterschied zwischen Stack und Heap?

  • A) Stack ist größer als Heap
  • B) Stack verwaltet automatisch Speicher, Heap erfordert manuelle Verwaltung
  • C) Heap ist schneller als Stack
  • D) Heap wird für lokale Variablen verwendet

MC48: Welche Speicherstruktur wird für lokale Variablen verwendet?

  • A) Heap
  • B) Stack
  • C) Register
  • D) Code-Segment

26. Stack-Funktionsaufruf

MC49: Was wird beim Funktionsaufruf auf dem Stack abgelegt?

  • A) Nur der Rückgabewert
  • B) Nur die Parameter
  • C) Der Stack-Frame, einschließlich Rücksprungadresse und lokale Variablen
  • D) Der gesamte Programmcode

MC50: Was passiert, wenn eine Funktion aufgerufen wird?

  • A) Ein neuer Heap-Block wird erstellt
  • B) Ein neuer Stack-Frame wird erstellt
  • C) Das Programm wird neu gestartet
  • D) Die vorherige Funktion wird gelöscht

27. Dynamischer Speicher

MC51: Welche Funktion wird verwendet, um Speicher im Heap zu reservieren?

  • A) malloc
  • B) alloc
  • C) reserve
  • D) create

MC52: Wie gibt man dynamisch reservierten Speicher wieder frei?

  • A) delete
  • B) free
  • C) release
  • D) remove

28. Sichtbarkeit von Variablen

MC53: Was bestimmt die Sichtbarkeit einer Variablen in C?

  • A) Der Datentyp der Variablen
  • B) Der Speicherort (global oder lokal)
  • C) Die Größe der Variablen
  • D) Der Wert der Variablen

MC54: Welche Variable ist innerhalb einer Funktion nicht sichtbar?

  • A) Lokale Variable
  • B) Globale Variable
  • C) Variable mit externem Link
  • D) Statische Variable außerhalb der Funktion

29. Parameterübergabe

MC55: Was bedeutet Call-by-Value?

  • A) Der Wert des Arguments wird kopiert und an die Funktion übergeben
  • B) Die Adresse des Arguments wird übergeben
  • C) Der Zeiger auf das Argument wird übergeben
  • D) Es gibt keinen Unterschied

MC56: Wie übergibt man einen Parameter per Referenz in C?

  • A) Durch Kopieren des Wertes
  • B) Durch Übergabe der Adresse des Wertes
  • C) Durch Verwendung eines globalen Wertes
  • D) C unterstützt keine Referenzübergabe

30. Rekursion

MC57: Was ist eine rekursive Funktion?

  • A) Eine Funktion, die nur einmal aufgerufen wird
  • B) Eine Funktion, die sich selbst aufruft
  • C) Eine Funktion ohne Rückgabewert
  • D) Eine Funktion mit variabler Parameteranzahl

MC58: Welches Problem kann auftreten, wenn eine rekursive Funktion keine Abbruchbedingung hat?

  • A) Compilerfehler
  • B) Speicherleck
  • C) Stack Overflow
  • D) Unendliche Schleife

31. Programmparameter

MC59: Wie lauten die Parameter der main-Funktion in C, die Kommandozeilenargumente akzeptiert?

  • A) int main()
  • B) int main(int argc, char *argv[])
  • C) void main()
  • D) void main(int argc, char argv[])

MC60: Was repräsentiert argc in der main-Funktion?

  • A) Die Anzahl der Zeichen in einem Argument
  • B) Die Anzahl der übergebenen Argumente
  • C) Das erste Argument
  • D) Den Programmnamen

32. Nutzung der Man-Pages

MC61: Was sind Man-Pages in Unix/Linux-Systemen?

  • A) Handbücher für Benutzer und Entwickler
  • B) Ausführbare Programme
  • C) Grafische Benutzeroberflächen
  • D) Systemprotokolle

MC62: Wie greift man auf die Man-Page einer Funktion wie printf zu?

  • A) man printf
  • B) help printf
  • C) printf —help
  • D) info printf

33. Ein-/Ausgabe mit Dateien

MC63: Welche Funktion wird verwendet, um eine Datei zum Lesen zu öffnen?

  • A) fopen(“datei.txt”, “w”);
  • B) fopen(“datei.txt”, “r”);
  • C) open(“datei.txt”, “read”);
  • D) read(“datei.txt”);

MC64: Wie schließt man eine geöffnete Datei in C?

  • A) close(file);
  • B) fclose(file);
  • C) end(file);
  • D) stop(file);

34. Alternative Dateifunktionen

MC65: Welche Funktion wird für Low-Level-Dateizugriffe verwendet?

  • A) fopen
  • B) write
  • C) fprintf
  • D) fread

MC66: Welche Funktion dient zum Lesen von Daten in Low-Level-Dateioperationen?

  • A) fread
  • B) read
  • C) getc
  • D) scanf

Lückentextfragen (LT)

1. Einführung in C

LT1: Die Programmiersprache C wurde in den __ Jahren entwickelt und ist besonders geeignet für die __ und Embedded-Programmierung.

2. Relevanz von C

LT2: Obwohl C eine ältere Sprache ist, bleibt sie aufgrund ihrer __ und __ weiterhin weit verbreitet.

3. Grundprinzipien von C

LT3: In C hat der Programmierer eine hohe __ über den Code, was zu großer __ führt, jedoch auf Kosten der __.

4. Hello World Beispiel

LT4: Das einfachste C-Programm verwendet die Funktion __ zur Ausgabe von Text auf dem Bildschirm.

5. Kommentare

LT5: Ein einzeiliger Kommentar in C beginnt mit __, während ein mehrzeiliger Kommentar mit /* beginnt und endet.

6. Präprozessor

LT6: Die Präprozessor-Direktive __ wird verwendet, um Header-Dateien einzubinden, und __ dient zur Definition von Konstanten oder Makros.

7. Funktionen

LT7: Eine Funktion in C kann einen __ zurückgeben und optional __ entgegennehmen.

8. Ein-/Ausgabe

LT8: Die Funktion __ wird verwendet, um formatierte Ausgaben zu erzeugen, während __ zur Eingabe von Daten genutzt wird.

9. Steuerzeichen

LT9: Das Steuerzeichen \n erzeugt einen Zeilenumbruch, und \t fügt einen Tabulator ein.

10. Variablen

LT10: Variablen in C müssen vor ihrer Verwendung __ werden, wobei der Typ und der __ beachtet werden müssen.

11. Basistypen in C

LT11: Die Basistypen in C umfassen unter anderem __, __ und __.

12. Deklaration vs Definition

LT12: Eine Deklaration informiert den Compiler über den __ einer Variable, während eine Definition tatsächlich __ Speicher dafür reserviert.

13. Operatoren

LT13: Arithmetische Operatoren wie __ und __ werden verwendet, um mathematische Operationen durchzuführen.

14. Binäre Flags

LT14: Bitoperationen wie AND (&) und OR (|) werden oft zur Manipulation von __ verwendet, insbesondere bei __ Flags.

15. Pointer (Zeiger)

LT15: Ein Pointer speichert die __ einer Variablen, und der Dereferenzierungsoperator * wird verwendet, um auf den Wert zuzugreifen.

16. Arrays

LT16: Ein Array ist ein statisches Feld mit fester __ und kann mehrere __ desselben Typs speichern.

17. Arrayadressierung

LT17: Das dritte Element eines Arrays arr wird mit __ angesprochen, und die Adresse des ersten Elements entspricht __.

18. Strukturen

LT18: Eine Struktur in C wird mit dem Schlüsselwort __ definiert und kann verschiedene __ unterschiedlicher Typen enthalten.

19. Aufzählungen (enum)

LT19: In einer enum beginnt der erste Wert standardmäßig bei __, es sei denn, ein anderer Wert wird explizit zugewiesen.

20. Vereinigungen (union)

LT20: Eine union speichert verschiedene Datentypen im __ Speicherbereich, sodass zu einem Zeitpunkt nur __ Typ verwendet werden kann.

21. Kontrollfluss - if/else

LT21: Eine if-Anweisung führt den Codeblock nur aus, wenn die __ wahr ist, andernfalls kann ein __-Block ausgeführt werden.

22. Kontrollfluss - switch

LT22: Die switch-Anweisung ermöglicht die Fallunterscheidung basierend auf dem Wert einer __ und verwendet Schlüsselwörter wie __ und __.

23. Schleifen

LT23: Die drei Hauptschleifen in C sind for, while und __, wobei jede ihre eigenen Einsatzszenarien hat.

24. Speicherverwaltung

LT24: Der __ verwaltet automatisch Speicher für lokale Variablen, während der __ Speicher für dynamisch allokierte Daten bereitstellt.

25. Stack-Funktionsaufruf

LT25: Beim Aufruf einer Funktion wird ein neuer __ auf dem Stack erstellt, der Informationen wie Rücksprungadresse und __ enthält.

26. Dynamischer Speicher

LT26: Speicher, der mit malloc reserviert wurde, muss mit __ wieder freigegeben werden, um Speicherlecks zu vermeiden.

27. Sichtbarkeit von Variablen

LT27: Globale Variablen sind im gesamten Programm sichtbar, während lokale Variablen nur innerhalb des __ sichtbar sind.

28. Parameterübergabe

LT28: Call-by-Value übergibt eine __ des Wertes an die Funktion, während Call-by-Reference die __ übergibt.

29. Rekursion

LT29: Rekursion wird verwendet, wenn eine Funktion sich selbst aufruft, typischerweise mit einer __ Bedingung zur Beendigung.

30. Programmparameter

LT30: Kommandozeilenargumente werden an die main-Funktion übergeben durch die Parameter __ und __.

31. Nutzung der Man-Pages

LT31: Man-Pages bieten detaillierte Informationen und Anleitungen zu Befehlen und Funktionen, und können mit dem Befehl __ aufgerufen werden.

32. Ein-/Ausgabe mit Dateien

LT32: Um eine Datei zum Schreiben zu öffnen, verwendet man die Funktion __ mit dem Modus __.

33. Alternative Dateifunktionen

LT33: Low-Level-Dateifunktionen wie open und write bieten mehr __ im Vergleich zu Standard-I/O-Funktionen wie fopen und fread.