|
case W2: Anweisung2; break;
...; break;
case Wn: Anweisungn; break;
default: Anweisungdef;
}
Den Unterschied machen auch die beiden folgenden Ablaufdiagramme sichtbar:
Beispielprogramm:
/* Beispiel fuer switch: Einlesen einer Zahl ohne Benutzung von scanf */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
/* Lokale Variablen - teilweise mit Anfangswert */
unsigned long zahl=0;
enum boolean {false,true} ende = false;
int zeichen;
printf("Geben Sie eine Zahl ein.\n");
while(!ende)
{
/* Lesen eines Zeichens aus der Eingabe */
zeichen=getchar();
switch(zeichen)
/* oder kürzer: switch(zeichen=getchar()) */
{
case '0':
zahl=zahl*10;
break;
case '1':
zahl=zahl*10+1;
break;
case '2':
zahl=zahl*10+2;
break;
case '3':
zahl=zahl*10+3;
break;
case '4':
zahl=zahl*10+4;
break;
case '5':
zahl=zahl*10+5;
break;
case '6':
zahl=zahl*10+6;
break;
case '7':
zahl=zahl*10+7;
break;
case '8':
zahl=zahl*10+8;
break;
case '9':
zahl=zahl*10+9;
break;
default:
ende=true;
break;
}
}
printf("Zahl %lu eingelesen, danach folgte '%c'.", zahl, zeichen);
return(0);
}
Zweites Beispiel. Berechnung der Datumsdifferenz zweier Tage.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int tag1, mon1, jahr, tag2, mon2, tage, i;
printf("Anzahl der Tage zwischen zwei Tagen\n");
printf("Jahr:");
scanf("%i",&jahr);
printf("1. Datum: Tag:");
scanf("%i",&tag1);
printf("Monat:");
scanf("%i",&mon1);
printf("\n2. Datum: Tag:");
scanf("%i",&tag2);
printf("Monat:");
scanf("%i",&mon2);
tage = tag2 - tag1;
for (i=mon1; i<=mon2-1; i++)
switch (i)
{
case 2: if (jahr%4 == 0 && jahr%100 != 0 || jahr%400 == 0)
tage = tage + 29;
else
tage = tage + 28;
break;
case 4:
case 6:
case 9:
case 11: tage = tage + 30; break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: tage = tage + 31; break;
};
printf("\n Es liegen %3i Tage dazwischen.",tage);
}
Ein ganz einfacher Rechner:
#include <stdio.h>
#include <stdlib.h>
main()
{
double op1, op2;
char op[2];
while(scanf("%lf %1s %lf", &op1, op, &op2) != EOF) {
switch(op[0])
{
case '+': op1 = op1 + op2; break;
case '-': op1 = op1 - op2; break;
case '*': op1 = op1 * op2; break;
case '/': op1 = op1 / op2; break;
default: printf("illegal operator\n"); continue;
}
printf(" = %g\n", op1);
}
}
|
|
|