1CHEL FSST Test (Group B)

2024-06-11

Max. 100 points

Name:

Task Max. Achieved
1 10
2 30
3 30
4 30
Sum 100
Benotung: >87.5: 1, >75: 2, >62.5 : 3, >50: 4, <=50: 5
  1. Answer the following statements indicating whether they are True or False.
    0-2 correct: 0 points, 3 correct: 5 points, 4 correct: 10 points.
    Statement True False
    Wenn man einen C-Array an eine Funktion übergibt, muss man dessen Dimension (Anzahl der Elemente) ebenfalls übergeben, da diese in der Funktion nicht mehr herausfindbar ist.
    Wenn in einem C-Array mit `uint64_t` das erste Element an der Adresse 0x7fc8c013e0 liegt, dann liegt das zweite Element an der Adresse 0x7fc8c013ea.
    Wenn `dim` die Anzahl der Elemente in einem C-Array ist, dann hat das letzte Element den Index `dim`.
    In einem C-Array müssen alle Elemente den gleichen Datentyp haben.
  2. Welcher Text wird durch die folgenden Code Snippets in der C-Programmiersprache auf Standard Output (Terminal) geschrieben? Schreibe den genauen Output des Snippets. Die Snippets werden als Teil von int main(.) ausgeführt und alle notwendigen #includes sind vorhanden. Wenn das Snippet nicht kompilierbar ist, zu einem Absturz führen würde oder der Output nicht definiert ist, 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.
    5 Punkte für jede richtige Antwort.
    1. int arr[] = {1, 2, 3};
      printf("%d\n", arr[0]);
      1
    2. unsigned int values[] = {4, 2, 1, 0};
      printf("%zu\n", sizeof(values));
      16
    3. int condition = 0;
      while (condition == 1) {
        condition = 0;
        printf("Hello\n");
      }
      -
    4. for (int i = 0; i > 3; ++i) {
        printf("%d\n", i);
      }
      -
    5. int num = 1;
      switch (num) {
      case 1:
        printf("One.\n");
        break;
      case 2:
        printf("Two.\n");
        break;
      case 3:
        printf("Three.\n");
        break;
      }
      One.
    6. unsigned int values[] = {4, 2, 1, 0};
      printf("number of elements: %zu\n", len(values));
      ERROR
  3. Implementiere die Funktion
    double average(int array[], size_t dim);
    Die Funktion muss den Durchschnitt der Element in array zurückgeben (Summe dividiert durch Anzahl der Elemente). (30 Punkte)
    6 points for correct signature and name
    6 points for declaring and initializing a variable for the sum
    6 points for a proper loop
    6 points for incrementing the sum
    6 points for returning the sum divided by the dimension
    double average(int array[], size_t dim) {
      double sum = 0.0;
      for (size_t i = 0; i < dim; ++i) {
        sum += array[i];
      }
      return sum / dim;
    }
  4. Implementiere die Funktion
    int contains(int array[], size_t dim, int elem);
    Die Funktion muss 1 zurückgeben, wenn elem im übergebenen array enthalten ist, sonst 0. (30 points)
    6 points for correct signature and name
    6 points for a proper loop
    6 points for a proper condition
    6 points for returning 1 if `elem` is in the array
    6 points for returning 0 otherwise
    int contains(int array[], size_t dim, int elem) {
      for (size_t i = 0; i < dim; ++i) {
        if (array[i] == elem) return 1;
      }
      return 0;
    }