2022-05-25
Max. 24 points
Name:
Task | Max. | Achieved |
---|---|---|
1 | 3 | |
2 | 10 | |
3 | 5 | |
4 | 3 | |
5 | 3 | |
Sum | 24 |
Aussage | Wahr | Falsch |
---|---|---|
Ein Pointer kann auf einen anderen Pointer zeigt. | ||
Header Dateien werden durch den Assembler mit den C Dateien verbunden. | ||
Ein Pointer zeigt auf eine Adresse im Hauptspeicher des Computers. | ||
Das Aufteilen eines Programms auf mehrere Sourcecode Dateien verlängert die Kompilierzeit drastisch. | ||
Der C Preprocessor kümmert sich primär um relativ einfache Textersetzungen. | ||
Include guards erlauben es dem Assembler, effizienteren 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.
int a = 5;
int* ptr = &a;
*ptr -= 2;
printf("%d\n", a);
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 = 's';
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 = 1;
while (cnt) {
total *= *itr++;
cnt--;
}
printf("%d\n", total);
bool has_digit(char* string)
welche true
zurück gibt, wenn mindestens eine Ziffer (0-9) darin vorkommt.
Verwende dazu die Funktion int isdigit(.)
welche ein
Zeichen als Argument nimmt und 0
zurück gibt, wenn das Argument keine Ziffer ist, sonst wird
>0 zurückgegeben.
isdigit(.)
bool has_digit(char* string) {
while (*string) {
if (isdigit(*string)) {
return true;
}
string++;
}
return false;
}
void ones(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 1 bekommen.int* numbers[5];
ones(numbers, 5); // initializes `numbers` to {1, 1, 1, 1, 1}
void ones(int* array, int count) {
for (int i = 0; i < count; ++i) {
array[i] = 1;
}
}
void init_squares(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 das Quadrat seines Index sein.
Das heißt, dass das erste Element den Wert 0 (0*0), das zweite
(Index 1) den Wert 1 (1*1), das dritte (Index 2) den Wert 4 (2*2) bekommt
und so weiter.
Das n-te Element soll den Wert int* number[5];
init_squares(numbers, 5); // initializes `numbers` to {0, 1, 4, 9, 16}
void init_squares(int* array, int count) {
for (int i = 0; i < count; ++i) {
array[i] = i * i;
}
}