// This program allows a user to enter student names and the grades for allows
// of their final exams. It then outputs the student name and GPA.
// CMIS102 Homework 3
// C Code
#include <stdio.h>
#include <string.h>
int main( void ) {
// Declare and initialize variables
char studentName[ 100 ] ;
char letGrade;
int numGrade;
int gradeTotal = 0 ;
float count, gpa;
// First loop
// Initializes count and gradeTotal each time the loop
// is executed and prompts for a student name
while ( 1 ) {
count = 0 ;
gradeTotal = 0 ;
printf ( "Please enter a student name (0 to exit): " ) ; scanf ( "%s" , studentName
) ;
// If user enters 0, exit program
if ( strcmp ( studentName
, "0" ) == 0 ) { break ;
}
// Enter nested while loop
// prompts user for letter grades
else {
while ( 1 ) {
printf ( "Enter capital letter grade for %s (0 if finished): " , studentName
) ;
// If user enters 0, output name and GPA, break loop and go to parent loop
if ( letGrade == '0' ) {
// Compute GPA as an average
gpa = gradeTotal / count;
printf ( "%s has a GPA of: %.2f\n " , studentName
, gpa
) ; printf ( "Continuing to the next student...\n " ) ; break ;
}
// If not zero, then identify grade integer value from letter grade
else {
if ( letGrade == 'A' )
numGrade = 4 ;
if ( letGrade == 'B' )
numGrade = 3 ;
if ( letGrade == 'C' )
numGrade = 2 ;
if ( letGrade == 'D' )
numGrade = 1 ;
if ( letGrade == 'F' )
numGrade = 0 ;
// Add grade value to gradeTotal
gradeTotal += numGrade;
// Add one to count for grade entered
count += 1 ;
}
}
}
}
return 0 ;
}
Ly8gVGhpcyBwcm9ncmFtIGFsbG93cyBhIHVzZXIgdG8gZW50ZXIgc3R1ZGVudCBuYW1lcyBhbmQgdGhlIGdyYWRlcyBmb3IgYWxsb3dzCi8vIG9mIHRoZWlyIGZpbmFsIGV4YW1zLiAgSXQgdGhlbiBvdXRwdXRzIHRoZSBzdHVkZW50IG5hbWUgYW5kIEdQQS4KLy8gQ01JUzEwMiBIb21ld29yayAzCi8vIEMgQ29kZQoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBtYWluKHZvaWQpIHsKICAvLyBEZWNsYXJlIGFuZCBpbml0aWFsaXplIHZhcmlhYmxlcwogIGNoYXIgc3R1ZGVudE5hbWVbMTAwXTsKICBjaGFyIGxldEdyYWRlOwogIGludCBudW1HcmFkZTsKICBpbnQgZ3JhZGVUb3RhbCA9IDA7CiAgZmxvYXQgY291bnQsIGdwYTsKCiAgLy8gRmlyc3QgbG9vcAogIC8vIEluaXRpYWxpemVzIGNvdW50IGFuZCBncmFkZVRvdGFsIGVhY2ggdGltZSB0aGUgbG9vcAogIC8vIGlzIGV4ZWN1dGVkIGFuZCBwcm9tcHRzIGZvciBhIHN0dWRlbnQgbmFtZQogIHdoaWxlKDEpIHsKICAgIGNvdW50ID0gMDsKICAgIGdyYWRlVG90YWwgPSAwOwogICAgcHJpbnRmKCJQbGVhc2UgZW50ZXIgYSBzdHVkZW50IG5hbWUgKDAgdG8gZXhpdCk6ICIpOwogICAgc2NhbmYoIiVzIiwgc3R1ZGVudE5hbWUpOwogICAgcHJpbnRmKCIlc1xuIiwgc3R1ZGVudE5hbWUpOwoKICAgIC8vIElmIHVzZXIgZW50ZXJzIDAsIGV4aXQgcHJvZ3JhbQogICAgaWYgKHN0cmNtcChzdHVkZW50TmFtZSwgIjAiKSA9PSAwKSB7CiAgICAgIHByaW50ZigiRXhpdGluZy4uLlxuIik7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIEVudGVyIG5lc3RlZCB3aGlsZSBsb29wCiAgICAvLyBwcm9tcHRzIHVzZXIgZm9yIGxldHRlciBncmFkZXMKICAgIGVsc2UgewogICAgICB3aGlsZSgxKSB7CiAgICAgICAgcHJpbnRmKCJFbnRlciBjYXBpdGFsIGxldHRlciBncmFkZSBmb3IgJXMgKDAgaWYgZmluaXNoZWQpOiAiLCBzdHVkZW50TmFtZSk7CiAgICAgICAgc2NhbmYoIiAlYyIsICZsZXRHcmFkZSk7CiAgICAgICAgcHJpbnRmKCIlY1xuIiwgbGV0R3JhZGUpOwoKICAgICAgICAvLyBJZiB1c2VyIGVudGVycyAwLCBvdXRwdXQgbmFtZSBhbmQgR1BBLCBicmVhayBsb29wIGFuZCBnbyB0byBwYXJlbnQgbG9vcAogICAgICAgIGlmIChsZXRHcmFkZSA9PSAnMCcpIHsKICAgICAgICAgIC8vIENvbXB1dGUgR1BBIGFzIGFuIGF2ZXJhZ2UKICAgICAgICAgIGdwYSA9IGdyYWRlVG90YWwgLyBjb3VudDsKICAgICAgICAgIHByaW50ZigiJXMgaGFzIGEgR1BBIG9mOiAlLjJmXG4iLCBzdHVkZW50TmFtZSwgZ3BhKTsKICAgICAgICAgIHByaW50ZigiQ29udGludWluZyB0byB0aGUgbmV4dCBzdHVkZW50Li4uXG4iKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgbm90IHplcm8sIHRoZW4gaWRlbnRpZnkgZ3JhZGUgaW50ZWdlciB2YWx1ZSBmcm9tIGxldHRlciBncmFkZQogICAgICAgIGVsc2UgewogICAgICAgICAgaWYgKGxldEdyYWRlID09ICdBJykKICAgICAgICAgICAgbnVtR3JhZGUgPSA0OwogICAgICAgICAgaWYgKGxldEdyYWRlID09ICdCJykKICAgICAgICAgICAgbnVtR3JhZGUgPSAzOwogICAgICAgICAgaWYgKGxldEdyYWRlID09ICdDJykKICAgICAgICAgICAgbnVtR3JhZGUgPSAyOwogICAgICAgICAgaWYgKGxldEdyYWRlID09ICdEJykKICAgICAgICAgICAgbnVtR3JhZGUgPSAxOwogICAgICAgICAgaWYgKGxldEdyYWRlID09ICdGJykKICAgICAgICAgICAgbnVtR3JhZGUgPSAwOwoKICAgICAgICAgIC8vIEFkZCBncmFkZSB2YWx1ZSB0byBncmFkZVRvdGFsCiAgICAgICAgICBncmFkZVRvdGFsICs9IG51bUdyYWRlOwoKICAgICAgICAgIC8vIEFkZCBvbmUgdG8gY291bnQgZm9yIGdyYWRlIGVudGVyZWQKICAgICAgICAgIGNvdW50ICs9IDE7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJldHVybiAwOwp9Cg==