1601 - 学分绩点
时间限制 : 1 秒
内存限制 : 32 MB
北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。<br />
公式如下:
实际成绩 绩点
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)。
<br />
题目输入
第一行 总的课程数n(n<10);<br />
第二行 相应课程的学分(两个学分间用空格隔开);
第三行 对应课程的实际得分;
此处输入的所有数字均为整数。
<br />
题目输出
输出有一行,总评绩点,精确到小数点后2位小数。(printf("%.2f",GPA);)
<br />
输入/输出样例
输入格式
6 8 5 1 10 5 9 59 63 65 56 96 82 7 2 2 6 3 8 7 2 55 53 54 93 83 72 67
输出格式
1.48 1.92
C语言解答
#include<stdio.h> float switchgoal(int n) { float num=0.0; if(n>=90) num=4.0; else if(n>=85) num=3.7; else if(n>=82) num=3.3; else if(n>=78) num=3.0; else if(n>=75) num=2.7; else if(n>=72) num=2.3; else if(n>=68) num=2.0; else if(n>=64) num=1.5; else if(n>=60) num=1.0; return num; } int main() { int n; int a[10]; int b[10]; float c[10]; float m; float sum; int k; int i,j; while(scanf("%d",&n)!=EOF) { k=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); k+=a[i]; } for(i=0;i<n;i++) { scanf("%d",&b[i]); m=switchgoal(b[i]); c[i]=m; } sum=0; for(i=0;i<n;i++) sum+=a[i]*1.0*c[i]; printf("%.2f\n",sum/(k*1.0)); } return 0; }
C++解答
#include <stdio.h> #include <stdlib.h> int main() { int n, i, xufen; int credit[11]; int score[11]; double gpai, count; while(scanf("%d",&n) != EOF) { count = 0.00; xufen = 0; //获取学分 for(i = 0; i < n; i ++) { scanf("%d",credit + i); xufen += credit[i]; } //获取实际得分 for(i = 0; i < n; i ++) { scanf("%d",score + i); if(score[i] <= 100 && score[i] >= 90) { count += 4.0 * credit[i]; }else if(score[i] <= 89 && score[i] >= 85) { count += 3.7 * credit[i]; }else if(score[i] <= 84 && score[i] >= 82) { count += 3.3 * credit[i]; }else if(score[i] <= 81 && score[i] >= 78) { count += 3.0 * credit[i]; }else if(score[i] <= 77 && score[i] >= 75) { count += 2.7 * credit[i]; }else if(score[i] <= 74 && score[i] >= 72) { count += 2.3 * credit[i]; }else if(score[i] <= 71 && score[i] >= 68) { count += 2.0 * credit[i]; }else if(score[i] <= 67 && score[i] >= 64) { count += 1.5 * credit[i]; }else if(score[i] <= 63 && score[i] >= 60) { count += 1.0 * credit[i]; }else { count += 0 * credit[i]; } } //求gpa printf("%.2lf\n",count / xufen); } return 0; }