Hallo JamaicanPearl,
einige Varianten, Dein Problem zu lösen,
wurden ja im Thread genannt. Von mir dazu
noch etwas grundsätzlicher Senf 
Ich habe in 3 Monaten eine wichtige Prüfung mit umfangreichem
Stoff. Zu diesem Zweck möchte ich mir ein Lernprogramm in C
schreiben.
Wenn die Prüfung wichtig ist, dann nimm sie
ernst und vergeude nicht Deine Zeit mit solchen
Dingen. Programmiere ein wenig in der übrigen Zeit
herum, aber binde dieses niemals an Deine Prüfung.
Das Programm soll zufällig(!) Fragen aus einem Fragenpool
auswählen, auf Aufforderung die Antwort anzeigen und man kann
anschließend selbst auswählen, ob man die Frage richtig oder
falsch beantwortet hat (kein Multiple-Choice)
Schreib Dir Papp-Karten je mit Fragen und Antworten drauf.
Wenn Du fertig bist (mit Schreiben), beherrschst Du den
Stoff und es gibt keine Notwendigkeit für ein „Lernprogramm“ 
Nun möchte ich aber, dass das Programm falsch beantwortete
Fragen erst nach einem bestimmten Zeitraum (zb. frühestens
nach zehn Fragen) wieder anzeigt. Eine 3 mal richtig
beantwortete Frage soll noch viel später wieder angezeigt
werden dürfen (zb. nach 50 Fragen)
Sobald diese jedoch nur einmal wieder falsch beantwortet wird,
gilt wieder der Zeitraum für falsch beantwortete Fragen.

Nimm die Pappkarten, bei denen Du völlig sicher bist, dass
Du die Antwort beherrschst, aus dem Stapel raus 
Nun hab ich aber vor 2 Jahren das letzte mal C programmiert.
Das programmieren der Fragen selbst dürfte mir hoffentlich
keine probleme machen, aber ich hab noch keine so genaue Idee,
wie ich das Problem mit Zufallsgenerator und Zähler
(für Mindestzeitraum) löse… Oder wäre eventuell C++
mit Objektorientierung und dementsprechenden Eigenschaften
einfacher?
Schon die Fragestellung sollte Dir deutlich machen, dass
das Werkzeug C/C++ für Dich „auf die Schnelle“ nicht
geeignet ist, um für eine wichtige Prüfung zu lernen.
Nimm Deinen Kartenstapel und setze Dich in ein Eiscafé
oder in den Park 
Vielleicht bemerkt auch irgendjemand noch Denkfehler oder
Dinge die ich übersehen hab oder hat schlichtweg eine bessere
Idee?
Wie gesagt, wenn die Prüfung vorbei ist und Du den Kopf
frei hast, sollte es Dir leichter fallen, in die
Programmierung und die Struktur wieder einzudringen.
Noch dazu nach dem Erfolgserlebnis der bestandenen
Prüfung
Das wird dann ein Programm für die
„nächste Prüfung“.
Zum Programm: Jede Frage ist eine kleine
Struktur aus Text, Status und wiederhol_Zähler.
Dann führst Du einen globaler_Zähler
mit, in dem steht, wieviele Fragen
Du gerade bearbeitet hast. Der Status
bezeichnet, „wie“ Du die konkrete Frage be-
antwortet hast, bei „richtig“ gilt Status=Status+1,
bei falsch gilt Status=Status-1.
Bei der Beantwortung der Frage gilt dann:
if (status > 2) wiederhol_Zähler = globaler_Zähler + 50
if (status > 1) wiederhol_Zähler = globaler_Zähler + 20
if (status == 0) wiederhol_Zähler = globaler_Zähler + 5
if (status > -1) wiederhol_Zähler = globaler_Zähler + 3
sonst: if wiederhol_Zähler = globaler_Zähler + 1
dann: globaler_Zähler = globaler_Zähler + 1
jetzt neue_nummer auswürfeln und schauen ob
globaler_Zähler >= wiederhol_Zähler[neue_nummer]
der neuen Frage ist. Wenn nicht, andere
Frage auswürfeln (bis globaler_Zähler >= wiederhol_Zähler[…])
Grüße
CMБ