2022-06-08
Max. 24 points
Name:
Task | Max. | Achieved |
---|---|---|
1 | 3 | |
2 | 10 | |
3 | 5 | |
4 | 3 | |
5 | 3 | |
Sum | 24 |
Aussage | Wahr | Falsch |
---|---|---|
char* p = "hello"; ist gültiges C. | ||
Der Preprocessor ersetzt #include
mit dem Inhalt der angegebenen Header Datei. | ||
Ein Pointer benötigt auf einem 64bit Betriebssystem
gleich viel Speicher wie ein short . | ||
Das Aufteilen eines Programms auf mehrere Sourcecode Dateien erlaubt die Verwendung mehrerer CPU Kerne beim kompilieren. | ||
Der C Assembler kümmert sich primär um relativ einfache Textersetzungen. | ||
Include guards erlauben es dem Preprocessor, plattformabhängigen Binärcode herzustellen. |
int main()
ausgeführt und
alle notwendigen #include
s sind vorhanden.
Wenn das Snippet nicht kompilierbar ist oder zu einem Absturz führen würde,
so ist das Wort “ERROR” als Antwort zu geben.
Erzeugt das Snippet keinen Output (wenn beispielsweise kein
printf
oder dergleichen aufgerufen wird), so ist "-" als
richtige Antwort zu verwenden.
char* p[] = {"Hello", "World!"};
puts(p[0]);
puts(p[1]);
int a = 3;
int* p = &a;
int** pp = &p;
**pp = **pp;
printf("%d\n", a);
int array[] = {1, 1, 1, 1, 1};
int* array_ptr = array;
int count = sizeof(array) / sizeof(int);
int value = 0;
while (count--) {
value *= *array_ptr++;
}
printf("%d\n", value);
char str[] = "students";
char* haystack = str;
char needle = 'x';
int occ = 0;
while (*haystack) {
if (*haystack == needle) { occ++; }
haystack++;
}
printf("%d\n", occ);
int numbers[] = {1, 2, 3, 2};
int* itr = numbers;
int cnt = sizeof(numbers) / sizeof(int);
int total = 0;
while (cnt) {
total += *itr++;
cnt--;
}
printf("%d\n", total);
bool has_space(char* string)
welche true
zurück gibt, wenn mindestens ein Whitespace Character darin vorkommt.
Verwende dazu die gegebene Funktion int isspace(.)
welche ein
Zeichen als Argument nimmt und 0
zurück gibt, wenn das Argument Whitespace ist, sonst wird
>0 zurückgegeben.
isspace(.)
bool has_space(const char* string) {
while (*string) {
if (isspace(*string)) {
return true;
}
string++;
}
return false;
}
void zeroes(int* array, int count)
.
Die Argumente dieser Funktion sind ein Pointer zu einem Array und die
Anzahl der Elemente des Arrays. Die Funktion soll die Elemente des Arrays
initialisieren (gegebenenfalls ersetzen).
Jedes Element soll den Wert 0 bekommen.int* numbers[5];
zeroes(numbers, 5); // initializes `numbers` to {0, 0, 0, 0, 0}
void zeroes(int* array, int count) {
for (int i = 0; i < count; ++i) {
array[i] = 0;
}
}
void range(int* array, int count)
.
Die Argumente dieser Funktion sind ein Pointer zu einem Array und die
Anzahl der Elemente des Arrays. Die Funktion soll die Elemente des Arrays
initialisieren (gegebenenfalls ersetzen).
Der Wert jedes Elements des Arrays soll seine Index sein.
Das heißt, dass das erste Element den Wert 0, das zweite
(Index 1) den Wert 1, das dritte (Index 2) den Wert 2 bekommt
und so weiter.
Das n-te Element soll den Wert n-1
bekommen.int* number[5];
range(numbers, 5); // initializes `numbers` to {0, 1, 2, 3, 4}
void range(int* array, int count) {
for (int i = 0; i < count; ++i) {
array[i] = i;
}
}