Programmierübungen C

Grundlagen

  1. "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).
  2. Summe und Mittelwert.
    Musterlösung: mittelw.c.
  3. Potenzrechnen.
    Programm-Gerüst: power-vorgabe.c
    Musterlösung: power.c, power-komma.c.
  4. Größter gemeinsamer Teiler.
    Musterlösung: euklid.c, euklid-kuerzen.c.
  5. Quersumme.
    Musterlösung: qsum.c, qqsum.c.
  6. Wurzel-Näherung.
    Musterlösung: root.c, root-count.c.
  7. Rechnen mit Buchstaben: Direkte Quersumme.
    Musterlösung: qsum-char.c.
  8. Rechnen mit Buchstaben, switch: Hexzahlen einlesen.
    Musterlösung: hex.c, hex-switch.c.
  9. Minimum und Maximum.
    Musterlösung: minmax.c, minmaxpos.c.
  10. Primfaktorenzerlegung.
    Musterlösung: primfak1.c, primfak1+ausg.c, primfak2.c, primfak2+ausg.c.
  11. Zufallszahlen: Würfeln.
    Musterlösung: sechser1.c (alternativ: sechser1b.c), sechser2.c (alternativ: sechser2b.c).
  12. switch Einfacher Taschenrechner.
    Musterlösung: taschenr.c.
  13. Geschachtelte Schleifen: Rechtwinkelige Dreiecke generieren.
    Musterlösung: dreieck.c.
  14. Arrays: Noten zählen, Balkendiagramme.
    Musterlösung: noten.c, punkte.c, punkte-waagr.c, punkte-senkr.c.
  15. Arrays, Zufallszahlen: Nagelbrett-Simulation, Balkendiagramme.
    Musterlösung: nagelbrett.c.
  16. bool-Arrays: Sieb des Eratosthenes.
    Musterlösung: erat.c.
  17. bool-Arrays, Zufallszahlen: Lotto-Ziehung.
    Musterlösung: lotto.c.
  18. Arrays: Sortiert einfügen und löschen.
    Musterlösung: sortarray.c.
  19. Mehrdimensionale Arrays: Pascal'sches Dreieck.
    Musterlösung: pascal.c.
  20. 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.
    1. Einfach, trickreiche Schleifen: Tannenbaum und Sterne
      Musterlösung: weihn-baum.c, weihn-stern.c, weihn-schnee.c.
    2. Mathematisch-physikalisch: Gedämpfte Schwingung, springender Ball
      Musterlösung: physik-schwingung.c, physik-ball.c.
    3. Mathematisch: "Lissajou'sche Kurven"
      Musterlösung: lissa.c.
    4. Zweidimensionale Arrays: "Game of Life"
      Musterlösung: life.c.
    5. 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

  1. Einfache Funktionen: Das kleinste gemeinsame Vielfache.
    Musterlösung: kgv.c.
  2. Einfache Funktionen: Zahl-Palindrome.
    Musterlösung: spiegeln.c.
  3. Einfache Funktionen: Rechnen mit Zeiten.
    Musterlösung: zeit.c.
  4. Einfache Funktionen: Binomialkoeffizienten.
    Musterlösung: binom-fact.c, binom-mult.c.
  5. Rekursion: Potenzfunktion.
    Musterlösung: rec-pow.c,
  6. Rekursion: Zahlen ausgeben.
    Musterlösung: rek-dez.c.
  7. Rekursion: Primteiler.
    Musterlösung: rek-teiler.c.
  8. Statische Variablen: Zufallszahlengenerator.
    Musterlösung: rand.c, rand-seed.c.
  9. Statische & globale Variablen, Rekursion: Binomialkoeffizienten mit Cache.
    Musterlösung: rek-binom.c, rek-binom-mem.c.
  10. 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.
  11. Einfache Array-Funktionen: Nochmals Nagelbrett-Simulation.
    Musterlösung: nagelbrett-func.c.
  12. Einfache Array-Funktionen: Nochmals Pascal'sches Dreieck.
    Musterlösung: pascal-func.c.
  13. Einfache Array-Funktionen: Bubblesort.
    Musterlösung: bubblesort.c.
  14. 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
  15. 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.
  16. "Call by Reference" & Array-Parameter: Min&Max-Funktion.
    Musterlösung: minmaxfunc.c.
  17. "Call by Reference" & Array-Parameter: Sortiertes Einfügen.
    Musterlösung: find-ins.c.
  18. Funktionen mit var. großem zweidim. Array, malloc: Magisches Quadrat.
    Musterlösung: magic.c, magic-dyn.c.
  19. Funktionen & Arrays, calloc: Turmrechnen.
    Musterlösung: turm.c.
  20. Backtracking: 8-Damen-Problem (mit SDL-Grafik).
    Musterlösung: queens.c, queens-stepbystep.c.

Strings

  1. Stringfunktionen: Widerstands-Farbcodes.
    Musterlösung: widerstand.c.
  2. Strings: Palindrome erkennen.
    Musterlösung: palindrom1.c, palindrom2.c, palindrom3.c,
  3. Strings, zeilenweises Lesen: String großschreiben.
    Musterlösung: strtoupper.c.
  4. 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.
  5. Strings: Verwandlung Zahl <==> Text.
    Musterlösung: dezinput.c, dezio.c.
  6. Funktion mit Pointer-Ausgangsparameter: Eigenes strtol.
    Musterlösung: dezinput-pp.c.
  7. Strings: Wort erraten.
    Musterlösung: raten.c.
  8. Strings, vordef. String-Funktionen: Textersetzungsfunktion.
    Musterlösung: replace.c, replace-direkt.c.
  9. Strings, Funktion mit Pointer-Ausgangsparameter: Worte in einem String suchen.
    Musterlösung: wordify.c, wordify-ptr.c, wordify-end.c.
  10. Strings, Pointer, Rekursion: Wildcards prüfen.
    Interessant, aber nicht ganz einfach...
    Musterlösung: wildcard.c, wildcard-ptr.c.
  11. Zweidim. Arrays, Strings: Mastermind.
    Achtung: Sehr lang und schwierig!
    Musterlösung: mamind.c.

File-I/O

  1. File-I/O zeichenweise: Unnötige Leerzeichen entfernen.
    Musterlösung: unindent.c.
  2. File-I/O zeichenweise: Klammernprüfung.
    Musterlösung: klammer.c (alternativ klammer2.c), klammer-rek.c (alternativ klammer2-rek.c).
  3. File-I/O zeilenweise, Stringfunktionen: Textersetzung.
    Musterlösung: subst.c, subst-func1.c, subst-func2.c.

Strukturen

  1. Erste Strukturen: Klassenliste.
    Musterlösung: klassenl.c.
  2. Strukturen: Datums-Systemfunktionen.
    Musterlösung: wochentag.c.
  3. Strukturen: dir-Befehl.
    Musterlösung: mydir1.c, mydir2.c, mydir3.c, mydir3a.c.
  4. Strukturen & Funktionen: Bruchrechnen.
    Musterlösung: bruch.c, bruch-kuerzen.c.
  5. 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).
  6. 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.
  7. Strukturen & Pointer, malloc: Verkettete Liste.
    Musterlösung: liste.c.
    Alternative Lösung mit "Pointer-auf-Pointer-Trick": liste-pp.c.
  8. 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

  1. Bitrechnen: Bin- und Hex-Ausgabe.
    Musterlösung: binhex.c.
  2. Bitrechnen: Bytes umdrehen.
    Musterlösung: endian.c, endian-loop.c.
  3. Bit-Operationen: LED-Muster (mit SDL-Grafik).
    Hauptprogramm zum Erweitern: leds-angabe.c.
    Musterlösung: leds.c, leds-sp.c.
  4. Bit-Operationen: Gray-Code in mehreren Varianten.
    Musterlösung: gray-direkt.c, gray-voriger.c, gray-refl.c, gray-rek.c, gray-rek-ptr.c.
 
Stoff C
Home