2BHEL FSST Test (Group B)

2022-01-25

Max. 30 points

Name:

Task Max. Achieved
1 2
2 10
3 8
4 10
Sum 30
Benotung: >=27: 1, >=24: 2, >=20: 3, >15: 4, <=15: 5
  1. Das untenstehende Programm hello.c soll mittels gcc kompiliert werden. Die ausführbare Datei soll den Namen hello bekommen. Welches Kommando mit welchen Argumenten muss dazu verwendet werden?
    /* \file hello.c */
    #include <stdio.h>
    
    int main(void) {
      printf("Hello, World\n");
      return 0;
    }
    gcc hello.c -o hello
  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 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.
    1. Hinweis: sin(0.5) ist ungefähr 0.479426.
      printf(sin(0.5): %.2f\n, sin(0.5));
      ERROR
    2. char s[] = "Everyone wants to become a great programmer.";
      printf("%c %c\n", s[0], s[2]);
      E e
    3. int j = 0;
      for (int i = 0; i <= 3; ++i) {
        j += i * i;
      }
      printf("%d\n", j);
      14
    4. for (int j = 10; j >= 0; --j) { printf("%d ", j); }
      printf("\nHappy New Year!\n");
      10 9 8 7 6 5 4 3 2 1 0
      Happy New Year!
    5. int n = 6;
      char d = 10;
      bool work = true;
      while (work) {
        if (n % d == 0) {
          printf("%d\n", d);
          work = false;
        }
        d -= 1;
      }
      6
    1. Ergänze das folgende Code Snippet so, dass 20,18,16,14,12,10 gefolgt von einem Zeilenumbruch auf Standard Output geschrieben wird.
      for (int i =      ;           ;         ) {
        printf("%d,", i);
      }
      printf(                   );
      for (int i = 20; i >= 12; i = i - 2) {
        printf("%d,", i);
      }
      printf("10\n");
    2. Schreibe eine while Schleife, welche den gleichen Output wie die obige for Schleife erzeugt.
      1 Punkt für die notwendige Variable; 1 Punkt für die Condition; 1 Punkt für den Loop-Body; 1 Punkt für den korrekten Output (alle printf).
      int k = 20;
      while (k > 10) {
        printf("%d,", k);
        k -= 2;
      }
      printf("10\n");
  3. Schreibe eine Funktion int countEvenInArray(int array[], size_t dimension) welche zurück gibt, wie viele gerade Zahlen in array vorkommen. Zum Beispiel
    int array[] = {4, 1, 7, 5, 4, 1, 4, 2, 7};
    countEvenInArray(array, 9);  // returns 4
    int countEvenInArray(int array[], size_t dimension) {
      int count = 0;
      for (size_t i = 0; i < dimension; ++i) {
        if (array[i] % 2 == 0) {
          count += 1;
        }
      }
      return count;
    }