题目本身有问题。
首先学分和分数要求是实型的而不是整型的,这就要求用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;
}
}
本文介绍了一个用于计算GPA的C++程序的错误及改进方法。针对原程序中存在的问题,如学分和分数的数据类型定义不准确以及特殊情况处理缺失等,文章提供了修正后的代码示例,并解释了如何正确处理各种学分和成绩输入,确保计算结果的准确性。
1879

被折叠的 条评论
为什么被折叠?



