B.4    Antworten und Lösungen zu Kapitel 5

  1. Wird die Bedingung der if-Anweisung erfüllt (ist wahr (true)), wird ein Wert ungleich 0 zurückgeliefert. Ansonsten wird bei einer falschen Bedingung (ist unwahr (false )) gleich 0 zurückgegeben.

  2. Die alternative, aber optionale Verzweigung einer if-Anweisung wird mit else eingeleitet. Sie wird ausgeführt, wenn die Bedingung von if unwahr (also gleich 0) ist.

  3. Sie können entweder mehrere if-Anweisungen verketten (mit else if) oder eine Fallunterscheidung mit switch vornehmen.

  4. break dient als Ausstiegspunkt aus dem switch-Konstrukt. Wird kein break am Ende einer case-Marke verwendet und eine entsprechende Marke angesprungen, werden sämtliche Anweisungen des switch-Konstruktes dahinter abgearbeitet, bis zum Ende des switch-Rumpfes oder bis zum nächsten break. Dies kann allerdings durchaus gewollt sein und ist daher rein syntaktisch kein Fehler.

  5. Findet keine Übereinstimmung bei den case-Marken statt, können Sie eine default-Marke setzen, zu der in diesem Fall verzweigt wird.

  6. Es gibt den logischen UND-Operator (&&), den logischen ODER-Operator (||) und den logischen NICHT-Operator (!). In der Praxis werden diese Operatoren verwendet, um mehrere Ausdrücke miteinander zu einer Bedingung zu verknüpfen. Damit lassen sich beispielsweise Verzweigungen ausführen, bei denen zwei oder mehrere Bedingungen gleichzeitig zutreffen sollen (wahr; ungleich 0) oder auch nicht zutreffen sollen (unwahr, gleich 0).

  7. Folgende Werte haben die logischen Verknüpfungen ergeben:

    01  logo1 = 1  // wahr
    02 logo2 = 1 // wahr
    03 logo3 = 0 // unwahr
    04 logo4 = 0 // unwahr
    05 logo5 = 1 // wahr
  8. Hierzu eine mögliche Musterlösung:

    00  // kap005/loesung001.c
    01 #include <stdio.h>

    02 int main(void) {
    03 int ival = 0;
    04 printf("Zahl zwischen 1-100 eingeben: ");
    05 if( scanf("%d", &ival) != 1 ) {
    06 printf("Fehler bei der Eingabe...\n");
    07 return 1;
    08 }
    09 if( (ival >= 1) && (ival <= 100) ) {
    10 if( ival % 2 ) {
    11 printf("Die Zahl ist ungerade\n");
    12 }
    13 else {
    14 printf("Die Zahl ist gerade\n");
    15 }
    16 }
    17 else {
    18 printf("Die Zahl war nicht 1-100!\n");
    19 }
    20 return 0;
    21 }
  9. Hierzu eine mögliche Musterlösung:

    00  // kap005/loesung002.c
    01 #include <stdio.h>

    02 int main(void) {
    03 int work = 0;
    04 printf("-1- PC 1 hochfahren\n");
    05 printf("-2- PC 2 hochfahren\n");
    06 printf("-3- Drucker einschalten\n");
    07 printf("-4- Kaffee machen\n");
    08 printf("-5- Feierabend machen\n");
    09 printf("Was wollen Sie tun: ");
    10 if( scanf("%d", &work) != 1 ) {
    11 printf("Fehler bei der Eingabe...\n");
    12 return 1;
    13 }
    14 switch( work ) {
    15 case 1 : printf("PC 1 wird hochgefahren\n");
    16 break;
    17 case 2 : printf("PC 2 wird hochgefahren\n");
    18 break;
    19 case 3 : printf("Drucker wird eingeschaltet\n");
    20 break;
    21 case 4 : printf("Kaffee wird gemacht\n");
    22 break;
    23 case 5 : printf("Gute Nacht\n");
    24 break;
    25 default: printf("Falsche Eingabe!\n");
    26 }
    27 return 0;
    28 }