Programmierübungen C
Grundlagen
- "Hello, world" mit Erweiterungen.
Beispiel-Programme: hello1.c,
hello2.c,
hello3.c,
hello3-commented.c
Musterlösung:
hello3-123.c,
hello3-4.c,
hello3-5.c,
hello3-6.c,
hello3-7.c
(oder hello3-7-var2.c).
- Summe und Mittelwert.
Musterlösung:
mittelw.c.
- Potenzrechnen.
Programm-Gerüst: power-vorgabe.c
Musterlösung:
power.c,
power-komma.c.
- Größter gemeinsamer Teiler.
Musterlösung:
euklid.c,
euklid-kuerzen.c.
- Quersumme.
Musterlösung:
qsum.c,
qqsum.c.
- Wurzel-Näherung.
Musterlösung:
root.c,
root-count.c.
- Rechnen mit Buchstaben: Direkte Quersumme.
Musterlösung:
qsum-char.c.
- Rechnen mit Buchstaben, switch: Hexzahlen einlesen.
Musterlösung:
hex.c,
hex-switch.c.
- Minimum und Maximumg.
Musterlösung:
minmax.c,
minmaxpos.c.
- Primfaktorenzerlegung.
Musterlösung:
primfak1.c,
primfak1+ausg.c,
primfak2.c,
primfak2+ausg.c.
- Zufallszahlen: Würfeln.
Musterlösung:
sechser1.c
(alternativ: sechser1b.c),
sechser2.c
(alternativ: sechser2b.c).
- switch Einfacher Taschenrechner.
Musterlösung:
taschenr.c.
- Geschachtelte Schleifen: Rechtwinkelige Dreiecke generieren.
Musterlösung:
dreieck.c.
- Arrays: Noten zählen, Balkendiagramme.
Musterlösung:
noten.c,
punkte.c,
punkte-waagr.c,
punkte-senkr.c.
- Arrays, Zufallszahlen: Nagelbrett-Simulation, Balkendiagramme.
Musterlösung:
nagelbrett.c.
- bool-Arrays: Sieb des Eratosthenes.
Musterlösung:
erat.c.
- bool-Arrays, Zufallszahlen: Lotto-Ziehung.
Musterlösung:
lotto.c.
- Arrays: Sortiert einfügen und löschen.
Musterlösung:
sortarray.c.
- Mehrdimensionale Arrays: Pascal'sches Dreieck.
Musterlösung:
pascal.c.
- Bunte Beispiele (mit SDL-Grafik):
Wir verwenden für die grafische Anzeige
SDL
(siehe auch hier),
hier gibt es die Installationsanleitung
und hier meine "Zwischenschicht" zur SDL: sdlinterf.c und
sdlinterf.h.
Dazu drei ganz einfache Beispiel-Programme:
demo0.c,
demo1.c,
demo2.c.
-
Einfach, trickreiche Schleifen: Tannenbaum und Sterne
Musterlösung:
weihn-baum.c,
weihn-stern.c,
weihn-schnee.c.
-
Mathematisch-physikalisch: Gedämpfte Schwingung, springender Ball
Musterlösung:
physik-schwingung.c,
physik-ball.c.
-
Mathematisch: "Lissajou'sche Kurven"
Musterlösung:
lissa.c.
-
Zweidimensionale Arrays: "Game of Life"
Musterlösung:
life.c.
-
Sehr abstrakt-mathematisch: "Mandelbrot-Fraktale"
(hier ein paar Beispiel-Parameter für schöne Fraktale:
fract-aufrufe bzw.
param.txt).
Musterlösung:
fract.c,
fract-atan.c,
fract-file.c.
Funktionen
- Einfache Funktionen: Das kleinste gemeinsame Vielfache.
Musterlösung:
kgv.c.
- Einfache Funktionen: Zahl-Palindrome.
Musterlösung:
spiegeln.c.
- Einfache Funktionen: Rechnen mit Zeiten.
Musterlösung:
zeit.c.
- Einfache Funktionen: Binomialkoeffizienten.
Musterlösung:
binom-fact.c,
binom-mult.c.
- Rekursion: Potenzfunktion.
Musterlösung:
rec-pow.c,
- Rekursion: Zahlen ausgeben.
Musterlösung:
rek-dez.c.
- Rekursion: Primteiler.
Musterlösung:
rek-teiler.c.
- Statische Variablen: Zufallszahlengenerator.
Musterlösung:
rand.c,
rand-seed.c.
- Statische & globale Variablen, Rekursion: Binomialkoeffizienten mit Cache.
Musterlösung:
rek-binom.c,
rek-binom-mem.c.
- Rekursion, globale Variablen: Raumfüllende Kurven (mit SDL-Grafik).
Hauptprogramme zum Erweitern:
peano-diag-main.c,
hilbert-main.c,
peano-normal-main.c.
Musterlösung:
peano-diag.c,
hilbert.c,
peano-normal.c.
- Einfache Array-Funktionen: Nochmals Nagelbrett-Simulation.
Musterlösung:
nagelbrett-func.c.
- Einfache Array-Funktionen: Nochmals Pascal'sches Dreieck.
Musterlösung:
pascal-func.c.
- Einfache Array-Funktionen: Bubblesort.
Musterlösung:
bubblesort.c.
- Array-Funktionen: Array permutieren, einfache Version ohne Pointer.
Musterlösung:
perm.c.
Dasselbe mit Pointer-Arithmetik, Pointer-Schleifen, Pointer-Returnwerten usw..
Musterlösung:
perm-ptr.c
- Funktionen & Arrays: Sortieren (mit SDL-Grafik).
Unvollständiges Programm zum Weiterschreiben:
sort-sdl-angabe.c.
Musterlösung:
selsort-sdl.c,
inssort-sdl.c,
bubblesort-sdl.c,
shellsort-sdl.c,
quicksort-sdl.c.
Und dasselbe mit Pointern statt Indices:
Unvollständiges Programm zum Weiterschreiben:
sort-ptr-angabe.c.
Musterlösung:
selsort-ptr.c,
inssort-ptr.c,
bubblesort-ptr.c,
shellsort-ptr.c,
quicksort-ptr.c.
- "Call by Reference" & Array-Parameter: Min&Max-Funktion.
Musterlösung:
minmaxfunc.c.
- "Call by Reference" & Array-Parameter: Sortiertes Einfügen.
Musterlösung:
find-ins.c.
- Funktionen mit var. großem zweidim. Array, malloc: Magisches Quadrat.
Musterlösung:
magic.c,
magic-dyn.c.
- Funktionen & Arrays, calloc: Turmrechnen.
Musterlösung:
turm.c.
-
Backtracking: 8-Damen-Problem (mit SDL-Grafik).
Musterlösung:
queens.c,
queens-stepbystep.c.
Strings
- Stringfunktionen: Widerstands-Farbcodes.
Musterlösung:
widerstand.c.
- Strings: Palindrome erkennen.
Musterlösung:
palindrom1.c,
palindrom2.c,
palindrom3.c,
- Strings, zeilenweises Lesen: String großschreiben.
Musterlösung:
strtoupper.c.
- Strings: Einfache Stringfunktionen.
Musterlösung mit Pointer-Arithmetik:
strrepeat.c,
strtextcpy.c,
strappend.c,
strrev.c,
strnrev.c,
strmaxcpy.c,
strrevchr.c,
stranychr.c,
strsearch.c,
strtrim-1.c,
strtrim-2.c.
Musterlösung mit Index statt Pointer:
strrepeat-i.c,
strtextcpy-i.c,
strappend-i.c,
strrev-i.c,
strnrev-i.c,
strmaxcpy-i.c,
strrevchr-i.c,
stranychr-i.c,
strsearch-i.c,
strtrim-1-i.c,
strtrim-2-i.c.
Musterlösung mit malloc für das Ergebnis:
strrepeat-m.c,
strtextcpy-m.c,
strappend-m.c,
strrev-m.c,
strmaxcpy-m.c.
- Strings: Verwandlung Zahl <==> Text.
Musterlösung:
dezinput.c,
dezio.c.
- Funktion mit Pointer-Ausgangsparameter: Eigenes strtol.
Musterlösung:
dezinput-pp.c.
- Strings: Wort erraten.
Musterlösung:
raten.c.
- Strings, vordef. String-Funktionen: Textersetzungsfunktion.
Musterlösung:
replace.c,
replace-direkt.c.
- Strings, Funktion mit Pointer-Ausgangsparameter: Worte in einem String suchen.
Musterlösung:
wordify.c,
wordify-ptr.c,
wordify-end.c.
- Strings, Pointer, Rekursion: Wildcards prüfen.
Interessant, aber nicht ganz einfach...
Musterlösung:
wildcard.c,
wildcard-ptr.c.
- Zweidim. Arrays, Strings: Mastermind.
Achtung: Sehr lang und schwierig!
Musterlösung:
mamind.c.
File-I/O
- File-I/O zeichenweise: Unnötige Leerzeichen entfernen.
Musterlösung:
unindent.c.
- File-I/O zeichenweise: Klammernprüfung.
Musterlösung:
klammer.c
(alternativ klammer2.c),
klammer-rek.c
(alternativ klammer2-rek.c).
- File-I/O zeilenweise, Stringfunktionen: Textersetzung.
Musterlösung:
subst.c,
subst-func1.c,
subst-func2.c.
Strukturen
- Erste Strukturen: Klassenliste.
Musterlösung:
klassenl.c.
- Strukturen: Datums-Systemfunktionen.
Musterlösung:
wochentag.c.
- Strukturen: dir-Befehl.
Musterlösung:
mydir1.c,
mydir2.c,
mydir3.c,
mydir3a.c.
- Strukturen & Funktionen: Bruchrechnen.
Musterlösung:
bruch.c,
bruch-kuerzen.c.
- Arrays von Strukturen: Iterierte Funktionssysteme (mit SDL-Grafik).
Verschiedene Bilddaten: ifs-daten-header.zip
Musterlösung:
ifs.c,
ifs-bewegt.c,
ifs-farbe.c,
ifs-farbe-ptr.c (mit Pointern).
- qsort, Strukturen, malloc & realloc & strdup, File-I/O zeilenweise:
Text sortieren.
Musterlösung:
textsort.c,
textsort-struct.c,
textsort-dyn.c,
textsort-dyn2.c,
textsort-file.c,
textsort-dyn3a.c,
textsort-dyn3b.c.
- Strukturen & Pointer, malloc:
Verkettete Liste.
Musterlösung:
liste.c.
- Backtracking, Strukturen, qsort, File-I/O formatiert:
Rucksack packen.
Meine Gegenstands-Liste: rucksack.txt.
Musterlösung:
rucksack.c,
rucksack-opt.c,
rucksack-file.c.
Bit-Operationen
- Bitrechnen: Bin- und Hex-Ausgabe.
Musterlösung:
binhex.c.
- Bitrechnen: Bytes umdrehen.
Musterlösung:
endian.c,
endian-loop.c.
-
Bit-Operationen: LED-Muster (mit SDL-Grafik).
Hauptprogramm zum Erweitern: leds-angabe.c.
Musterlösung:
leds.c,
leds-sp.c.