题目本身有问题。
首先学分和分数要求是实型的而不是整型的,这就要求用double,其次题目有个地方没说清楚,就是GPA不存在的情况,全都旷课算不存在,同时GPA为零也算不存在。
# include <iostream>
# include <iomanip>
using namespace std;
void main()
{
int n;
while(cin>>n)
{
double credit,score;
double count=0.0,credsum=0.0;
while(n-- > 0)
{
cin>>credit>>score;
if(score != -1)
credsum+=credit;
if(score>=90)
count+=credit*4;
else if(score>=80)
count+=credit*3;
else if(score>=70)
count+=credit*2;
else if(score>=60)
count+=credit*1;
}
if(credsum == 0 || count==0) cout<<"-1"<<endl;
else
cout<<fixed<<setprecision(2)<<count/credsum<<endl;
}
}