Klausur C Flashcards
Bitte schreiben sie zwei verschiedene Schlüsselwörter und zwei verschiedene Datentypen. Beschreiben sie diese jeweils in wenigen Worten.
Schlüsselwörter (Auswahl):
char, do, double, else, float, for, goto, if, int, long, return, short, sizeof, struct, switch, unsigned, void, while
Datentypen (Auswahl):
Integer (int), Gleitkommazahlen (float), Character (char)
Wie beschreibt man ein Integer (int) mit Vorzeichen?
Wie beschreibt man ein Integer (int) ohne Vorzeichen?
Integer mit Vorzeichen: signed int
Integer mit Vorzeichen: unsigned int
Was ist ein Bitüberlauf? Erlären sie anhand eines Beispiels!
Bei der Darstellung von Zahlen im Binärsystem kann es aufgrund des endlichen Speicherplatzes bei der Addition von 2 Zahlen zu einem Bitüberlauf kommen. Dabei springt die Zahl von der größtmöglichen zur kleinstmöglichen Zahl im dargestellten Zahlenbereich.
000 1
+1 1 1 1
_____
0000
Sie wollen eine Modulo-Rechnung durchführen. Nennen sie einen Datentyp mit dem dies möglich ist. Begründen sie ihre Wahll.
int, (long int)
Teilen mit Rest geht nur mit ganzen Zahlen
Im Zusammenhang mit Zeigern werden diese beiden Zeichen verwendet:
&
*
Wofür benutzt man sie?
& ist der Adressoperator.
* ist der Inhaltsoperator.
Alternativ: Erklärung
Welcher der aufgelisteten Scanbefehle ist für den nachfolgenden Quellcode richtig, um auf q einzulesen?
float q, * a;
a=&q;
a) scanf(“%f”, &a);
b) scanf(“%f”, *a);
c) scanf(%f, a);
d) scanf(“%f”, a);
d)
Die ASCII-Tabelle beinhaltet 128 Zeichen. Wie viele Bit sind nötig, um jedem Zeichen eine Dualzahl zuzuweisen?
7 bit
Sie haben ein Programm geschrieben was sich einwandfrei kompilieren lässt. Wenn sie es jedoch ausführen , bricht das Programm ab (Laufzeitfehler). Nennen sie 2 mögliche Ursachen.
> beim Teilen durch 0 oder Wurzel aus negativer Zahl
> Lesezugriff auf nicht vorhandene Dateien (sofern nicht abgefangen)
> nicht kompatible Datentypen für einlesen (sofern nicht abgefangen)
> Zugriff auf nicht vorhandenes Felelement (?)
“lässt sich einwandfrei kompilieren” heißt was?
Programm wurde ordnungsgemäß geschrieben, Fehler rührt woanders her
Worauf lässt das int vor einem Funktionsprototypen schließen (z.B. int main(void))?
Auf den Datentyp des Ruckgabewertes. Hier integer, also eine ganzzahlige Variable
Nenne und beschreibe die beiden Operatoren, die in Verbindung mit Zeigern in
C auftauchen.
& ist der Adressoperator.
Er wird genutzt, um die Speicheradresse einer Variablen zu ermitteln.
- ist der Referenzierungsoperator.
Mit ihm wird auf den referenzierte Wert eines Zeigers zugegriffen, also den Wert der an der Adresse hinterlegt ist, auf die der Zeiger verweist.
Welche Zahl lässt sich mit einer 9-Bit-Binärzahl maximal darstellen?
2^9 - 1
bzw 511
Schreibe einen exemplarischen Funktionsaufruf einer Funktion in der Main
test = ableich(feld);
Was wird der Funktion “abgleich” beim Funktionsaufruf in der main konkret übergeben?
test = ableich(vektor);
Ein Zeiger auf das erste Element des Feldes “vektor”
Was passiert wenn man aus einer nicht existierenden Datei lesen möchte? (also welchen Fehler zeigt es?)
segmentation fault
Was ist ein Vorteil und ein Nachteil beim Speichern als Binärdatei?
VT:
> gespeicherte Daten benötigen weniger Speicherplatz benötigen
> vereinfachen den Umgang mit strukturierten Feldern
NT: Sie sind für uns Menschen und für Computerprogramme, die nicht genau wissen, wie sie aufgebaut sind, nicht lesbar. Dementsprechend schwierig ist es, einen Fehler in einer Binärdatei zu suchen.
Öffnen und schließen einer Binärdatei
Öffnen:
zeiger=fopen(“freunde.dat”,”w”);
Schließen:
fclose(zeiger);
Beschriften oder Lesen einer Binärdatei
fwrite(datenfeld, groesse, anzahl, dateizeiger)
fread(datenfeld, groesse, anzahl, dateizeiger)
> datenfeld: Das Feld, das die Daten enthält, die auf die Datei geschrieben werden sollen.
bzw
Das Feld in das die Daten aus einer Datei geschrieben werden.
groesse: Die Grösse der einzelnen Datenblöcke, am besten mit sizeof().
anzahl: Die Anzahl der Datenblöcke.
dateizeiger: Ein Zeiger auf die gewünschte Datei vom Typ FILE. –> Also immer “FILE *zeiger” anlegen!!!
Beispiel:
fwrite(freunde, sizeof(struct karteikarte), 20, zeiger);
Öffne, beschrifte und schließe eine Binärdatei
FILE *zeiger;
zeiger=fopen(“freunde.dat”,”w”);
fwrite(freunde, sizeof(struct karteikarte), 20, zeiger);
fclose(zeiger);
modulu operator
a%2 == 0
int *zeiger = &zahl
beschreibe nur mit zeiger:
Der Wert von zahl.
Die Adresse von zeiger.
Die Adresse von zahl.
Der Wert von zahl: *zeiger
Die Adresse von zeiger: &zeiger
Die Adresse von zahl: zeiger
Wie sorge ich dafuer dass bei einer rechnung mit int zahlen auch eine Zahl mit Komma rauskommen darf?
- double a=5.0/2;
- double a= (double) 5/2
Worauf lasst das int vor einem Funktionsprototypen schließen (z.B.int main(void))?
Auf den Datentyp des Ru ̈ckgabewertes. Hier integer, also eine ganzzahlige Varia-
ble.
Nenne und beschreibe die beiden Operatoren, die in Verbindung mit Zeigern in
C auftauchen.
& ist der Adressoperator. Er wird genutzt, um die Speicheradresse einer Variablen zu ermitteln.
- ist der Referenzierungsoperator. Mit ihm wird auf den referenzierte Wert eines Zeigers zugegriffen, also den Wert der an der Adresse hinterlegt ist, auf die der Zeiger verweist.