Klausur C Flashcards

1
Q

Bitte schreiben sie zwei verschiedene Schlüsselwörter und zwei verschiedene Datentypen. Beschreiben sie diese jeweils in wenigen Worten.

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wie beschreibt man ein Integer (int) mit Vorzeichen?

Wie beschreibt man ein Integer (int) ohne Vorzeichen?

A

Integer mit Vorzeichen: signed int

Integer mit Vorzeichen: unsigned int

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist ein Bitüberlauf? Erlären sie anhand eines Beispiels!

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Sie wollen eine Modulo-Rechnung durchführen. Nennen sie einen Datentyp mit dem dies möglich ist. Begründen sie ihre Wahll.

A

int, (long int)

Teilen mit Rest geht nur mit ganzen Zahlen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Im Zusammenhang mit Zeigern werden diese beiden Zeichen verwendet:

&
*

Wofür benutzt man sie?

A

& ist der Adressoperator.
* ist der Inhaltsoperator.

Alternativ: Erklärung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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);

A

d)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Die ASCII-Tabelle beinhaltet 128 Zeichen. Wie viele Bit sind nötig, um jedem Zeichen eine Dualzahl zuzuweisen?

A

7 bit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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.

A

> 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 (?)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

“lässt sich einwandfrei kompilieren” heißt was?

A

Programm wurde ordnungsgemäß geschrieben, Fehler rührt woanders her

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Worauf lässt das int vor einem Funktionsprototypen schließen (z.B. int main(void))?

A

Auf den Datentyp des Ruckgabewertes. Hier integer, also eine ganzzahlige Variable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Nenne und beschreibe die beiden Operatoren, die in Verbindung mit Zeigern in
C auftauchen.

A

& 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Welche Zahl lässt sich mit einer 9-Bit-Binärzahl maximal darstellen?

A

2^9 - 1

bzw 511

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Schreibe einen exemplarischen Funktionsaufruf einer Funktion in der Main

A

test = ableich(feld);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was wird der Funktion “abgleich” beim Funktionsaufruf in der main konkret übergeben?
test = ableich(vektor);

A

Ein Zeiger auf das erste Element des Feldes “vektor”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was passiert wenn man aus einer nicht existierenden Datei lesen möchte? (also welchen Fehler zeigt es?)

A

segmentation fault

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was ist ein Vorteil und ein Nachteil beim Speichern als Binärdatei?

A

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.

17
Q

Öffnen und schließen einer Binärdatei

A

Öffnen:
zeiger=fopen(“freunde.dat”,”w”);

Schließen:
fclose(zeiger);

18
Q

Beschriften oder Lesen einer Binärdatei

A

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);

19
Q

Öffne, beschrifte und schließe eine Binärdatei

A

FILE *zeiger;
zeiger=fopen(“freunde.dat”,”w”);
fwrite(freunde, sizeof(struct karteikarte), 20, zeiger);
fclose(zeiger);

20
Q

modulu operator

A

a%2 == 0

21
Q

int *zeiger = &zahl

beschreibe nur mit zeiger:

Der Wert von zahl.

Die Adresse von zeiger.

Die Adresse von zahl.

A

Der Wert von zahl: *zeiger

Die Adresse von zeiger: &zeiger

Die Adresse von zahl: zeiger

22
Q

Wie sorge ich dafuer dass bei einer rechnung mit int zahlen auch eine Zahl mit Komma rauskommen darf?

A
  1. double a=5.0/2;
  2. double a= (double) 5/2
23
Q

Worauf lasst das int vor einem Funktionsprototypen schließen (z.B.int main(void))?

A

Auf den Datentyp des Ru ̈ckgabewertes. Hier integer, also eine ganzzahlige Varia-
ble.

24
Q

Nenne und beschreibe die beiden Operatoren, die in Verbindung mit Zeigern in
C auftauchen.

A

& 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.
25
Q

Code am Ende checken (12)

A

> alle variablen deklariert? (Matrix und Zaehler i,j,n)
alle ; ? und nicht falsche?
alle klammern zu? und da? ( ) { }
alle \n ?
alle & bei scanf?
alles in computersprache? 1/3 & . statt , & ^
alle Headerdateien da?
- atoi & atof: < stdlib.h >
- strings: < string.h >
- sin/cos/pow: < math.h >
ueberall “ statt ‘ ? ausser switch und char = {‘a’,’b’}
doppelt sachen doppelt? == , &&
zeiger vorher leer?
geteilt durch int? –> 5.0 oder (double)
Zahl richtig in struct? 5. = fam[4]

drei kinder koennen bei uns computer haben, alle drei lesen gerne zuhause