24.02.2016
Programmieren in C: Übungsblatt 2
Aufgabe 1: Felder I
Schreiben Sie ein Programm, das ein Feld mit 100 Elementen initialisiert. Jedes Element soll den
Wert seines Index enthalten. Geben Sie anschließend die letzten 10 Elemente des Feldes auf dem
Bildschirm aus.
Aufgabe 2: Felder II
Ändern Sie das obige Programm ab. Nach der Ausgabe der initialisierten Werte soll das Programm
die Werte in ein neues Feld kopieren und zu jedem Wert 10 addieren. Anschließend sollen die neuen
Werte wieder auf dem Bildschirm ausgegeben werden.
Aufgabe 3: Felder III
Schreiben Sie ein Programm, das zehn Integer-Zahlen von der Tastatur einliest und am Ende sowohl
den kleinsten als auch den größten eingegebenen Zahlenwert wieder ausgibt mit dem Satz:
Sie haben Zahlenwerte zwischen XXX und YYYY eingegeben.
Aufgabe 4: Felder IV
Schreiben Sie ein Programm, dass die Anzahl aller Primzahlen im Bereich von 1 und 100 ermittelt.
In einem zweiten Schritt sollen die Werte aller Primzahlen addiert werden. Die Ergebnisse sollen
mit dem folgenden Satz auf dem Bildschirm ausgegeben werden:
Im Zahlenbereich zwischen 1 und 100 existieren XXX Primzahlen. Die Summe dieser Zahlen
beträgt YYY.
Aufgabe 5: Strings I
Schreiben Sie ein Programm, das zwei Vornamen und 2 Altersangaben von der Tastatur einliest.
Anschließend sollen diese Informationen wieder folgendermaßen auf dem Bildschirm ausgegeben
werden:
Die beiden Personen mit den Vornamen xxx und yyy sind zusammen zzz Jahre alt.
Aufgabe 6: Strings II
Schreiben Sie ein Programm, das die Anzahl der Vokale in dem folgenden Satz zählt:
“programmieren ist ganz einfach“.
Aufgabe 7: Funktionen I
Das folgende Programm soll die Fläche eines Rechtecks berechnen.
Arbeitet das Programm korrekt ?
Welche Änderungen sind für eine einwandfreie Arbeitsweise erforderlich ?
#include <stdio.h>
int main()
{
printf("%d \n",Flaeche(6.5,5.5));
return 0;
}
double Flaeche(double laenge, double hoehe)
{
double ergebnis;
ergebnis=laenge*breite;
return ergebnis;
}
Aufgabe 8: Funktionen II
a) Schreiben Sie eine Funktion, die zwei Integer-Zahlen als Argument übernimmt. Die Funktion soll
die erste Zahl durch die zweite Zahl dividieren.
b) Fügen Sie diese Funktion in ein vollständiges Programm ein, d.h. erstellen Sie die main-Funktion
Was passiert in Ihrem Programm, wenn die zweite Zahl Null ist ? Fangen Sie diese Situation mit
einer if-Bedingung ab.
Aufgabe 9: Funktionen III
Schreiben Sie ein Programm, das fünf Integer-Werte vom Benutzer abfragt und daraus mit einer
Funktion den Mittelwert berechnet.
Aufgabe 10: Funktionen IV (Zusatzaufgabe)
Bilden Sie einen Taschenrechner nach:
Es werden zwei Zahlen von der Tastatur eingelesen.
Die Art der Berechnung (Addition, Subtraktion, Division oder Multiplikation) wird abgefragt.
Fangen Sie in Ihrem Programm die Division durch Null ab.
Das Ergebnis der Berechnung soll anschließend auf dem Bildschirm ausgegeben werden.
In der Hauptfunktion wird die Eingabe-Funktion solange aufgerufen, bis der Benutzer die Abfrage
durch die Eingabe eines bestimmten Wertes abbricht.
Aufgabe 11: rekursive Funktionen I
Schreiben Sie ein Programm, das die Fakultät der Zahl n berechnet.
Formel für die Berechnung: n! = 1 * 2 * ... (n - 1) * n
Beispiel: 5! = 1 * 2 * 3 * 4 * 5 = 120
Testen Sie das Programm mit 6 verschiedenen Zahlen: m=5,10,15,20 und 20000
Aufgabe 12: rekursive Funktionen II
Schreiben Sie ein Programm mit einer rekursiven Funktion, das die Potenz der Zahl 3 zu einem
angegebenen Exponenten berechnet ?
(Gibt es einen Unterschied ob der Exponent größer oder kleiner als 19 ist ? )
Aufgabe 13: rekursive Funktionen III (Zusatzaufgabe)
Berechnen Sie die Fibonacci-Zahlen rekursiv.
Die Folge ist rekursiv definiert durch:
f0 = 0
f1 = 1
fn = fn − 1 + fn − 2
Das bedeutet in Worten:
Für die beiden ersten Zahlen werden die Werte Null und Eins vorgegeben. Jede weitere Zahl ergibt
sich aus der Summe ihrer beiden Vorgänger.
Daraus ergibt sich der Anfang der Folge zu
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Die Rekursionsgleichung für die Berechnung lautet:
f(n+1)=f(n+1)+ f(n).
Aufgabe 14: (Zusatzaufgabe)
Das folgende Listing arbeitet nicht immer korrekt. Wenn Sie bei der Eingabe einen negativen Wert
und 0 eingeben, will Ihnen das Programm vorgaukeln, dass beide Werte gleich waren. Ändern Sie
das Programm, damit dieses auch auf eine Eingabe von 0 entsprechend reagiert und korrekt
auswertet:
#include<stdio.h>
int vergleich (int wert1, int wert2);
int main ()
{
int wert1, wert2, cmp;
printf("Bitte den ersten Wert eingeben \n");
scanf ("%d", &wert1);
printf("Bitte den zweiten Wert eingeben \n");
scanf ("%d", &wert2);
cmp= vergleich(wert1,wert2);
if (cmp !=0)
{
printf("%d ist der hoehere Wert \n", cmp);
}
else
{
printf("Beide Werte sind gleich \n");
}
return 0;
}
int vergleich (int wert1, int wert2)
{
if (wert1 > wert2)
return wert1;
else if (wert1 < wert2)
return wert2;
return 0;
}
Aufgabe 15: (Zusatzaufgabe)
Schreiben Sie das Programm aus Aufgabe 11 so um, dass die Fakultät ohne Rekursion berechnet
wird.