/* **************************************************************** ex01/prog03.c Last update: Sep 10 2026 **************************************************************** */ #include char ScoreToGrade(int); int GradeToPoint(char); int main() { char gchar; int score, credit, point; int sumpoint=0, sumcredit=0; /* Enter score and credit */ while (1) { printf("Enter score and credit (Ctrl+D to stop): "); if (scanf("%d%d", &score, &credit) == EOF) break; /* Evaluate score */ gchar=ScoreToGrade(score); point=GradeToPoint(gchar); printf("Grade for %d is %c, Grade Point (GP) is %d. (%d credits)\n\n", score, gchar, point, credit); /* Add score and add credit */ sumpoint += point*credit; sumcredit += credit; } /* Output GPA */ printf("\nGrade Point Average (GPA): %.3f, (Total credits: %d)\n", (double)sumpoint/sumcredit, sumcredit); return 0; } /* **************************************** 点数を評価に変換する関数 当面、0-100点以外の入力は考えない **************************************** */ char ScoreToGrade(int score) { if (score>=80) return 'A'; else if (score>=65) return 'B'; else if (score>=50) return 'C'; else if (score>=35) return 'D'; return 'F'; } /* **************************************** 評価を評価点数に変換 **************************************** */ int GradeToPoint(char grade) { if (grade=='A') return 4; else if (grade=='B') return 3; else if (grade=='C') return 2; else return 0; /* A-C以外は全て0 */ }