multiple choice Flashcards
Wieviel Speicherplatz belegt die Variable money im folgenden Code? Welchen Wert hat die Variable money?
#include <stdio.h> int main() { enum funds {euro, dollar, yuan, pound, yen, cnd, lira} money; money=yen; return 0; }
- 4 Bytes, 4
- 4 Bytes, 5
- 28 Bytes, 4
- 28 Bytes, 5
1. 4 Bytes, 4
(standardmäßig wird die größe int bei den meisten c-implementierungen gemacht + 4 ist der Wert da yen an der vierten stelle steht)
money hätte man auch extra deklarieren könne es dient zur verwirrung
In welcher Zeile das folgenden Codes wird für die Variable des Typs student Speicher reserviert?
Wenn für char ein Byte, für unsigned int 4 Byte und für float 4 Byte benötigt wird, wie groß ist mindestens der reservierte Speicherplatz für die Variable s[]?
typedef struct{char name[40]; unsigned int matr_nr; float grade;} student; student s[] = {{"Max Müller", 1000, 1.7}, {"Marie Marx", 1001, 1.3}};
- Zeile 1, 120 Byte
- Zeile 2, 40 Byte
- Zeile 2, 96 Byte
- Zeile 1, 40 Byte
3. Zeile 2, 96 Byte
(Speicherreservierung folgt bei der Variable s[],
char name[40] = (40 bytes + 4 bytes + 4 bytes)*2 -> 2 Studenten werden angegeben)
Welche Ausgabe erzeugt das folgende Programm?
~~~
#include <stdio.h></stdio.h>
int main () {
float y = 3.0;
const float y = 5;
y = x;
printf(“x = %.1f, y = %.1f”, x, y);
return 0;
}
~~~
1. Keine, der Linker meldet einen Fehler
2. x = 3.0, y = 5.0
3. x = 3.0, y = 3.0
4. Keine, der Compiler meldet einen Fehler
4. Keine, der Compiler meldet einen Fehler
(in C dürfen nicht 2 Variablen mit dem selben Namen im selben Gültigkeitsbereich dekalriert werden)
Welche Zahl wird in nachfolgendem Programmausschnitt durch printf() ausgegeben?
int a = 027; int b = 0x17; printf("Differenz = %d", a-b);
- 8
- 4
- 0
- 10
3. 0
(027: Oktalzahl -> 23
0x17: Hexadezimal -> 23
23-23 = 0)
Gebeben ist eine Funktion mit dem Prototyp:
void doit(char);
- void _void = doit(‘a’);
- doit(42);
- int _void = doit(‘a’);
- doit(0xfff);
2. doit(42)
(42 wird als int interpretiert, kann aber implizit zu char umgewandelt werden
doit(0xfff) wäre eig möglich aber diese hexadiezimalzahl ist zu hoch für den gültigkeitsbereich von char -> es könnte ein error sein)
Markieren Sie den gültigen Bezeichner, z.B. für Variablen, in der Sprache C.
- counter_1
- if
- 42counter
- counter#1
1. counter_1
1. Er darf nur aus Buchstaben (a-z, A-Z), Ziffern (0-9) und Unterstrichen () bestehen.
2. Er darf nicht mit einer Ziffer beginnen.
3. Er darf keine Sonderzeichen (außer dem Unterstrich) enthalten.
4. Er darf kein Schlüsselwort der Sprache C sein.*
Welche Ausgabe erzeugt folgende Anweisung?
printf("%d%d\n", 1&2, 1&&2);
- 10
- 01
- 11
- 00
2. 01
Bitweise AND (1 & 2):
* 1 in Binär: 01
* 2 in Binär: 10
* 01 & 10 = 00
* Das Ergebnis ist 0 in Dezimal
Logisches AND (1 && 2):
* In C, jeder Wert ungleich 0 wird als “wahr” betrachtet
* Sowohl 1 als auch 2 sind ungleich 0, also beide “wahr”
* true && true ergibt true
* In C wird true als 1 dargestellt
Welchen Wert haben x und y nach der Ausführung folgender arithmetischen Ausdrücke?
int x = 5 * 9 % 4; int y = -3 * ++x + 3 * 18 % 7;
- x = 5, y = -11
- x = 2, y = -1
- x = 1, y = -1
- x = 5, y = -6
2. x = 2, y = -1
(wichtig beachten das präinkrement, das macht x zu zwei )
Welche Anweisung werden Sie dem folgenden Code hinzufügen, sodass er korrekt funktioniert?
#include <stdio.h> int main() { time_t t; struct tm zeit; time(&t); zeit = *localtime(&t); printf("Zeit: %d:%d:%d\n", zeit.tm_hour, zeit.tm_min, zeit.tm_sec); return 0; }
#include <time.h>
#include <stdlib.h>
#include <dos.h>
#include <math.h>
1.#include <time.h>
(weil time_t, localtime())
Der Wert von x in hexdezimaler Notation beträgt:
~~~
x = (192»_space; 2) & (~(2 «_space;2));
~~~
- 0
- 48
- 30
- F7
3. 30
(48 wäre das Ergebnis in Dezimal)
* Es wird nach je nach dem nach rechts und nach links eingerückt
* Dezimal in Bit einfach immer durch zwei und die Reste entsprechen der Bits
* & ein Und entspricht Bitoperations und sowie in lg
Welche Werte haben i, j, k, l und m in dezimaler Notation?
int i=32, j=0x20, k, l, m; k=i|j; l=i&j; m=k^l;
- 32, 20, 20, 12, 12
- 32, 32, 32, 32, 32
- 0, 0, 0, 0, 0
- 32, 32, 32, 32, 0
4. 32, 32, 32, 32, 0
(0x20 ist in dezimal 32, einfach in bitoperation umrechen und dann hochrechnen)
(XOR ist wenn 1 | 1 = 0 0|0 = 0 aber 1|0 = 1
Welche der folgenden Aussagen über den ‘struct’ treffen zu? (3 richtige Antworten)
- Der Zugriff auf ein struct-Element erfolgt mit dem ‘>’ Operator.
- Variablen vom struct-Typ können lokal oder global sein.
- structs können keine structs enthalten.
- struct-Elemente können bei ihrer Definition initialisiert werden.
- Wenn ein struct definiert wird, wird der Speicherplatz reserviert.
2., 3., 4.
(drei eigentlich weil struct eig structs enthalten kann)
Was ist die Ausgabe des folgenden C-Codes?
#include <stdio.h> union color { struct RGB {unsigned char r, g, b;} rgb; unsigned hex; }; typedef union color color; int main (){ color pix; pix.hex = 0xab1234cd; printf("pix:%x r:%x g:%x b:%x\n", pix.hex, pix.rgb.r, pix.rgb.g, pix.rgb.b); }
- pix:1234cd r:cd g:34 b:12
- pix:ab1234cd r:12 g:34 b:cd
- pix:ab1234cd r:cd g:34 b:12
- pix:ab1234cd r:34 g:12 b:ab
4. pix:ab1234cd r:34 g:12 b:ab
Was ist die Ausgabe des folgenden Codes auf der Konsole?
char i = 1; switch(i) { case 1: printf("i = 1"); case 2: printf(", i = 2 "); break; default: printf("default") }
- default
- i = 1, i = 2
- i = 1
- error: switch quantity not an integer
**2. i = 1, i = 2 **
Wie lautet die Ausgabe des folgenden Codes?
~~~
int a = 10;
void func();
int main(void) {
int a = 20;
printf(“a=%d, “, a);
func();
}
void func() {
printf(“a=%d\n”, a)
}
~~~
- a=20, a=20
- a=10, a=10
- a=20, a=10
- a=10, a=20
3. a=20, a=10
(achte auf globale und lokale Variablen)
Ist der folgende Aufruf von printf(3) korrekt?
~~~
printf(“x: %d\n”, 21.0/7);
~~~
- Ja, der Typ des auszugebenden Wertes ist eine Ganzzahl
- Ja, alle Platzhalter im Formatstring sind mit Werten gesättigt
- Nein, die Anzahl der Parameter im Formatstring stimmt nicht
- Nein, der Typ des auszugebenden Wertes ist keine Ganzzahl
4. Nein, der Typ des auszugebenden Wertes ist keine Ganzzahl
(weil der Wert implizit zum double wurde)
Welche Ausgabe erzeugt das folgende Code-Fragment, wenn der Benutzer 42 über die Tastatur eingibt?
#include <stdio.h> int main(void){ int a = scanf("%d", &a); printf("%d", a); return 0; }
- Keine, weil scanf(3) call by reference erwartet
- 42
- 0
- 1
4. 1
(weil der Rückgabewert von scanf gespeichert und nicht die Benutzereingabe, sonst müsste da stehen:
~~~
int a;
scanf(“%d”, &a);
```)
Was ist die Ausgabe des folgenden Codes?
#include <stdio.h> int main(){ char c = 0; int i, mask =01, a; for (i=1; i<=5; i++){ a = c|mask; mask = mask<<1; printf("%x", a); } return 0; }
- 1248F
- ABCDE
- 12400
- 124810
4. 124810
(am Ende kommt 10 weil umgerechnet von dezimal zu hexadezimal)
Durch welche Änderung im folgenden Code wird der größte gemeinsame Teiler von a und b ausgegeben?
#include <stdio.h> #include <stdlib.h> int ggT(int, int); int main() { int a, b; scanf("%d%d", &a, &b); printf("ggT von a und b ist: %d", ggT(a, b)); return 0; } int ggT(int a, int b) { int g; if (a == 0) return abs(b); if (b == 0) return abs(a); do { g = a % b; a = b; b = g; } while (b != 0); return abs(g); }
- Zeile 6 durch folgende Anweisung ersetzen:
6 scanf("%d%d", a, b);
- Zeile 2 durch folgende Anweisung ersetzen:
2 #include <math.h>
- Zeile 19 durch folgende Anweisung ersetzen:
19 return abs(a);
- Zeile 16 und 17 durch folgende Anweisungen ersetzen:
16 a = g; 17 g = a;
3. Zeile 19 durch folgende Anweisung ersetzen: 19 return abs(a);
(habe ich nicht gelernt was euklid ist)
Welche Variante ermittelt die Anzahl der möglichen Elemente des Feldes?
int a[] = {23, 42, 0};
- sizeof(a)/sizeof(int);
- a.count();
- sizeof(a);
- count(a);
1. sizeof(a)/sizeof(int);
Welcher Wert wird in der Variable Color gespeichert?
typedef enum color {WHITE, BLACK = -3, RED, YELLOW, GREEN = 1, CYAN, BLUE, MAGENTA}; Color; Color = YELLOW;
- 2
- -1
- 1
- 0
2. -1
Der Wert von a in dezimaler Notation beträgt:
char a = (0x99<<2) ^ (0xaa>>2);
- 590
- 14
- 78
- 32
3. 78
Welcher der folgenden Datentypen kann in einer switch-case Anweisung verwendet werden?
- float
- double
- long double
- enum
4. enum
(switch cases können nämlich nur mit ganzzahligen Datentypen arbeiten)
Welche Ausgabe erzeugt der folgende Aufruf von printf(3)?
~~~
printf(“x: 0x%x%.3f”, 210/7, 210/(float)7);
~~~
- Es wird ein Fehler erzeugt, weil der Formatspezifizierer nicht korrekt ist
- Es wird ein Fehler erzeugt, weil 210/7 den falschen Typ für den gegebenen Formatspezifizierer ist
- x: 0x1e30.000
- x: 0x1e030.000
3. x: 0x1e30.000
Wieviel Speicherplatz belegt die Variable money im folgenden Code? Welchen Wert hat die Variable money?
~~~
#include <stdio.h></stdio.h>
int main () {
enum funds {euro=1, dollar, yuan, pound, yen, cnd, lira} money;
money=dollar;
return 0;
}
~~~
- 4 Bytes, 2
- 28 Bytes, 4
- 4 Bytes, 5
- 28 Bytes, 5
1. 4 Bytes, 2
Welche Datenstruktur wurde bei folgender Code-Zeile benutzt?
~~~
printf(“%d”, foo.bar.baz);
~~~
1.
~~~
struct foo {
int bar;
int baz;
} foo;
2.
struct foo {
int bar.baz;
} foo;
~~~
3.
~~~
struct foo {
union bar {
int baz;
int foo;
int bar;
} bar;
} foo;
~~~
4.
~~~
union {
int bar;
int baz;
} foo;
~~~
**3. struct foo {
union bar {
int baz;
int foo;
int bar;
} bar;
} foo;
**
Welcher der folgenden Datentypen kann nicht in einer switch-case Anweisung verwendet werden?
- enum
- int
- long
- float
4. float
Der Anfangswert einer lokalen, nicht statischen Variable, die ohne Initialisierung definiert wurde, ist:
1.Undefiniert
2.0xFFFFFFFF
3.Abhängig vom Compiler
4.0
1. Undefiniert
Durch welche Änderung im folgenden Code wird der größte gemeinsame Teiler von a und b ausgegeben?
#include <stdio.h> #include <stdlib.h> int ggT(int, int); int main() { int a, b; scanf("%d%d", &a, &b); printf("ggT von a und b ist: %d", ggT(a, b)); return 0; } int ggT(int a, int b) { int g; if (a == 0) return abs(b); if (b == 0) return abs(a); do { g = a / b; a = b; b = g; } while (b != 0); return abs(a); }
- Zeile 6 durch folgende Anweisung ersetzen:
6 scanf("%d%d", a, b);
- Zeile 2 durch folgende Anweisung ersetzen:
2 #include <math.h>
- Zeile 15 durch folgende Anweisung ersetzen:
15 g = a % b;
- Zeile 16 und 17 durch folgende Anweisungen ersetzen:
16 a = g; 17 g = b;
3. Zeile 15 durch folgende Anweisung ersetzen:15 g = a % b;