14 学分绩点
任务描述
北京大学对本科生的成绩施行平均学分绩点制(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)。
输入格式:
输出有一行,总评绩点,精确到小数点后2位小数。(printf(“%.2f”,GPA);)
输入样例:
5 4 3 4 2 3 91 88 72 69 56
输出样例:
2.52
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
本题思路简单,注意用double而不是float。
代码如下:
*#includeint main() { int n,a[10],b[10]; int i=0,result=0;; double sum=0.0; scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); result+=a[i]; } for(i=0;i scanf("%d",&b[i]); if(b[i]>=90) sum+=4.0*a[i]; else if(b[i]>=85) sum+=3.7*a[i]; else if(b[i]>=82) sum+=3.3*a[i]; else if(b[i]>=78) sum+=3.0*a[i]; else if(b[i]>=75) sum+=2.7*a[i]; else if(b[i]>=72) sum+=2.3*a[i]; else if(b[i]>=68) sum+=2.0*a[i]; else if(b[i]>=64) sum+=1.5*a[i]; else if(b[i]>=60) sum+=1.0*a[i]; else sum+=0; } printf("%.2f",sum/result); return 0; }
也可以是这样的
#includedouble grade(int m) { int i; if(m>=90) return 4.0; else if(m>=85) return 3.7; else if(m>=82) return 3.3; else if(m>=78) return 3.0; else if(m>=75) return 2.7; else if(m>=72) return 2.3; else if(m>=68) return 2.0; else if(m>=64) return 1.5; else if(m>=60) return 1.0; else return 0; } int main() { int n,a[10],b[10]; int i=0,result=0; double sum=0.0; scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); result+=a[i]; } for(i=0;i scanf("%d",&b[i]); sum+=grade(b[i])*a[i]; } printf("%.2f",sum/result); return 0; }
反正也差不多吧。
I’m back and I’m unstoppable !



