|
ein Semikolon steht. Beispiel 1:
if (a > b)
max = a;
else
max = b;
Beispiel 2:
main()
{
int x, y, z;
x = 3; z = 2;
if ( z != 0 ) /* auch: if ( z ) */
y = x/z;
else
printf("Division durch Null\n");
printf("y = %d\n",y);
}
Wichtig: else gehört im Zweifel immer zum letzten if.
Gegebenenfalls mit { ... } klarstellen, was wohin gehört. Beispiel:
if(i==1)
if(j==2)
printf("i = 1, j = 2.\n");
else
printf("i = 1, j unbekannt.\n");
else
if(j==2)
printf("i unbekannt, j = 2.\n");
else
printf("i und j unbekannt.\n");
Ketten: if (a) b; else if (c) d; else if (e) f; else g;. Beispiel:
if(i==1)
printf("i ist eins.\n");
else if(i==2)
printf("i ist zwei.\n");
else if(i==3)
printf("i ist drei.\n");
else if(i==4)
printf("i ist vier.\n");
else
printf("i ist eine Zahl.\n");
Vorsicht: Nicht if (...) { ... } ; else { ... }!
Entweder es kommt nur eine Anweisung nach dem if (...), dann kommt
ein Strichpunkt dahinter, bei mehreren Anweisungen werden diese mit { ... }
als Block geklammert und hinter die Klammer darf kein Strichpunkt.
Beispiel: Simulation eines Taschenrechners
#include <stdio.h>
void main(void)
{
char operator;
int wert1, wert2, erg ;
if (scanf("%d %c %d",&wert1, &operator, &wert2) == 3)
{
if (operator== '+')
erg = wert1 + wert2;
else if (operator == '-')
erg = wert1- wert2;
else if (operator=='*')
erg = wert1 * wert2;
else if (operator=='/')
erg = wert1 / wert2;
else printf("Falsche Eingabe\n");
printf("%d %c %d=%d\n",wert1,operator,wert2,erg);
}
else
printf("zu wenig Eingabewerte\n");
Vorsicht! Die Bedingungen werden nur solange ausgewertet, bis das Ergebnis
feststeht. Beispiel:
if(x <= 0 || ((c = getchar()) != EOF))
printf("%d\n", c);
Das Zeichen wird nur gelesen, wenn x > 0.
(EOF ist eine symbolische Konstante, die in stdio.h definiert ist.
Sie hat bei Dateiende den Wert -1.)
Beispiel: Im EStG, Par. 32, ist folgendes Verfahren zur Berechnung der
Einkommenssteuer festgelegt:
Die Einkommenssteuer beträgt in deutsche Mark
- für zu versteuernde Einkommen bis 4752 DM: 0 DM;
- für zu versteuernde Einkommen von 4753 DM bis 18035 DM: 0.22x - 1045 DM;
- für zu versteuernde Einkommen von 18036 DM bis 80027 DM: (((0.34y - 21,58)y + 392)y + 2200)y + 2911 DM;
- für zu versteuernde Einkommen von 80028 DM bis 130031 DM: (70z + 4900)z + 26974 DM;
- für zu versteuernde Einkommen von 130032 DM und mehr: 0.56x-19561 DM.
Dabei ist x das abgerundete zu versteuernde Einkommen, y ein Zehntausendstel
des 17982 DM übersteigenden Teils des abgerundeten zu versteuernden Einkommens, und
z ist ein Zehntausendstel des 79974 DM übersteigenden Teils des
abgerundeten zu versteuerndes Einkommens.
Das zu versteuernde Einkommen ist zunächst vor jeglicher Berechnung auf den
nächsten durch 54 ohne Rest teilbaren Betrag abzurunden, wenn es nicht bereits
durch 54 ohne Rest teilbar ist.
Gesucht wird ein C-Programm, welches zu einem einzulesenden Einkommen die zu zahlende
Einkommenssteuer berechnet und ausgibt.
#include<stdio.h>
#include<math.h>
int main(void)
{
double steuer, einkommen, y;
scanf(Daten,"%lf",&einkommen);
if (einkommen < 0)
printf("Einkommen sollte positev sein\n");
else
{
/* Zahl muss abgerundet werden */
einkommen = floor(einkommen / 54) * 54;
if (einkommen < 4753)
steuer = 0;
else if (einkommen < 18036)
steuer = 0.22 * einkommen - 1045;
else if (einkommen < 80028)
{
y = (einkommen - 17982)/10000.0;
steuer = (((0.34*y - 21.58)*y + 392)*y + 2200)*y + 2911;
}
else if (einkommen < 130032)
{
y = (einkommen-79974)/10000.0;
steuer = (70*y + 4900)*y + 26974;
}
else steuer = 0.56 * einkommen - 19561;
}
printf("%10g %10g\n",einkommen,steuer);
}
|
|
|