2022-12-15
Max. 50 points
Name:
Task | Max. | Achieved |
---|---|---|
1 | 10 | |
2 | 15 | |
3 | 10 | |
4 | 7 | |
5 | 8 | |
Sum | 50 |
kate
Editor installieren? (2 Punkte)
sudo apt update
sudo apt upgrade
chris
(2 Punkte)
chris
befindet
sich derzeit im Verzeichnis /var/log/
.
Welche Befehle muss sie eingeben, um in ihr home Verzeichnis zu
wechseln? (1 Punkt)
cd
└── repos ├── fyp ├── fsst └── config
mkdir -p ~/repos/fyp ~/repos/fsst ~/repos/config
~/homework_3/
in das Verzeichnis
~/repos/fsst/
verschoben wird.
(3 Punkte)
mv ~/homework_3 ~/repos/fsst
~/old/
mit seinem gesamten
Inhalt gelöscht werden.
(2 Punkte)
rm -r ~/old
hw3
aus der Datei
hw3.c
. Der Terminal befindet sich bereits
im richtigen Verzeichnis. (3 Punkte)
clang -o hw3 hw3.c
hw3.c~
ist zu löschen. (1 Punkt)
rm hw3.c~
./hw3
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. (je 2 Punkte)
typedef struct { int x; int y; } Point;
Point test = {3, 7};
printf("[%d %d]\n", test.x, test.y);
int a = 10;
int* p = &a;
int** pp = &p;
**pp /= **pp;
printf("%d\n", a);
int array[] = {2, 2, 2, 2};
int* array_ptr = array;
int count = sizeof(array) / sizeof(int);
int value = 1;
while (count--) {
value *= *array_ptr++;
}
printf("%d\n", value);
typedef struct node Node;
struct node {int value; Node *next;};
Node* node = (Node*) malloc(sizeof(Node));
node->value = 123; node->next=NULL;
Node* head = (Node*) malloc(sizeof(Node));
head->value = 100; head->next=node;
printf("%d\n", head->next->value);
char s[] = "Hello";
char* p = s;
while (*p) {
*p = toupper(*p);
++p;
}
puts(s);
int max_of_four(int a, int b, int c, int d)
in C. Die Funktion soll die größte der vier Zahlen retournieren.
Um dies zu vereinfachen, implementiere auch eine Funktion
int max(int a, int b)
, welche das Maximum von zwei Zahlen
zurück gibt und von max_of_four(.)
verwendet werden muss.
(7 Punkte)
max(int a, int b)
max_of_four
int max(int a, int b) {
if (a > b) return a;
return b;
}
int max_of_four(int a, int b, int c, int d) {
return max(a, max(b, max(c, d)));
}
int* range(size_t count)
welche einen Pointer zu einem Array
mit den Zahlen von 0 bis count - 1
zurück gibt. Zum Beipiel
retourniert range(4)
einen Pointer zu einem Array mit den
Werten {0, 1, 2, 3}
.
Falls das Reservieren des Speichers fehlschlägt, ist das auf
stdout
oder stderr
auszugeben.
(8 Punkte)
int* range(size_t count) {
int* a = (int*) malloc(count * sizeof(int));
if (a == NULL) {
fprintf(stderr, "Error: could not allocate memory.\n");
}
for (size_t i = 0; i < count; ++i) {
a[i] = i;
}
return a;
}