Programm beendet sich

Bei mir is flogendes Problem, das kleine süße programm was ich mal ausprobiert hab beendet sich, obwohl ich es so machen wollte, dass man leertaste drücken muss, um weiter zukommen bzw. um zu beenden.
hier der quellcode:

#include 
main()
{
int alter;
int frage1;
int frage2;
int frage3;
int frage4;
int frage5;
int frage6;
char eingabe;
char schein;
printf("\n\t\t\tIntelligenztest\n");
printf("\nhallo! na fuehlst du dich stark genug um diesen test zu machen?"
 "(y/n)\n"); 
scanf("%c", &eingabe);
system("cls"); 

 if (eingabe=='y')
 { 
 int alter;
 printf("\nok, dann geht es jetzt los...");
 printf("\nwie alt bist du?");
 scanf("%i", &alter);
 system("cls"); 

 if(alter 20)
 {
 printf("\nOb die grauen Gehirnzellen noch was hergeben?!")
 ;
 }
 printf("\nDas werden wir ja jetzt testen :wink:\n\n");
 printf("\nHast du denn einen Fuehrerschein?");
 scanf("%s",&schein);
 system("cls");
 if (schein =='y')
 { 
 printf("\nGut, dann bist du eine runde weiter!");
 } 
 else
 {
 printf("\nDas sagt ja schon einiges...aber darfst trotzdem mal");
 printf("weiter raten");
 } 
 printf("\n\nJetzt wird es schwer...\n");
 printf("\n\nAufgabe1:");
 printf("\n\nWelches Tier ist kein Tier?\n");
 printf("\n1:Eisbaer\n2:Blaubaer\n3:Braunbaer");
 printf("\n4:Schwarzbaer\n5:stuck\_out\_tongue:andabaer\n");
 printf("Bitte Nr. eingeben:\n");
 scanf("%i",&frage1);
 system("cls"); 
 if (frage1==2)
 {
 printf("\nWow weisst du viel \*g\*...\n");
 printf("Machen wir doch mal direkt weiter.\n");
 printf("\n\nAufgabe2:\n");
 printf("\nHans ist 2kg leichter als Fritz.\n");
 printf("Fritz ist 5kg schwerer als Peter\n");
 printf("Peter ist 67kg schwer.\n");
 printf("Wieviel wiegen Hans und Fritz zusammen?\n");
 printf("\n1: 136\n2: 163\n3: 146\n4: 142\n5: 70\n");
 printf("Bitte richtige Antwort eingeben:\n");
 scanf("%i",&frage2);
 system("cls");
 if (frage2==5)
 {
 printf("\nSchon wieder richtige Antwort!\n");

 printf("\n\nAufgabe3:\n");
 printf("\nSetze die fehlende Zahl ein. 1 4 7 10 ?\n");
 printf("\n1: 17\n2: 11\n3: 13\n4: 12\n5: 15");
 printf("\nBitte richtige Antwort eingeben:\n ");
 scanf("%i",&frage3);
 system("cls"); 
 if (frage3==3)
 {
 printf("\nBist ein ganz schoen schlaues ");
 printf("Kerlchen\n");
 printf("\n\nAufgabe4:\n");
 printf("\nGestern war Montag.");
 printf("\nWelcher Tag ist morgen in 2 Wochen?\n");
 printf("\n1: Dienstag\n2: Donnerstag\n3:");
 printf(" Freitag\n4: Montag\n5: Mittwoch");
 printf("\nBitte richtige Antwort eingeben:\n");
 scanf("%i",&frage4);
 system("cls");
 if (frage4==5)
 {
 printf("\nDu Superhirn");
 }
 else
 {
 printf("\nlogisches denken ist nicht ");
 printf("deine Staerke, oder?!");
 }
 }
 else
 {
 printf("\nWie kann man nur so versagen?!\n");
 }
 }
 else
 {
 printf("\nNennt man sowas Versager?!\n");
 }
 }
 else
 {
 printf("\nNicht mal sowas weisst du?!");
 printf("\nNoch eine Chance bekommst du von mir leider nicht\n");
 }


 }

 else 
 {
 printf("\nhast du kein ego?\n");
 printf("\n1: Doch...aber sowas ist mir zu bloed\n");
 printf("\n2: Hab einfach keine Zeit den Test zu machen\n");
 scanf("%i",&frage5);
 system("cls");
 if (frage5==1)
 {
 printf("\nAngst vor der Wahrheit...was?!\n");
 }
 else
 {
 printf("\nDiese Ausrede zaehlt nicht!\n");
 }
 }
 printf("\t ////////\n");
 printf("\t ( o o )\n");
 printf("\t --ooO-(\_)-Ooo--");
 printf("\n\n\n\n\n\n\n\n\n\n\n\n\tDieser Test ist von xxx entwickelt");
 printf(" worden\n\n\n\n");

getchar();
return (0);

}

Hallo,

einmal das wesentliche vom Programm zusammengefasst und etwas kommentiert

#include
main() /* Rueckgabetyp fehlt (int) */
{
int alter; /* ungenutzt */
int frage1;
int frage2;
int frage3;
int frage4;
int frage5;
int frage6; /* ungenutzt */
char eingabe;
char schein;

printf("\nhast du kein ego?\n");
printf("\n1: Doch…aber sowas ist mir zu bloed\n");
printf("\n2: Hab einfach keine Zeit den Test zu
machen\n");
scanf("%i",&frage5);
system(„cls“); /* Systemspezifisch */
}

getchar();
return (0);

}

Das Problem ist die Kombination ‚scanf()‘ mit ‚getchar()‘. ‚scanf()‘ liest genau das, was ihm vorgegeben wurde, d.h. in diesem Fall eine Zahl. Du gibst aber noch ein ein, das wird durch ‚scanf()‘ nicht gelesen. Daher erhaelt ‚getchar()‘ das und hat schon sein Zeichen.
Zur Korrektur: Am besten das abfangen: 'while (getchar() != ‚\n‘) ; ’
Und Bitte dem Benutzer Bescheid geben, dass er druecken soll um das Programm zu beenden (warum eigentlich?).

Gruss
Diether Knof

Hallo,

#include
main()
{
.
.
.
entwickelt");
printf(" worden\n\n\n\n");

fflush(stdin);

getchar();
return (0);

}

MfG Peter(TOO)