Hallo zusammen!
Unten stehend habe ich alle Aufgaben der Probeklausur (Aufg. 5 - 15), die ich nun schon gelöst habe, aufgeführt. Ich wäre dankbar, wenn ihr meine Ergebnisse / Antworten kurz kontrollieren könntet.
Aufg. 9: Ist bekannt (mein erster Post hier im Forum).
Aufg. 11: Ich bin mir nicht sicher, ob ich den Unterschied von Deklaration und Definition von Funktionen richtig verstanden habe.
Die Deklaration ist quasi der Funktionsprototyp und die Definition die Funktion selbst?
Aufg. 13: Pre-Inkrement und Post-Inkrement…
Finde ich persönlich sehr verwirrend. Die Aufgabe habe ich schlicht durch ausprobieren gelöst!
Vielen Dank vorab und liebe Grüße!
Orchidee
_ _ _ _ _
Aufg. 5
Im Code steht die Definition:
int meine Variable;
a)Beim Programmstart wird in jedem Fall der Speicher für die Variable bereitgestellt.
wahr / falsch
wahr: Die Variable wurde deklariert/definiert, wodurch der Compiler Speicherplatz für eine integer-Variable reserviert.
b)Die Bereitstellung des Speichers ist an die Lebensdauer der Variablen geknüpft.
wahr / falsch
wahr: Lokale Variable sind automatische Datenobjekte, welche beim Start einer Funktion automatisch erstellt und bei ihrem Verlassen ebenso wieder zerstört werden. Der zuvor reservierte Speicherplatz wird hierauf für andere Zwecke freigegeben.
c)Wenn es sich um eine lokale Variable in einer Funktion handelt, dann wird bei jedem Aufruf der Funktion der selbe Speicherplatz verwendet.
wahr / falsch
falsch: Lokale Variable sind automatische Datenobjekte. Die Variable erhält bei jedem Funktionsstart einen anderen Speicherplatz.
Aufg. 6
Sie möchten sicherstellen, dass eine Variable bei Verwendung nicht undefiniert ist. Nennen Sie 2 Möglichkeiten, wie Sie dies erreichen können.
Variable definieren: int a;
Variable als statische Variable definieren: static int a;
Variable als globale Variable, außerhalb der versch. Funktionen, definieren: int a;
Aufg. 7
Beschreiben Sie, was bei der Code-Erzeugung passiert, wenn im Quelltext das folgende steht:
#define MAX 5
int feld[MAX];
Mit der Präprozessor-Anweisung #define wird dem symbolischen Namen (MAX) eine Konstante (5) zugewiesen. Der Präprozessor ersetzt überall im Quellcode den symbolischen Namen (MAX) durch die Konstante (5).
Durch int feld[MAX] wird ein Array mit 5 Elementen deklariert und initialisiert.
Aufg. 8
Nennen Sie 3 Arten von Fehlern, die Sie bei der Benennung und Initialisierung von Variablen machen können.
Falsche Namensvergabe: int !xy! = 5;
Datentyp und Wert passen nicht zusammen: int a = 3.5;
Semikolon vergessen: int a = 5
Aufg. 9
Wie lauten die Prototypen folgender Funktionen?
a)Die Funktion compose liefert eine null-terminierte Zeichenkette, die aus drei übergebenen Zeichen erzeugt wird.
char * compose(char a, char b, char c);
b)Die Funktion maxFeld besitzt zwei Felder von double-Zahlen und gibt entweder 1 oder 2 zurück.
int maxFeld(double, double);
(Achtung: Welche Argumente benötigen diese Funktionen?)
Aufg. 10
Ein C-Programm ruft die Standardfunktion sqrt auf. Dazu
a)wird die Header-Datei stdlib.h inkludiert
wahr / falsch
falsch: Die Funktion sqrt (Quadratwurzel aus positiven Zahlen) setzt das Einbinden von math.h voraus.
b)muss die richtige Header-Datei vor dem Aufruf von sqrt inkludiert werden.
wahr / falsch
wahr: Das Verwenden der Funktion sqrt setzt das Einbinden von math.h voraus.
c)muss unbedingt als erste Zeile die richtige Header-Datei inkludiert werden.
wahr/falsch
falsch: Es könnte wie folgt aussehen:
#include
#include
#include an 3. Stelle
Aufg. 11
Wenn eine Funktion aufgerufen wird,
a)dann muss sie zum Zeitpunkt des Bindens auch definiert sein.
wahr / falsch
wahr: Ohne die Definition der Funktion > kann der Compiler die Funktion nicht bearbeiten.
b)dann meldet der Compiler einen Fehler, wenn er die Definition der Funktion nicht findet.
wahr / falsch
wahr
c)dann kann die Deklaration mit #undef rückgängig gemacht werden.
wahr / falsch
falsch: Mit #undef werden entweder symbolische Konstanten oder Makros aufgehoben, nicht aber Funktionen.
Aufg. 12
Ein C-Programm liest mit scanf das Alter des Anwenders in eine int-Variable ein. Sie möchten fehlerhafte Eingaben (z.B. die Eingabe von „[]“ im Programm erkennen und abfangen).
a)Das geht nicht. Das Programm stürzt ab.
wahr / falsch
falsch: Wenn [] anstatt des Alters eingegeben wird, stürzt das Programm nicht ab. Gem. unten stehendem Bsp. (b) würde 0 ausgegeben werden. Wurde die Variable, in welcher das Alter gespeichert wird, zuvor nicht initialisiert, erscheint ein zufälliger Wert.
b)Sie verwenden den Rückgabewert von scanf.
wahr / falsch
wahr: Unter der Voraussetzung, dass es sich nicht um einen „zufälligen“ Rückgabewert handelt. Die Variable gem. unten stehendem Bsp. wurde zuvor initialisiert.
_ _ _
int alt = 0;
printf(„Bitte geben Sie das Alter ein:\n“);
scanf("%i", &alt);
if (alt>0&&alt 0 || i-- c
b)Genau ein Wert von a und b ist kleiner als c, aber nicht beide
a