Write a C program that calculates and prints the average of several grades entered by the user.

The program should first prompt the user to enter the number of grades to process (at least 2 grades must be entered by user!) .

It should then prompt the user for each grade. As each grade is entered, the program should ensure that the grades entered are in the grade range of zero to 100. If the grade is not in that range, an error message should be displayed (as shown below), and the user should be re-prompted for a grade. Any bad grades entered should not be included in the average calculation.

Once all values are entered, the program should calculate and print the average of all of the positive values entered, rounded to the nearest whole number.

At the end display a message for the appropriate letter grade as shown here:

90 - 100: A
80 - 89: B
70 - 79: C
60 - 69: D
0 - 59: F

This program will feature the if statement as well as programming techniques for data validation. I call it a trap loop. It traps the user into entering valid data.

The dialog with the user should be as follows:

This program calculates the average of as many grades you wish to enter.
First, enter the number of grades to process: 4
Now enter the 4 grades to be averaged.
Enter grade #1: 100
Enter grade #2: 80
Enter grade #3: -20
*** Invalid entry. Grade must be 0 to 100. ***
Enter grade #3: 25
Enter grade #4: 54
The average of the 4 grades entered is 65
You have a letter grade of D

Recall: The blue text represents the "output" from your program and is shown for clarity only here. It is not required that your output be in this color. (Do not even attempt to try!). Also note that what the user types in is indicated by the bold black area above; Again, for clarity only.

A user-friendly message of your choosing should precede the dialog and explain the program (you can change the first sentence if you wish).

Notice the trap in grade #3 in the above.

Hints:

  • This program requires variables of type int and float.
  • Use printf and scanf statements to first prompt the user for the number of grades to be processed.
  • This program requires loop structure(s) (for, while or do -- your choice). Note that the loop in the input flushing code (to clear input buffer) does not count.
  • The loop requires some a printf and scanf statement to prompt user for a grade.
  • The loop also requires a selection structure (if, or if else) statement to check for bad data values.
  • The selection structure requires a printf statement to output error message if improper grade.
  • The program requires an accumulator to keep track of the sum of good grades entered.
  • Once all grades are entered, determine the average rounded to the nearest whole number. A printf statement will then be used to output the average.
  • Use another selection structure to determine the appropriate letter grade as described above. The selection structure will contain a printf statement to output the letter grade.
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.