Quizze Flashcards

1
Q

Welche der folgenden Aussagen beschreibt den Linker (Binder)? (2 richtige Antworten)

  1. Der Linker wandelt die symbolischen Adressen der Funktionen und Variablen der Module in Speicheradressen um.
  2. Der Linker fügt Objektdateien und Bibliotheken zu einer ausführbaren Datei zusammen
  3. Der Linker optimiert die Zugriffe aus einem C-Modul auf globale static-Variablen eines anderen C-Moduls.
  4. Der Linker übersetzt den Quellcode, wodurch eine Objektdatei (*.obj oder *.o) erzeugt wird.
A

1., 2.

1.Dies beschreibt eine der Hauptaufgaben des Linkers, nämlich die Auflösung von symbolischen (oder logischen) Adressen zu tatsächlichen Speicheradressen, die im finalen ausführbaren Programm verwendet werden.

2.Der Linker nimmt die kompilierten Objektdateien (.o oder .obj) und ggf. Bibliotheken und fügt sie zu einer einzelnen ausführbaren Datei zusammen.

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

Welches Ergebnis liefert die folgende Operation:

4 &laquo_space;2; 4&raquo_space; 2;

  1. 32, 0
  2. 16, 1
  3. 2, 8
  4. 32, 1
A

2.

In der Linksverschiebung werden die Bits nach links geschoben, und die freigewordenen Stellen rechts werden mit Nullen aufgefüllt. Wenn dabei keine Bits aus dem linken Ende hinausgeschoben werden (was bei einer ausreichend großen Bitbreite der Fall ist), gehen keine Informationen verloren.

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

Ausgabe der Arithmetischen Ausdrücke

x = 5 * 9 % 4

y = - 3 * ++x + 3 * 18 % 7

  1. x = 5 , y = -6
  2. x = 1 , y = -1
  3. x = 5 , y = -11
  4. x = 2 , y = -1
A

4.
auf dekrement achten

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

Welche der nachfolgenden Definitionen ist falsch?

  1. long int a;
  2. double int b;
  3. unsigned int c;
  4. short int c;
A

2.

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

Welche Zeile enthält einen Syntaxfehler?

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

4.

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

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

  1. 0.
  2. Abhängig von Compiler.
  3. Undefiniert.
A

3. Undefiniert

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

Was ist die Ausgabe des folgenden Codes?

#include <stdio.h>
int fun(int a)
{
    return a*a;
}
int main(int argc, char *argv[]){ 
        int k=10;
        printf("k=%d\n", fun(fun(fun(k))));
        return 0;}
  1. 1000000
  2. 1000
  3. 100
  4. 100000000
A

4. 100000000

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

Gegeben sei folgender Code. Markieren Sie korrekte Aussagen. (2 richtige, 2 falsche)

#include <stdio.h>
int f(double d){    
    return 7;
} 
int main(){
    printf("%i", f(1.5f));
    return 0;
}

Für jede Aussage muss entschieden werden: [richtig] oder [falsch]

richtig, falsch:
1. Das Programm gibt eine 7 an das Betriebssystem zurück.
2. Das Programm erzeugt eine 7 als Ausgabe.
3. Das Programm gibt eine 0 an das Betriebssystem zurück.
4. Der Code compiliert nicht.

A

richtig:
2. Das Programm erzeugt eine 7 als Ausgabe.
3. Das Programm gibt eine 0 an das Betriebssystem zurück.

falsch:
1. Das Programm gibt eine 7 an das Betriebssystem zurück.
4. Der Code compiliert nicht.

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

Wie oft wird „Programmierung in C“ ausgegeben?

int x;
for(x=-1; x<=10; x++){
    if(x < 5)
        continue;
    else
        break;
printf("Programmierung in C");
}
  1. 0
  2. 5
    3.12
    4.10
A

1. 0

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

Welche Ausgabe erzeugt das folgende Programm?

#include <stdio.h>

int func(){
    static int s;
    s+=2;
    int i=2;
    return s-i;
}
int main(){
    for(int i = 0; i <= 3; i++)
          printf("%d, ", func());
    return 0;
}
  1. 0, 2, 4,
  2. 0, 0, 0,
  3. 0, 0, 0, 0,
  4. 0, 2, 4, 6,
A

4. 0, 2, 4, 6,

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

In welcher Stufe des C-Programmierens wird die folgende Quelltextzeile #include <stdio.h> durch den Inhalt von stdio.h ersetzt?</stdio.h>

  1. bei der Ausführung
  2. beim Präprozessing
  3. beim Editieren
  4. beim Linken
A

**
2. beim Präprozessing
Präprozessing:

Makros werden ersetzt und Direktiven wie #include und #define werden verarbeitet**

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

Wie sieht die Ausgabe des printf-Befehls im folgenden Code aus?

int i=0;
for(; i<=5; i++);
printf("%d ", i);
  1. 6
  2. 0, 1, 2, 3, 4
  3. 5
  4. 0, 1, 2, 3, 4, 5
A

1. 6

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

Welche Aussagen treffen auf den Code zu:

#include <stdio.h>
void swappy(int a, int b){
      int tmp = a;
      a = b;
      b = tmp;
  }

int main(int argc, char **argv) {
      int x = 42;
      int y = 23;
      swappy(x, y);
      printf("%d %d\n", x, y);
  }
  1. Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by reference’ übergeben. Die Ausgabe auf dem Terminal lautet ‘23 42’.
  2. Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by value’ übergeben. Die Ausgabe auf dem Terminal lautet ‘23 42’.
  3. Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by reference’ übergeben. Die Ausgabe auf dem Terminal lautet ‘42 23’.
  4. Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by value’ übergeben. Die Ausgabe auf dem Terminal lautet ‘42 23’.
A

3. Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by reference’ übergeben. Die Ausgabe auf dem Terminal lautet ‘42 23’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
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("\ta = %d\n",a);
}
  1. a = 20, a=10
  2. a = 10, a=10
  3. a = 20, a=20
  4. a = 10, a=20
A

1. a = 20, a=10

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

Die Ausgabe der folgenden Schleife lautet:

int i = 6;                
while(i-- >= 0)                 
     printf("%d,", i--);
  1. 5, 3, 1,
  2. 5, 3, 1, -1,
  3. 6, 5, 4, 3, 2, 1, 0,
  4. 6, 4, 2, 0,
A

**2. 5, 3, 1, -1, **

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

Welchen Fehler erzeugt nachfolgender Code?

struct birthday{
    char name[20];
    struct birthday *b;
};
  1. Linker-Fehler.
  2. Fehler bei der Deklaration der Struktur birthday
  3. Kein Fehler.
A

3. Kein Fehler

17
Q

Wie lautet die Ausgabe von printf im folgenden Code?

#include <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: 28, Day: 98
  2. Year: 1998, Month: 206, Day: 206
  3. Year: 1998, Month: 6, Day: 6
  4. Year: 1998, Month: 6, Day: 28
A

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

18
Q

Wie lautet die Ausgabe des folgenden Codes?

enum noten {gut, befriedigend, ausreichend};
enum noten stud1, stud2, stud3;
stud1 = gut;
stud2 = ausreichend;
stud3 = befriedigend;
printf("%d %d %d\n", stud1, stud2, stud3);
  1. 1, 2, 3
  2. 1, 3, 2
  3. 0, 2, 1
  4. 0, 1, 2
A

3. 0, 2, 1

19
Q

Nach der Ausführung des folgenden Codes beträgt ist der Inhalt von v.a:

int main(){
    union var {
        int a, b;} v;
    v.a=10;
    v.b=20;
return 0;
}
  1. 0
  2. 20
  3. 30
  4. 10
A

2. 20

20
Q

Welcher der folgenden Aussagen ist richtig?

  1. Arrays können nicht als Übergabetyp von Funktionen verwendet werden.
  2. Arrays können nicht als Rückgabetyp von Funktionen verwendet werden.
  3. Arrays können nicht als Übergabe- und Rückgabetyp von Funktionen verwendet werden.
  4. Arrays können als Übergabe- und Rückgabetyp von Funktionen verwendet werden.
A

2. Arrays können nicht als Rückgabetyp von Funktionen verwendet werden.

21
Q

Wieviel Speicherplatz belegt die Variable eye im folgenden Code?

enum color {blue, brown, green, hazel, amber, silver, black} eye;

  1. 7 Bytes
  2. 28 Bytes
  3. 4 Bytes
  4. 14 Bytes
A

3. 4 Bytes

22
Q

Welche der folgenden Aussagen ist richtig? (2 richtige Antworten)

union a{
int i;
double dbl;
};
union a u1 = {512};
union a u2 = {512, 100};

Zur Initialisierung von dbl soll der ´.´ Operator verwendet werden.

´{ }´ Operator kann zur Initialisierung jedes belibigen Elementes einer Union verwendet werden.

Die Initialisierung von u1 ist nicht sinnvoll.

Die Initialisierung von u2 ist nicht sinnvoll.

A
23
Q

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

Bitte wählen Sie maximal 3 der 6 Antworten!

Mit struct können neue Datentypen definiert werden.

Wenn ein struct definiert wird, wird der Speicherplatz reserviert.

Variablen vom struct-Typ können lokal oder global sein.

Der Zugriff auf ein struct-Element erfolgt mit dem ‘>’ Operator.

structs können keine structs enthalten.

struct-Elemente können bei der Deklaration mit Werten initialisiert werden.

A
24
Q

Welche der folgenden Aussagen ist wahr?

Der Wertebereich einer enum-Liste umfasst die Ganz- und Gleitkommazahlen.

Bei der Definition einer enum-Liste wird dem ersten Element der Wert 0 zugewiesen.

Die Wortbreite einer enum-Aufzählungsvariable kann vom Entwickler festgelegt werden.

Der numerische Wert von enum-Elementen muss explizit definiert werden.

A
25
Q

Die int-Zeiger p1 und p2 zeigen auf die int-Variablen a und b. Dann wird durch folgende Anweisung:

printf(“%d\n”, *(p1 + p2));

der Compiler eine Fehlermeldung ausgeben.

der Wert der Summe p1+p2, also a+b angezeigt.

zur Laufzeit ein undefinierter Wert angezeigt.

der Inhalt der Adresse p1+p2 angezeigt.

A

Die Ausgabe des folgenden Codes lautet:

char str[] = “prog. in C-SS2024”;
str[0] = ‘P’;
printf(“%s, %s\n”, str, str+10);

Prog. in C-SS2024, C-SS2024

prog. in C-SS2024, C-SS2024

Prog. in C-SS2024, -SS2024

prog. in C-SS2024, -SS2024

26
Q

Was bedeutet die nachfolgende Definition?

char * arra [10];

arra ist ein Feld mit 10 char-Variablen.

arra ist ein String mit 10 Elementen.

arra ist ein Feld mit 10 char-Zeigern.

arra ist ein Zeiger auf ein char-Array.

A
27
Q

include<stdio.h></stdio.h>

Was ist die Ausgabe des folgenden Codes?

int main()
{
typedef int NEU;
NEU a = 12;
NEU b = 28;
float c = 0;
c = a;
b+=a;
printf(“%d, %f”, b, c);
return 0;
}

28, 12.0

40, 0

40, 12

40, 12.000000

A
28
Q

Welche Aussage ist zum Feld text[20] richtig?

char text[20];

Es wird 21 Bytes Speicherplatz für text[] reserviert.

text[] enthält 20 Elemente.

text[1] bezeichnet das erste Element in text[].

text[20] bezeichnet „\n“ .

A
29
Q

Die Ausgabe des folgenden Codes lautet:

int a[10];
int *p = &a[4];
printf(“%d”, p - a);
Frage: Welche Rolle spielt der Datentyp int in der Ausgabe dieses Codes?

16

12

5

4

A
30
Q

Gegeben Sei der Zeiger p, der auf eine int-Variable i zeigt. Dann bewirkt der Ausdruck 2.5**p:

die Potenzierung von p mit dem Wert 2.5.

die Potenzierung von 2.5 mit dem Wert p.

die Multiplikation der int-Variablen i mit 2.5.

eine Fehlermeldung des Compilers.

A
31
Q

Da der Vektorname arr ein Zeiger auf das Element arr[0] ist, zeigen folgende Anweisungen auf arr[1]:

  1. arr++;
  2. ++arr;
  3. arr+1;
  4. &arr[1];

1, 2, 3

3, 4

1, 2, 4

1, 2, 3, 4

A
32
Q

Die Variablen x und p seien wie folgt definiert:

double x = 2.5, *p = &x;
x und p haben die Adressen 0x12FF40 und 0x12FF48. Die Variablen x, p, *p, &p betragen folgende Werte:

2.5, 12FF40, 2.5, 12FF48

2.5, 12FF40, 2.5, 12FF40

2.5, 12FF48, 2.5, 12FF48

2.5, 12FF40, 12FF48, 12FF48

A
33
Q

Matrix a ist von der Ordnung 3x5. Welcher der folgenden Ausdrücke sind nicht äquivalent zu a[i][j]?

(&a[0][0] + 5i + j)

*(a[i] + j)

(*(a+i))+j

((a+i) + j)

A
34
Q

Finden Sie den Fehler im folgenden Code?

int main()
{
struct birth
{
int year;
int month;
};
struct birth Marie = {1990, 1};
struct birth David = Marie;
if(David == Marie)
printf(“The structures are equal”);
return 0;
}

Keine Antwort ist richtig.

structs können nicht mit ‘==’ verglichen werden.

Kein Fehler. Ausgabe: The structures are equal

structs können nicht wie im Code initialisiert werden.

A