Coursera上北大《计算概论A》期中试题
【描述】
某校对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
公式如下:
实际成绩 绩点
90——100 4.0
85——89 3.7
82——84 3.3
78——81 3.0
75——77 2.7
72——74 2.3
68——71 2.0
64——67 1.5
60——63 1.0
60以下 0
①一门课程的学分绩点=该课绩点×该课学分
②总评绩点=所有学科绩点之和/所有课程学分之和
现要求你编写程序求出某人A的总评绩点(GPA)。
【输入】
第一行总的课程数n(n<10);
第二行相应课程的学分(学分以空格间隔);
第三行对应课程的实际得分;
此处输入的所有数字均为整数。
【输出】
输出有一行,总评绩点,保留2位小数。
【输入示例】
5
4 3 4 23
91 88 7269 56
【输出示例】
2.52
【C代码】
---------------
#include<stdio.h>
intmain() {
/* 成绩与绩点对应关系共10档
SCORE记录每一档成绩的下限、对应的GP记录这一档成绩的绩点
*/
int nCLASS = 10;
int SCORE[] = {90, 85, 82, 78, 75, 72, 68,64, 60, 0};
double GP[] = {4, 3.7, 3.3, 3.0, 2.7, 2.3,2.0, 1.5, 1.0, 0};
/* credits记录每门课 */
int credits[10] = {};
/* 课程数 */
int nCourse = 0;
/* 初始化总学分 */
int totalCredit = 0;
/* 初始化总绩点 */
double totalGP = 0;
int iCourse, iClass, tmpScore;
scanf("%d", &nCourse);
// 输入所有课的学分
for(iCourse = 0; iCourse < nCourse;++iCourse) {
scanf("%d",&credits[iCourse]);
totalCredit += credits[iCourse];
}
/* 总绩点(乘以权重)
输入每门课的成绩并判断绩点,并累加至totalGP中
*/
for(iCourse = 0; iCourse < nCourse;++iCourse) {
scanf("%d", &tmpScore);
/* 判断这个成绩落入那个绩点类别 */
for(iClass = 0; iClass < nCLASS;++iClass) {
if(tmpScore >= SCORE[iClass]) {
totalGP += credits[iCourse] *GP[iClass];
break;
}
}
}
printf("%.2f\n", (totalGP /totalCredit));
return 0;
}