C-Uebung

Aufgabe "Operatoren"

Logik | | If + Switch

a) Was würde das folgende Programm ausgeben?

#include <stdio.h>

int main()
{
   int a=10, b, c;

   a *= 5+10;       printf("%d\n", a);
   a *= b = c = 20; printf("%d\n", a);
   b = b==c;        printf("%d\n", b);
   a >>= b+2;       printf("%d\n", a);
   a &= 0x3e;       printf("%d\n", a);

   a=1;
   b=1;
   a *= b += a+b;   printf("a=%d, b=%d\n", a, b);

   return(0);
}

b) Was würde das folgende Programm ausgeben?

#include <stdio.h>

int main()
{
   int a=0, b=0, c=0;

   a=b=1;

   a = b++;         printf("a=%d, b=%d, c=%d\n", a, b, c);
   c = a++-1;       printf("a=%d, b=%d, c=%d\n", a, b, c);
   c += a++ + ++b;  printf("a=%d, b=%d, c=%d\n", a, b, c);
   c = a/++b;       printf("a=%d, b=%d, c=%d\n", a, b, c);
   a += --b;        printf("a=%d, b=%d, c=%d\n", a, b, c);

   return(0);
}

c) Formulieren Sie die Bedingung, dass die Fliesskomma-Variablen a,b,c im Intervall [0,1] liegen. Formulieren Sie die negierte Bedingung ohne den !-Operator.

d) Berechnen Sie das Maximum von zwei Zahlen a und b mit der bedingten Bewertung. Formulieren Sie ausgehend davon das Maximum von drei Zahlen a,b,c und geben Sie das Ergebnis für a=−10, b=7, c=23 aus.

e) Berechnen Sie die Steigung zwischen zwei Punkten $a=(a_x,a_y)$ und $b=(b_x,b_y)$ und berechnen sie die entsprechenden Zwischenergebnisse (d.h. die Differenzen der jeweiligen Komponenten). Geben Sie das Ergebnis für $a=(-1,2)$ und $b=(3,4)$ aus.

Q Wie würden Sie eine Division durch Null vermeiden?


Logik | | If + Switch

Options: