multiple choice Flashcards

1
Q

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;
}
  1. 4 Bytes, 4
  2. 4 Bytes, 5
  3. 28 Bytes, 4
  4. 28 Bytes, 5
A

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

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

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}};
  1. Zeile 1, 120 Byte
  2. Zeile 2, 40 Byte
  3. Zeile 2, 96 Byte
  4. Zeile 1, 40 Byte
A

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)

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

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

A

4. Keine, der Compiler meldet einen Fehler
(in C dürfen nicht 2 Variablen mit dem selben Namen im selben Gültigkeitsbereich dekalriert werden)

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

Welche Zahl wird in nachfolgendem Programmausschnitt durch printf() ausgegeben?

int a = 027;
int b = 0x17;
printf("Differenz = %d", a-b);
  1. 8
  2. 4
  3. 0
  4. 10
A

3. 0
(027: Oktalzahl -> 23
0x17: Hexadezimal -> 23
23-23 = 0)

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

Gebeben ist eine Funktion mit dem Prototyp:

void doit(char);
  1. void _void = doit(‘a’);
  2. doit(42);
  3. int _void = doit(‘a’);
  4. doit(0xfff);
A

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)

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

Markieren Sie den gültigen Bezeichner, z.B. für Variablen, in der Sprache C.

  1. counter_1
  2. if
  3. 42counter
  4. counter#1
A

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.*

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

Welche Ausgabe erzeugt folgende Anweisung?

printf("%d%d\n", 1&2, 1&&2);
  1. 10
  2. 01
  3. 11
  4. 00
A

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

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

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;
  1. x = 5, y = -11
  2. x = 2, y = -1
  3. x = 1, y = -1
  4. x = 5, y = -6
A

2. x = 2, y = -1
(wichtig beachten das präinkrement, das macht x zu zwei )

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

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;
}
  1. #include <time.h>
  2. #include <stdlib.h>
  3. #include <dos.h>
  4. #include <math.h>
A

1.#include <time.h>
(weil time_t, localtime())

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

Der Wert von x in hexdezimaler Notation beträgt:
~~~
x = (192&raquo_space; 2) & (~(2 &laquo_space;2));
~~~

  1. 0
  2. 48
  3. 30
  4. F7
A

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

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

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;
  1. 32, 20, 20, 12, 12
  2. 32, 32, 32, 32, 32
  3. 0, 0, 0, 0, 0
  4. 32, 32, 32, 32, 0
A

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

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

Welche der folgenden Aussagen über den ‘struct’ treffen zu? (3 richtige Antworten)

  1. Der Zugriff auf ein struct-Element erfolgt mit dem ‘>’ Operator.
  2. Variablen vom struct-Typ können lokal oder global sein.
  3. structs können keine structs enthalten.
  4. struct-Elemente können bei ihrer Definition initialisiert werden.
  5. Wenn ein struct definiert wird, wird der Speicherplatz reserviert.
A

2., 3., 4.
(drei eigentlich weil struct eig structs enthalten kann)

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

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);
}
  1. pix:1234cd r:cd g:34 b:12
  2. pix:ab1234cd r:12 g:34 b:cd
  3. pix:ab1234cd r:cd g:34 b:12
  4. pix:ab1234cd r:34 g:12 b:ab
A

4. pix:ab1234cd r:34 g:12 b:ab

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

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")
}
  1. default
  2. i = 1, i = 2
  3. i = 1
  4. error: switch quantity not an integer
A

**2. i = 1, i = 2 **

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

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)
}
~~~

  1. a=20, a=20
  2. a=10, a=10
  3. a=20, a=10
  4. a=10, a=20
A

3. a=20, a=10
(achte auf globale und lokale Variablen)

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

Ist der folgende Aufruf von printf(3) korrekt?
~~~
printf(“x: %d\n”, 21.0/7);
~~~

  1. Ja, der Typ des auszugebenden Wertes ist eine Ganzzahl
  2. Ja, alle Platzhalter im Formatstring sind mit Werten gesättigt
  3. Nein, die Anzahl der Parameter im Formatstring stimmt nicht
  4. Nein, der Typ des auszugebenden Wertes ist keine Ganzzahl
A

4. Nein, der Typ des auszugebenden Wertes ist keine Ganzzahl
(weil der Wert implizit zum double wurde)

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

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;
}
  1. Keine, weil scanf(3) call by reference erwartet
  2. 42
  3. 0
  4. 1
A

4. 1
(weil der Rückgabewert von scanf gespeichert und nicht die Benutzereingabe, sonst müsste da stehen:
~~~
int a;
scanf(“%d”, &a);
```)

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

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;
}
  1. 1248F
  2. ABCDE
  3. 12400
  4. 124810
A

4. 124810
(am Ende kommt 10 weil umgerechnet von dezimal zu hexadezimal)

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

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);
}
  1. Zeile 6 durch folgende Anweisung ersetzen: 6 scanf("%d%d", a, b);
  2. Zeile 2 durch folgende Anweisung ersetzen:2 #include <math.h>
  3. Zeile 19 durch folgende Anweisung ersetzen:19 return abs(a);
  4. Zeile 16 und 17 durch folgende Anweisungen ersetzen:16 a = g; 17 g = a;
A

3. Zeile 19 durch folgende Anweisung ersetzen: 19 return abs(a);
(habe ich nicht gelernt was euklid ist)

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

Welche Variante ermittelt die Anzahl der möglichen Elemente des Feldes?

int a[] = {23, 42, 0};
  1. sizeof(a)/sizeof(int);
  2. a.count();
  3. sizeof(a);
  4. count(a);
A

1. sizeof(a)/sizeof(int);

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

Welcher Wert wird in der Variable Color gespeichert?

typedef enum color {WHITE, BLACK = -3, RED, YELLOW, GREEN = 1, CYAN, BLUE, MAGENTA}; Color;
Color = YELLOW;
  1. 2
  2. -1
  3. 1
  4. 0
A

2. -1

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

Der Wert von a in dezimaler Notation beträgt:

char a = (0x99<<2) ^ (0xaa>>2);
  1. 590
  2. 14
  3. 78
  4. 32
A

3. 78

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

Welcher der folgenden Datentypen kann in einer switch-case Anweisung verwendet werden?

  1. float
  2. double
  3. long double
  4. enum
A

4. enum
(switch cases können nämlich nur mit ganzzahligen Datentypen arbeiten)

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

Welche Ausgabe erzeugt der folgende Aufruf von printf(3)?
~~~
printf(“x: 0x%x%.3f”, 210/7, 210/(float)7);
~~~

  1. Es wird ein Fehler erzeugt, weil der Formatspezifizierer nicht korrekt ist
  2. Es wird ein Fehler erzeugt, weil 210/7 den falschen Typ für den gegebenen Formatspezifizierer ist
  3. x: 0x1e30.000
  4. x: 0x1e030.000
A

3. x: 0x1e30.000

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

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;
}
~~~

  1. 4 Bytes, 2
  2. 28 Bytes, 4
  3. 4 Bytes, 5
  4. 28 Bytes, 5
A

1. 4 Bytes, 2

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

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

A

**3. struct foo { union bar { int baz; int foo; int bar; } bar; } foo; **

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

Welcher der folgenden Datentypen kann nicht in einer switch-case Anweisung verwendet werden?

  1. enum
  2. int
  3. long
  4. float
A

4. float

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

Der Anfangswert einer lokalen, nicht statischen Variable, die ohne Initialisierung definiert wurde, ist:

1.Undefiniert
2.0xFFFFFFFF
3.Abhängig vom Compiler
4.0

A

1. Undefiniert

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

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);
}
  1. Zeile 6 durch folgende Anweisung ersetzen:6 scanf("%d%d", a, b);
  2. Zeile 2 durch folgende Anweisung ersetzen:2 #include <math.h>
  3. Zeile 15 durch folgende Anweisung ersetzen:15 g = a % b;
  4. Zeile 16 und 17 durch folgende Anweisungen ersetzen:16 a = g; 17 g = b;
A

3. Zeile 15 durch folgende Anweisung ersetzen:15 g = a % b;

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

Welche Ausgabe erzeugt das folgende Code-Fragment, wenn der Benutzer ‘hello’ über die Tastatur eingibt?

#include <stdio.h>

int main (void) {
    int a = scanf("%d", &a);
    printf("%d", a);
    return 0;
}
  1. 42
  2. Keine, weil scanf(3) call by reference erwartet
  3. 1
  4. 0
A

4. 0

31
Q

Wie oft wird “Programmierung in C” ausgegeben?
~~~
int main() {
int x;
for (x = -1; x <= 10; x++) {
if(y < 5)
continue;
else
break;
printf(“Programmierung in C”)
}
}
~~~

  1. 12
  2. 5
  3. 10
  4. 0
A

4. 0
(break ist vor printf also wird das programm abgebrochen)

32
Q

Wie lautet die Ausgabe des folgenden Codes?
~~~
#include <stdio.h></stdio.h>

int reverse(int no) {
if(no > 5)
return 0;
else
printf(“%d, “, no++);
reverse (no);
return 0;
}
int main() {
int no = 0;
reverse(no);
return 0;
}
~~~

  1. 0, 1, 2, 3, 4, 5, 6,
  2. 0, 1, 2, 3, 4, 5,
  3. 0, 0, 0, …
  4. 0, 1, 2, 3, 4,
A

2. 0, 1, 2, 3, 4, 5,

33
Q

Wird die Eingabe bei folgendem Code korrekt funktionieren?

int main() {
    scanf("%d %c", &x, &y);
    int x;
    char y;
}
  1. Nein, scanf kann nur einzelne Variablen einlesen
  2. Nein, es müssen die konkreten Variablen übergeben werden (x und y statt &x und &y)
  3. Ja, die Werte werden korrekt in x und y gespeichert
  4. Nein, x und y sind beim Aufruf von scanf unbekannt
A

4. Nein, x und y sind beim Aufruf von scanf unbekannt

34
Q

Welche Ausgabe erzeugt das folgende Programm?

#include <stdio.h>

int main() {
    union a {
        int i;
        char ch[2];
    };
    union a u = {0};
    u.ch[0] = 2;
    u.ch[1] = 1;
    printf("%d, %d, %d\n", u.ch[0], u.ch[1], u.i);
    return 0;
}
  1. 2, 1, 3
  2. 2, 1, 258
  3. 1, 2, 258
  4. 2, 1, 2
A

2. 2, 1, 258

35
Q

Wie oft wird die folgende Schleife durchlaufen?

#include <stdio.h>

int main(){
    unsigned char i = 0;
    while (i++ != 0)
        printf("%u ", i);
    return 0;
}
  1. kein Mal
  2. 255 Mal
  3. ein Mal
  4. unendlich Mal
A
  1. 255 Mal
36
Q

Welcher Wert wird in der Variable Color gespeichert?

typedef enum color {WHITE, BLACK = -3, RED, YELLOW, GREEN = 1, CYAN, BLUE, MAGENTA}; Color;
Color= WHITE;
  1. 0
  2. 1
  3. 2
  4. -1
A

1. 0

37
Q

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=lira;
    return 0;
}
  1. 28 Bytes, 5
  2. 28 Bytes, 4
  3. 4 Bytes, 5
  4. 4 Bytes, 6
A

4. 4 Bytes, 6

38
Q

Welche Variante ermittelt die Anzahl der möglichen Elemente des Feldes?

unsigned a[] = {23, 42};
  1. count (a);
  2. sizeof(a);
  3. sizeof(a)/sizeof(unsigned);
  4. a.count();
A

3. sizeof(a)/sizeof(unsigned);

39
Q

Sie schreiben ein Testprogramm app.c. In diesem Programm implementieren Sie Funktionen mit den folgenden Prototypen:
~~~
static int foo(int);
void bar(int);
~~~
Weiterhin implementieren Sie die folgende main-Funktion in app.c:
~~~
int main() {
bar(foo(42));
return 42;
}
~~~

Wird es funktionieren?
1. Nein, statische Funktion können nur aus statischen Funktionen aufgerufen werden, main muss also auch static sein.
2. Nein, eine statische und eine nicht-statische Funktion können nicht geschachtelt aufgerufen werden
3. Ja, die statische Funktion foo ist zwar static, wird aber aus dem gleichen Modul (‘translation unit’) heraus benutzt.
4. Ja, statische Funktionen können immer direkt aus der main-Funktion heraus aufgerufen werden.

A

3. Ja, die statische Funktion foo ist zwar static, wird aber aus dem gleichen Modul (‘translation unit’) heraus benutzt.

40
Q

Welche Ausgabe erzeugt der folgende Aufruf von printf(3)?
~~~
printf(“%%d %d %%d %d”, 42, 23);
~~~
1. Es wird ein Fehler erzeugt, weil nicht für alle Platzhalter im Formatspezifizierer Werte vorhanden sind
2. Es wird ein Fehler erzeugt, weil der Formatspezifizierer syntaktisch nicht korrekt ist
3. %d 42 %d 23
4. 0 42 0 23

A

3. %d 42 %d 23
(%%d = %d als Ausgabe)

41
Q

Welche Ausgabe erzeugt das folgende Code-Fragment, wenn der Benutzer ‘hello’ über die Tastatur eingibt?
~~~
#include <stdio.h></stdio.h>

int reverse(int no) {
if(no == 0)
return 0;
else
printf(“%d, “, no);
reverse (–no);
return 0;
}

int main () {
int no = 5;
reverse(no);
return 0;
}
~~~

  1. 5, 4, 3, 2, 1, 0,
  2. 1, 2, 3, 4, 5,
  3. 5, 4, 3, 2, 1,
  4. 5, 5, 5, ….
A

3. 5, 4, 3, 2, 1,

42
Q

Welche Ausgabe erzeugt das folgende Programm?
~~~
#include <stdio.h></stdio.h>

int main () {
int x = 3;
int y = 5;
const int result = 0;
result = x * y;
printf(“%d * %d = %d”, x, y, result)
return 0;
}
~~~

  1. Keine, der Compiler meldet einen Fehler
  2. 3 * 5 = 15
  3. Keine, der Linker meldet einen Fehler
  4. Keine das Programm stürzt ab
A

1. Keine, der Compiler meldet einen Fehler

43
Q

Wie lautet die Ausgabe des folgenden Codes?
~~~
#include <stdio.h></stdio.h>

int reverse(int no) {
if(no == 0)
return 0;
else
printf(“%d, “, –no);
reverse (–no);
return 0;
}
int main() {
int no = 10;
reverse(no);
return 0;
}
~~~

  1. 10, 10, 10, …
  2. 9, 8, 7, 6, 5, 4, 3, 2, 1,
  3. 9, 7, 5, 3, 1,
  4. 8, 6, 4, 2,
A

3. 9, 7, 5, 3, 1,

44
Q

Welche Werte haben x und y nach der Ausführung folgender arithmetischen Ausdrücke?
~~~
int x = 4 * 7 % 5;
int y = 3 * x++ + 5 * 6 % 7;
~~~

  1. 3, 11
  2. 4, 12
  3. 3, 11
  4. 4, 11
A

4. 4, 11

45
Q

Welche Ausgabe erzeugt folgende Anweisung?
~~~
printf(“%d%d\n”, 1&3, 1&&3)
~~~
1. 11
2. 00
3. 01
4. 10

A
  1. 11
46
Q

Wie oft wird der Rumpf der Schleife durchlaufen?
~~~
int i = 1;
do {
i«=2;
i»=1;
} while (i<16);
~~~

  1. Endlosschleife
  2. 16
  3. 4
  4. 0
A

3. 4

47
Q

Was ist die Ausgabe des folgenden Codes?

#include <stdio.h>

int main() {
    float d=2.25;
    printf("%e,", d);
    printf("%f,", d);
    printf("%g,", d);
    printf("%E", d);
    return 0;
}
  1. 2.2e, 2.25f, 2.00, 2.25
  2. 2.250000e+000, 2.250000, 2.25, 2.25000E+000
  3. Error
  4. 2.2, 2.50, 2.50, 2.5
A

2. 2.250000e+000, 2.250000, 2.25, 2.25000E+000

48
Q

Wie oft wird “Programmierung in C” ausgegeben?
~~~
int main() {
int x;
for (x = -1; x <= 10; x++) {
if(y < 5)
break;
else{
printf(“Programmierung in C\n”);
}
}
}
~~~

  1. 7
  2. 0
  3. 6
  4. 12
A

1. 7
(y ist gar nicht deklariert kann nicht stimmen)

49
Q

Wie oft wird der Rumpf der Schleife durchlaufen?

int i = 1;
do {
    i<<=2;
    i>>=1;
} while (i<16);
  1. Endlosschleife
  2. 16
  3. 4
  4. 0
A

3. 4

50
Q

Wie lautet die Ausgabe von printf im folgenden Code?
~~~
#include <stdio.h></stdio.h>

union date {
unsigned char day, month;
unsigned year;
};

int main(){
union date birth;
birth.day = 28;
birth.month = 6;
birth.year = 1998;
printf(“Year: %u, Month %u, Day: %u\n”, birth.year, birth.month, birth.day);
return 0;
}
~~~

  1. Year: 1998, Month: 6, Day: 28
  2. Year: 1998, Month: 6, Day: 6
  3. Year: 1998, Month: 206, Day: 206
  4. Year: 1998, Month: 28, Day: 98
A

3. Year: 1998, Month: 206, Day: 206

51
Q

Welche Zeile enthält einen Syntaxfehler?

  1. a = b+= ++c;
  2. a = b++ =+c;
  3. a = b+++c;
  4. a += b+= ++c;
A

1. a = b+= ++c;
(müsste eigentlich nummer zwei sein)

52
Q

Welche Möglichkeiten gibt es, mehrere Werte (z.B. Zeit und Messwert) einer Funktion zurückzugeben? (2 richtige Antworten)

  1. Werte in einem komplexen Datentyp ‘verpacken’ und diesen mit return zurückgeben
  2. Das Schlüsselwort return mit mehreren Werten benutzen. Bsp.: return 42,23;
  3. call by reference
  4. Das Schlüsselwort return mehrfach benutzen. Bsp.: return 42; return 23;
A

1. Werte in einem komplexen Datentyp ‘verpacken’ und diesen mit return zurückgeben
3. call by reference

(1. erkärung: z.B mit struct oder so)
(2. Zeiger oder Referenzen als Funktionsparameter verwendet. Die Funktion kann dann die Werte, auf die diese zeiger oder Referenten verweisen, direkt ändern)

53
Q

Wird die Eingabe bei folgendem Code korrekt funktionieren?

int main() {
    scanf("%d %c," &x, &y);
    int x;
    char y;
}
  1. Nein, es müssen die konkreten Variablen übergeben werden (x und y, statt &x und &y).
  2. Ja, die Werte werden korrekt in x und y gespeichert.
  3. Nein, scanf kann nur einzelne Variablen einlesen.
  4. Nein, x und y sind beim Aufruf von scanf unbekannt.
A

4. Nein, x und y sind beim Aufruf von scanf unbekannt.

54
Q

Welcher Wert wird in der Variable Color gespeichert?

typedef enum color {WHITE, BLACK = -3, RED, YELLOW, GREEN = 1, CYAN, BLUE, MAGENTA}; Color;
Color = BLUE;
  1. 2
  2. 0
  3. -1
  4. 3
A

4. 3

55
Q

Was ist die Ausgabe des folgenden Codes auf der Konsole?

long i = 1;
switch(i) {
    case 1: printf("i = 1");
    case 2: printf(", i = 2");
    default: printf(", default")
}

1., default
2.i = 1, i = 2, default
3.i = 1
4.error: switch quantity not an integer

A

2.i = 1, i = 2, default

56
Q

Welche Ausgabe erzeugt das folgende Code-Fragment, wenn der Benutzer 5 über die Tastatur eingibt?

#include <stdio.h>

int main(){
    int i;
    printf("%d\n", scanf("%d", &i));
    return 0;
}
  1. 1
  2. 5
  3. 0
  4. Keine, weil scanf call by reference erwartet
A

1. 1
(return bzw ausgabe von scanf)

57
Q

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}, {"Zoe Zorro", 1010, 4.0}};
  1. Zeile 2, 144 Byte
  2. Zeile 2, 48 Byte
  3. Zeile 1, 128 Byte
  4. Zeile 1, 40 Byte
A

1. Zeile 2, 144 Byte

58
Q

Welche Ausgabe erzeugt folgende Anweisung?
~~~
printf(“%d%d\n”, 1&&2, 1&2);
~~~

  1. 11
  2. 00
  3. 01
  4. 10
A

4. 10

59
Q

Welche Ausgabe erzeugt das folgende Programm?
~~~
#include <stdio.h></stdio.h>

int main() {
union a {
int i;
char ch[2];
};
union a u;
u.i = 520;
u.ch[0] = 3;
printf(“%d, %d, %d\n”, u.ch[0], u.ch[1], u.i);
return 0;
}
~~~
1. 3, 0, 520
2. 3, 2, 515
3. 3, 2, 5
4. 2, 3, 520

A

2. 3, 2, 515

60
Q

In der Datei lib.h finden Sie die folgenden Prototypen:
~~~
static int foo(int);
void bar(int);
~~~
Die Funktionen sind in der Datei lib.c implementiert. Sie schreiben ein Testprogramm app.c:
~~~
#include “lib.h”

int main() {
bar(foo(42));
return 42;
}
~~~
Wird es funktionieren?
1. Ja, bar erwartet einen Parameter vom Typ int, foo liefert diesen.
2. Nein, eine statische und eine nicht-statische Funktion können nicht geschachtelt aufgerufen werden.
3. Ja, geschachtelte Funktionsaufrufe sind möglich, wenn die Prototypen der Funktionen vorhanden sind.
4. Nein, die Funktion foo ist im Testprogramm nicht sichtbar.

A

4. Nein, die Funktion foo ist im Testprogramm nicht sichtbar.

61
Q

Welche Datenstruktur wurde bei folgender Code-Zeile benutzt?
~~~
Welche Datenstruktur wurde bei folgender Code-Zeile benutzt?
~~~
1:
~~~
struct foo {
struct bar {
int bar;
} baz;
} foo;
~~~
2:
~~~
struct foo {
int bar;
int baz;
} foo;
~~~
3:
~~~
union {
union {
int baz;
} bar;
} foo;
~~~
4:
~~~
struct foo {
int bar.baz;
} foo;
~~~

falsch abgeschriebennnnnn

A

3:
~~~
union {
union {
int baz;
} bar;
} foo;
```

62
Q

Welche Ausgabe gibt folgende Code-Fragment?
~~~
#include <stdio.h></stdio.h>

int foo() {
return 23;
return 42;
}

int main(){
printf(“%d%d”, foo(), foo())
return 0;
}
~~~

  1. 4242
  2. Keine, es tritt ein Compiler-Fehler auf
  3. 2342
  4. 2323
A

4. 2323
(letzter return statement ungültig)

63
Q

Sie wollen das Programm wie folgt compilieren und linken:
~~~
~> cc -c prog.c
~> prog.o -o prog
~~~
Was passiert?
~~~
int tujetztwas(void);
int main() {
tujetztwas();
return 0;
}
~~~

  1. Ein Linker-Fehler tritt auf, weil der Rumpf von tujetztwas fehlt
  2. Ein Compiler-Fehler tritt aud, weil der Rumpf con tujetztwas fehlt
  3. Das Programm läßt sich compilieren und linken
  4. Ein Compiler-Fehler tritt aud, weil die Zeile include <stdio.h> fehlt
A

1. Ein Linker-Fehler tritt auf, weil der Rumpf von tujetztwas fehlt

Kompilierung (cc -c prog.c):

Der Befehl cc -c prog.c kompiliert den Code in prog.c und erstellt eine Objektdatei prog.o. Während dieser Phase wird nur die Syntax und der Code überprüft. Da der Prototyp von tujetztwas vorhanden ist, gibt es keinen Kompilierungsfehler, auch wenn der Rumpf der Funktion fehlt.

Linken (prog.o -o prog):

Der Befehl prog.o -o prog versucht, die Objektdatei prog.o in eine ausführbare Datei namens prog zu linken. Da der Rumpf von tujetztwas fehlt, wird der Linker nicht in der Lage sein, die Funktion zu finden, was zu einem Linker-Fehler führt.

64
Q

Welche Ausgabe erzeugt das folgende Programm?
~~~
#include <stdio.h></stdio.h>

int foo() {return !1;}
int bar() {return foo();}

int main () {
if (bar()) {
printf(“yo”);
}else{
printf (“ney”);
}
}
~~~

  1. yo
  2. Keine Ausgabe
  3. Ein Compiler-Fehler wird gemeldet
  4. ney
A

4. ney
bar () gibt null zurück weil kein retrun statement deswegen gehts auf else

65
Q

Für die Darstellung der IP4-Adressen wird normalerweise die Oktettenschreibweise verwendet. Jede IP4-Adresse kann auch mit einer 32-Bit int-Zahl dargestellt werden.
Wenn die folgende typedef eine IP4-Adresse darstellt, welche der folgenden Definitionen berechnet die korrespondierende IP4-Adresse als eine int-Zahl?
oc3 bezeichnet das höchstwertigste und oc0 das niederwertigste Oktett.
~~~
typedef struct ipAdd{unsigned oc3, oc2, oc1, oc0;} ipAdd;
~~~

1:
~~~

unsigned add1_u = (add1.oc3«24) + (add1.oc2«16) + (add1.oc1«8) + add1.oc0;

2:

unsigned add1_u = (add1.oc0«24) + (add1.oc1«16) + (add1.oc2«8) + add1.oc3;
~~~

3:
~~~
unsigned add1_u = add1.oc3 + add1.oc2 + add1.oc1 + add1.oc0;
~~~

4:
~~~
unsigned add1_u = (add1.oc0pow(2,24)) + (add1.oc1pow(2,16)) + (add1.oc2*pow(2,8)) + add1.oc3;
~~~

A

**1:
~~~

unsigned add1_u = (add1.oc3«24) + (add1.oc2«16) + (add1.oc1«8) + add1.oc0;

```**

66
Q

Wie oft wird die folgende Schleife durchlaufen?
~~~
#include <stdio.h></stdio.h>

int main(){
unsigned char i = -1;
while (i++ != 0)
printf(“%u “, ++i);
return 0;
}
~~~

  1. 2^(sizeof(int)*8)/2
  2. kein Mal
  3. unendlich Mal
  4. ein Mal
A

2. kein Mal
(Lösung war anders aber ich sage ist unendlich)

67
Q

Was ist die Ausgabe des folgenden C-Codes?
~~~
#include <stdio.h></stdio.h>

union color {
struct RGB {unsigned char red, green, blue;} rgb;
unsigned hex;
};
typedef union color color;

int main() {
color pix;
pix.hex=0xff56dbc1;
printf(“pix: %x red: %x green: %x blue: %x\n”, pix.hex, pix.rgb.red, pix.rgb.green, pix.rgb.blue);
return 0;
}
~~~

  1. pix: c1db56 red: c1 green: db blue: 56
  2. pix: ff56dbc1 red: c1 green: db blue: 56
  3. pix: ff56dbc1 red: 56 green: db blue: c1
  4. pix: 56dbc1 red: c1 green: db blue: 56
A

1. pix: c1db56 red: c1 green: db blue: 56

68
Q

Welche Anweisung liefert eine mathematisch korrekte Rundung der Zahl f dar?
~~~
float f = 3.1415;
int a;
~~~

1:
~~~

a = (int) (f+0.5);

2:

a = (int) (f+5);

3:

a = (int) f + 0.5;

4:

a = (int) ((int)f + 0.5);
~~~

A

**1:
~~~

a = (int) (f+0.5);

```**

69
Q

Welche Möglichkeiten gibt es, um die Sichtbarkeit von Funktionen zu verändern?

  1. Die Sichtbarkeit von Funktionen kann nicht verändert werden
  2. .Das Schlüsselwort static schränkt die Sichtbarkeit auf das eigene Modul (‘translation unit’) ein.
  3. Funktionen sind generell nur in der eigenen Klasse sichtbar.
A

1. Die Sichtbarkeit von Funktionen kann nicht verändert werden
(Ich sage es ist 2 macht auch mehr sinn das waren die Lösungen)

70
Q

Welche Aussagen treffen zu? (2 richtige Antworten)
1. C ist eine objektorientierte Programmiersprache.
2. Die Größe des Datentyps int, also das Ergebnis von sizeof(int), ist compiler-abhängig.
3. C ist eine imperative Programmiersprache.
4. void test(); und void test(void); bedeuten dasselbe.

A

2. Die Größe des Datentyps int, also das Ergebnis von sizeof(int), ist compiler-abhängig. (können verschiedene Byte-größen haben)
3. C ist eine imperative Programmiersprache.

Der Begriff “imperativ” bezieht sich auf einen Programmierstil, bei dem Anweisungen (Befehle) verwendet werden, um den Zustand eines Programms zu ändern. In imperativen Programmiersprachen wird der Fokus darauf gelegt, wie ein Programm seine Aufgaben ausführt, d. h., es wird genau beschrieben, welche Schritte zur Lösung eines Problems unternommen werden.

71
Q

Der Wert von x in dezimaler Notation beträgt:
~~~
int x = (160&raquo_space; 0x2) ^ (0x11 &laquo_space;0x2);
~~~

  1. 85
  2. 108
  3. 4
  4. 116
A

2. 108

72
Q

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[32]; unsigned int matr_nr; float grade;} student;
student s[] = {{“Max Müller”, 1000, 1.7}, {“Marie Marx”, 1001, 1.3}, {“Flora Felix”, 1001, 2.7}};
~~~

  1. Zeile 1, 120 Byte
  2. Zeile 2, 40 Byte
  3. Zeile 2, 120 Byte
  4. Zeile 1, 40 Byte
A

3. Zeile 2, 120 Byte

73
Q

Wie lautet die Ausgabe von printf im folgenden Code?
~~~
#include <stdio.h></stdio.h>

union date {
unsigned char day, month;
unsigned year;
};

int main(){
union date birth;
birth.day = 15;
birth.month = 7;
birth.year = 2001;
printf(“Year: %u, Month %u, Day: %u\n”, birth.year, birth.month, birth.day);
return 0;
}
~~~

  1. Year: 1998, Month: 15, Day: 15
  2. Year: 1998, Month: 7, Day: 7
  3. Year: 2001, Month: 209, Day: 209
  4. Year: 2001, Month: 7, Day: 15
A

3. Year: 2001, Month: 209, Day: 209

74
Q

Sie sind von einem Hersteller beauftragt, eine Bibliothek mathematischer Funktionen zu entwickeln.
Für die öffentliche Schnittstelle der Bib stellen Sie die Funktionsprototypen in der Header-Datei (*.h) bereit, die Implementierung der Funktionen wird als Objektcode ausgeliefert.
Sie implementieren aber auch interne Hilfsfunktionen, die der Benutzer nicht (so einfach ;) ) aufrufen können soll.
Wählen Sie den besten Ansatz.

  1. Sie führen die Prototypen der internen Funktionen nicht in der Header-Datei auf.
  2. Da C keinerlei Mechanismen zur Steuerung der Sichtbarkeit kennt, können Sie nichts machen.
  3. Funktionen können mit _ (Unterstrich) annotiert werden und sind dann nach Konvention intern.
  4. Sie deklarieren die internen Funktionen als static.
A

4. Sie deklarieren die internen Funktionen als static.
Erklärung der Optionen:
Sie führen die Prototypen der internen Funktionen nicht in der Header-Datei auf.

Das ist korrekt, aber es reicht nicht aus, um sicherzustellen, dass die Funktionen intern bleiben. Wenn die Funktionen im Quellcode sichtbar sind, kann der Benutzer sie trotzdem aufrufen, wenn er den Quellcode hat.
Da C keinerlei Mechanismen zur Steuerung der Sichtbarkeit kennt, können Sie nichts machen.

Das ist falsch. C bietet Möglichkeiten zur Steuerung der Sichtbarkeit, insbesondere durch das static-Schlüsselwort.
Funktionen können mit _ (Unterstrich) annotiert werden und sind dann nach Konvention intern.

Das ist nicht korrekt. Die Verwendung von Unterstrichen ist eine Konvention, aber es gibt keine durchsetzbare Regel in C, die sicherstellt, dass solche Funktionen intern sind.
Sie deklarieren die internen Funktionen als static.

Richtig. Wenn eine Funktion als static deklariert wird, ist sie nur innerhalb der Datei sichtbar, in der sie definiert wurde. Das bedeutet, dass Benutzer der Bibliothek nicht auf diese internen Funktionen zugreifen können.