Übungsblatt 10

Werbung
Prof. Dr. H. Weber
Praktikum Programmieren 1 in C, WS 2004/05
Übungsblatt 10
__________________________________________________________
 Aufgabe 25
Schreiben Sie ein Programm, das von der Kommandozeile aus aufgerufen werden
kann und einen Bruch, bestehend aus zwei natürlichen Zahlen, gekürzt ausgibt.
Implementieren Sie hierzu eine Funktion
long ggt(long x, long y),
welche den größten gemeinsamen Teiler zweier ganzer Zahlen berechnet. Werden
beim Programmaufruf nicht genau zwei Parameter angegeben, soll eine Meldung
erscheinen, welche die Verwendung des Programms erläutert. Weiterhin sollen die
Eingabe von Null als Zähler oder Nenner korrekt behandelt und ganzzahlige Ergebnisse nicht als Bruch ausgegeben werden.
Beispiele:
> kuerzen 15 10
> 15/10 = 3/2
> kuerzen
> Gibt den gekuerzten Bruch zu zwei Zahlen aus
> Aufruf: kuerzen zaehler nenner
> kuerzen 10
> Gibt den gekuerzten Bruch zu zwei Zahlen aus
> Aufruf: kuerzen zaehler nenner
> kuerzen 10 20 2
> Gibt den gekuerzten Bruch zu zwei Zahlen aus
> Aufruf: kuerzen zaehler nenner
> kuerzen 0 10
> 0/10 = 0
> kuerzen 10 0
> Fehler: Nenner ist Null
> kuerzen 10 2
> 10/2 = 5
Einheften in Praktikumsordner: Listing, Resultate
 Aufgabe 26
Teil 1
Sind die folgenden Schreibweisen für Zahlenkonstanten in C zulässig?
(Begründung!)
a)
b)
c)
d)
13.3E22
-1.33E22
0.000133E-22
+196
e)
f)
g)
h)
10.79E6.3
-1,234
0123
6/7
i)
j)
k)
l)
0xff
1.E1
.1E1
pi
Teil 2
Was sind die Werte der Variablen a, b, c, d und e wenn im folgende n
Programmstück die Variable x die Werte –1, 0, 5 und 10 hat?
typedef int bool;
a) bool a = x > 0 && x <= 10;
b) bool b = x < 0 || x > 9;
c) bool c = ! ( b || a);
d) bool d = a || (b & !c);
e) bool e = !d || !(‘A’ > ‘B’) & ‘e’ > ‘d’;
Teil 3
Welche der folgende if-Anweisungen sind identisch mit if (a && b) x=0; ?
a) if (a) {
x = 0;
if (b) x=0;
}
b) if (a)
if (b) x=0;
c) if (x)
d) if (a)
x=0;
x=0;
else if (b)
if (b)
x=0;
x=0;
e) if (a) {
if (b) x=0;
} else
x=0;
f) if (a) x=0;
if (b) x=0;
else x=0;
g) if (a&&b) h) if (a)
x=0;
if (!b) { }
else { }
else
x=0;
Teil 4
Setzen Sie in den folgenden Ausdrücken in der Weise Klammern, wie der CCompiler sie auswerten würden.
a)
b)
c)
d)
e)
f)
g)
h)
i)
a = b*c == 2;
a = f(x) && a > 100;
a == b && x != y;
a = b += 2 + f(2)
a = s.f + x.y
a = b >> 2 + 4;
a = b && a > z ? x = y : z;
a = * ++ * p;
a = b ^ c & d;
(Lösung auf Papier bearbeiten, wird vom Übungsleiter eingesammelt und bewertet).
Herunterladen