主题思想 坑主要在于,输入的学分可能是0 ,如果所有的学分都是0,即学分和为0的话,则认为是没有GPA 输出-1
AC代码:
#include <iostream>
#include<cstdio>
using namespace std;
double getGPA(double score){
if(score>=90) return 4.0;
else if(score>=80) return 3.0;
else if(score>=70) return 2.0;
else if(score>=60) return 1.0;
else return 0;
}
const double eps=1e-8;
int main()
{
int n;
double s,p;
double ss;
double pp;
int flag=-1;
while(scanf("%d",&n)!=EOF){
flag=-1;
ss=0;
pp=0;
for(int i=0;i<n;i++){
scanf("%lf%lf",&s,&p);
if(p+1<eps)continue;
else flag=1;
ss+=s;
pp+=s*getGPA(p);
}
double ans=pp/ss;
if(flag==-1||ss==0){
printf("-1\n");
}else
printf("%.2lf\n",ans);
}
return 0;
}