#include <stdio.h>
// function prototype
char calcLetterGrade( int score) ;
int main( void )
{
printf ( "Score: 95 -> Grade: %c\n " , calcLetterGrade
( 95 ) ) ; printf ( "Score: 82 -> Grade: %c\n " , calcLetterGrade
( 82 ) ) ; printf ( "Score: 75 -> Grade: %c\n " , calcLetterGrade
( 75 ) ) ; printf ( "Score: 62 -> Grade: %c\n " , calcLetterGrade
( 62 ) ) ; printf ( "Score: 45 -> Grade: %c\n " , calcLetterGrade
( 45 ) ) ; printf ( "Score: -5 -> Grade: %c\n " , calcLetterGrade
( - 5 ) ) ; // invalid printf ( "Score: 150 -> Grade: %c\n " , calcLetterGrade
( 150 ) ) ; // invalid return 0 ;
}
// **************************************************
// Function: calcLetterGrade
//
// Description:
// Maps a numeric test score (0–100) to a letter grade.
// The grading scale is as follows:
// 90–100 -> 'A'
// 80–89 -> 'B'
// 70–79 -> 'C'
// 60–69 -> 'D'
// 0–59 -> 'F'
// Any score outside 0–100 returns 'I' (invalid).
//
// Parameters:
// score - numeric test score
//
// Returns:
// Letter grade ('A', 'B', 'C', 'D', 'F', or 'I')
// **************************************************
char calcLetterGrade( int score)
{
char result; /* letter grade result */
// map score to letter grade
if ( score >= 90 )
result = 'A' ;
else if ( score >= 80 )
result = 'B' ;
else if ( score >= 70 )
result = 'C' ;
else if ( score >= 60 )
result = 'D' ;
else if ( score >= 0 )
result = 'F' ;
else
result = 'I' ; /* invalid score */
// check for invalid values over 100
if ( score > 100 )
result = 'I' ;
return result;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBmdW5jdGlvbiBwcm90b3R5cGUKY2hhciBjYWxjTGV0dGVyR3JhZGUoaW50IHNjb3JlKTsKCmludCBtYWluKHZvaWQpCnsKICAgIHByaW50ZigiU2NvcmU6IDk1IC0+IEdyYWRlOiAlY1xuIiwgY2FsY0xldHRlckdyYWRlKDk1KSk7CiAgICBwcmludGYoIlNjb3JlOiA4MiAtPiBHcmFkZTogJWNcbiIsIGNhbGNMZXR0ZXJHcmFkZSg4MikpOwogICAgcHJpbnRmKCJTY29yZTogNzUgLT4gR3JhZGU6ICVjXG4iLCBjYWxjTGV0dGVyR3JhZGUoNzUpKTsKICAgIHByaW50ZigiU2NvcmU6IDYyIC0+IEdyYWRlOiAlY1xuIiwgY2FsY0xldHRlckdyYWRlKDYyKSk7CiAgICBwcmludGYoIlNjb3JlOiA0NSAtPiBHcmFkZTogJWNcbiIsIGNhbGNMZXR0ZXJHcmFkZSg0NSkpOwogICAgcHJpbnRmKCJTY29yZTogLTUgLT4gR3JhZGU6ICVjXG4iLCBjYWxjTGV0dGVyR3JhZGUoLTUpKTsgICAvLyBpbnZhbGlkCiAgICBwcmludGYoIlNjb3JlOiAxNTAgLT4gR3JhZGU6ICVjXG4iLCBjYWxjTGV0dGVyR3JhZGUoMTUwKSk7IC8vIGludmFsaWQKICAgIHJldHVybiAwOwp9CgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBGdW5jdGlvbjogY2FsY0xldHRlckdyYWRlCi8vCi8vIERlc2NyaXB0aW9uOgovLyAgIE1hcHMgYSBudW1lcmljIHRlc3Qgc2NvcmUgKDDigJMxMDApIHRvIGEgbGV0dGVyIGdyYWRlLgovLyAgIFRoZSBncmFkaW5nIHNjYWxlIGlzIGFzIGZvbGxvd3M6Ci8vICAgICAgIDkw4oCTMTAwIC0+ICdBJwovLyAgICAgICA4MOKAkzg5ICAtPiAnQicKLy8gICAgICAgNzDigJM3OSAgLT4gJ0MnCi8vICAgICAgIDYw4oCTNjkgIC0+ICdEJwovLyAgICAgICAw4oCTNTkgICAtPiAnRicKLy8gICBBbnkgc2NvcmUgb3V0c2lkZSAw4oCTMTAwIHJldHVybnMgJ0knIChpbnZhbGlkKS4KLy8KLy8gUGFyYW1ldGVyczoKLy8gICBzY29yZSAtIG51bWVyaWMgdGVzdCBzY29yZQovLwovLyBSZXR1cm5zOgovLyAgIExldHRlciBncmFkZSAoJ0EnLCAnQicsICdDJywgJ0QnLCAnRicsIG9yICdJJykKLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKY2hhciBjYWxjTGV0dGVyR3JhZGUoaW50IHNjb3JlKQp7CiAgICBjaGFyIHJlc3VsdDsgLyogbGV0dGVyIGdyYWRlIHJlc3VsdCAqLwoKICAgIC8vIG1hcCBzY29yZSB0byBsZXR0ZXIgZ3JhZGUKICAgIGlmIChzY29yZSA+PSA5MCkKICAgICAgICByZXN1bHQgPSAnQSc7CiAgICBlbHNlIGlmIChzY29yZSA+PSA4MCkKICAgICAgICByZXN1bHQgPSAnQic7CiAgICBlbHNlIGlmIChzY29yZSA+PSA3MCkKICAgICAgICByZXN1bHQgPSAnQyc7CiAgICBlbHNlIGlmIChzY29yZSA+PSA2MCkKICAgICAgICByZXN1bHQgPSAnRCc7CiAgICBlbHNlIGlmIChzY29yZSA+PSAwKQogICAgICAgIHJlc3VsdCA9ICdGJzsKICAgIGVsc2UKICAgICAgICByZXN1bHQgPSAnSSc7IC8qIGludmFsaWQgc2NvcmUgKi8KCiAgICAvLyBjaGVjayBmb3IgaW52YWxpZCB2YWx1ZXMgb3ZlciAxMDAKICAgIGlmIChzY29yZSA+IDEwMCkKICAgICAgICByZXN1bHQgPSAnSSc7CgogICAgcmV0dXJuIHJlc3VsdDsKfQ==