C Program that counts how many pass or fail grades and exits when a negative number is inputted

confusedcat picture confusedcat · Aug 2, 2013 · Viewed 20.4k times · Source

I'm a newbie to C Programming and we're still starting on the loops. For our exercise today, we were tasked to create a do-while program that counts how many pass and fail grades there are but the loop breaks when a negative number is inputted. Also, numbers above 100 is skipped. This is my program:

#include<stdio.h>
#include<conio.h>

int main()
{
int grade, pass, fail;

pass = 0;
fail = 0;

do {
    printf("Enter grade:\n");
    scanf("%d", &grade);
    printf("Enter -1 to end loop");
}

while(grade == -1){
    if(grade < 100){
        if(grade >= 50){
        pass = pass + 1;
        }
        else if {
        fail = fail + 1;
        }
    }
    break;
}
printf("Pass: %d", pass);
printf("Fail: %d", fail);

getch ();
return 0;
}

Can someone please tell me how to improve or where I went wrong?

Answer

jh314 picture jh314 · Aug 2, 2013

You need to put all of the code that you loop between the do and the while statements.

do {
     printf("Enter -1 to end loop");
     printf("Enter grade:\n");
     scanf("%d", &grade);         

     if(grade <= 100 && grade >= 0) {
          if(grade >= 50){
               pass = pass + 1;
          }
          else {
               fail = fail + 1;
          }
     }

} while(grade >= 0);

The general structure of a do-while loop is:

do {
   // all of the code in the loop goes here

} while (condition);
// <-- everything from here onwards is outside the loop