-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
北京大学对本科生的成绩施行平均学分绩点制(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
1.一门课程的学分绩点=该课绩点*该课学分
2.总评绩点=所有学科绩点之和/所有课程学分之和
现要求你编写程序求出某人A的总评绩点(GPA)。
输入
-
第一行 总的课程数n(n<10);
第二行 相应课程的学分(两个学分间用空格隔开);
第三行 对应课程的实际得分;
此处输入的所有数字均为整数。
输出
- 输出有一行,总评绩点,精确到小数点后2位小数。(printf("%.2f",GPA);) 样例输入
-
5 4 3 4 2 3 91 88 72 69 56
样例输出
-
2.52
问题链接:Bailian2722 学分绩点
问题分析:(略)程序说明:需要数组存储输入的数据,然后再根据题意计算。
AC的C语言程序如下:
/* Bailian2722 学分绩点 */
#include <stdio.h>
#define N 10
int credit[N], score[N];
int main(void)
{
int n, i;
float sum1, sum2;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &credit[i]);
for(i=0; i<n; i++)
scanf("%d", &score[i]);
sum1 = sum2 = 0;
for(i=0; i<n; i++) {
if(score[i] >= 90 && score[i] <= 100) {
sum1 += credit[i] * 4.0;
} else if(score[i] >= 85 && score[i] <= 89) {
sum1 += credit[i] * 3.7;
} else if(score[i] >= 82 && score[i] <= 84) {
sum1 += credit[i] * 3.3;
} else if(score[i] >= 78 && score[i] <= 81) {
sum1 += credit[i] * 3.0;
} else if(score[i] >= 75 && score[i] <= 77) {
sum1 += credit[i] * 2.7;
} else if(score[i] >= 72 && score[i] <= 74) {
sum1 += credit[i] * 2.3;
} else if(score[i] >= 68 && score[i] <= 71) {
sum1 += credit[i] * 2.0;
} else if(score[i] >= 64 && score[i] <= 67) {
sum1 += credit[i] * 1.5;
} else if(score[i] >= 60 && score[i] <= 63) {
sum1 += credit[i] * 1.0;
} else if(score[i] <= 59) {
;
}
sum2 += credit[i];
}
printf("%.2f\n", sum1 / sum2);
return 0;
}