6.处理批次数据
程序中最常见的复杂问题之一是处理批次数据。
在本文中,我们将通过编写读取学生考试和作业成绩并计算最终成绩的程序,了解更多处理批次数据的方法。 我们将学习如何存储所有成绩,即使我们提前不知道有多少成绩。
期末成绩占40%,期中成绩占20%,课后作业成绩平均分占40%(我们不知道有多少课后作业成绩)
如何解决?
思路: 在while循环中读取课后作业成绩,并计数。当读取到EOF时,系统自动停止读取。我们通过计数知道有多少课后作业次数,并用变量储存课后作业总分。总分/计数 = 平均分。
<iomanip>头部定义了setprecision()函数,它让我们说出我们希望输出包含多少个有效数字。
#include <iostream> #include <string> #include <iomanip> using namespace std; int main() { string name; cout << "What's your name: "; cin >> name; cout << "Hello, " << name << "!" << endl; double finalGrade, middleGrade; cout << "Please enter your midterm and final exam grades: "; cin >> middleGrade >> finalGrade; int count = 0; double sum = 0; cout << "Enter all your homework grades, followed by end-of-file:"; double x; while(cin >> x) { count++; sum += x; } streamsize prec = cout.precision(); cout << setprecision(3) << name << ", your final grade is: " << 0.4 * finalGrade + 0.2 * middleGrade + 0.4 * sum / count << setprecision(prec) << endl; system("pause"); return 0; }