在我的课程的一个模块中,我们正在编写一个程序,要求输入班名、成绩和学分数量。在一定数量的类的末尾,它要求我们使用setprecision(2)计算GPA到2个小数点。我所有的程序函数,除了它计算的GPA是3.00而不是3.14。我的totalPoints是22,而totalCredits是7,所以它理所当然地应该是3.14。你能理解为什么我会得到3.00吗?任何帮助都是非常感谢的,因为我对此非常陌生。
#include iostream
#include iomanip
#include string
//I took out the < and > because it made the words disappear
using namespace std;
int main(){
cout<< std::fixed << std::setprecision(2);
int totalCredits = 0;
int gradePoints = 0;
string courseName;
cout<<"Enter a course name: ";
getline (cin, courseName);
cout<<courseName <<endl;
int credits;
cout<<"Enter number of credits: ";
cin>>credits;
cout<<credits <<endl;
totalCredits = totalCredits + credits;
string grade;
cout<<"Enter your grade (A, B, C, D, F): ";
cin>>grade;
cout<<grade <<endl;
if (grade == "A"){
gradePoints = gradePoints + (4.00 * credits);
}
else if (grade == "B"){
gradePoints = gradePoints + (3.00 * credits);
}
else if (grade == "C"){
gradePoints = gradePoints + (2.00 * credits);
}
else if (grade == "D"){
gradePoints = gradePoints + (1.00 * credits);
}
string answer;
cout<<"Continue ('Yes' or 'No')? ";
cin>>answer;
cout<<answer <<endl;
while (answer == "Yes"){
cout<<"Enter a course name: ";
cin.ignore();
getline (cin, courseName);
cout<<courseName <<endl;
cout<<"Enter number of credits: ";
cin>>credits;
cout<<credits <<endl;
totalCredits = totalCredits + credits;
cout<<"Enter your grade (A, B, C, D, F): ";
cin>>grade;
cout<<grade <<endl;
if (grade == "A"){
gradePoints = gradePoints + (4.00 * credits);
}
else if (grade == "B"){
gradePoints = gradePoints + (3.00 * credits);
}
else if (grade == "C"){
gradePoints = gradePoints + (2.00 * credits);
}
else if (grade == "D"){
gradePoints = gradePoints + (1.00 * credits);
}
cout<<"Continue ('Yes' or 'No')? ";
cin>>answer;
cout<<answer <<endl;
}
cout<<"Total grade points: " <<gradePoints <<endl;
cout<<"Total credits attempted: " <<totalCredits <<endl;
float gpa = 0;
gpa = gradePoints/totalCredits;
cout<<"Your GPA is " <<gpa <<endl;
return 0;
}https://stackoverflow.com/questions/59025212
复制相似问题