C ++学生得分平均计算器数组问题

时间:2018-12-12 21:02:52

标签: c++ arrays loops for-loop

我正在尝试编写一个程序,计算学生的期末成绩,即期中测验1,测验2和期末测验,然后发现他们的班级平均水平取决于学生人数。程序将显示全班平均水平。用户应输入分数。我是C ++的新手,现在的问题是我找不到将for循环连接到类平均值的数组的方法。我的代码是否为此错误?我不知道该怎么办。

#include <iostream>
using namespace std;

int main()
{
    int mt, q1, q2, fnl, stdn, num;
    double cls[5], std, avg;

    cout << "Enter a number of students: ";
    cin >> num;

    for (stdn=0; stdn<num; stdn++) {
        cout<<"Enter mt, q1, q2, fnl of a "<<stdn+1<<". student in order:"<<endl;
        cin>>mt>>q1>>q2>>fnl;

        std = mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;

        cout<<stdn+1<<". students total score is "<<std<<endl;
    }
}

3 个答案:

答案 0 :(得分:1)

int类型始终将小数点后的值四舍五入。 因此,(int)3.84 == 3,因此您的std变量可能具有错误的值。 将所有变量定义为double以便开始。要计算平均值,只需添加分数,然后最后根据学生人数即可。

double mt, q1, q2, fnl, stdn, num, grades_sum = 0, avg;
...
for(stdn=0; stdn<num; stdn++){
    ...
    grades_sum += mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
    ...
}
avg = grades_sum/num;

答案 1 :(得分:0)

您不需要一个用于平均班级的数组。只需将所有学生的分数相加,然后除以学生数即可。那只需要一个变量(我称之为std_sum)而不是数组。像这样

double std_sum = 0.0;
for(stdn=0; stdn<num; stdn++){
    ...
   std = mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
   std_sum = std_sum + std; // add up all student scores
}
avg = std_total/num;

答案 2 :(得分:0)

您可以将所有学生分数相加,然后最后除以学生总数。这将为您提供全班平均水平。另外,我用整数加1的小数代替小数,从而避免了整数除法。我还编辑了for循环,使其从1开始并转到数字,以避免对所有数加1。

#include <iostream>
using namespace std;

int main()
{
    int mt, q1, q2, fnl, stdn, num;
    double cls[5], std;
    double classAvg = 0; // add a new variable

    cout << "Enter a number of students: ";
    cin >> num;

    for (stdn=1; stdn <= num; stdn++) {
       cout << "Enter mt, q1, q2, fnl of a " << stdn << ". student in order:" << endl;
       cin >> mt >> q1 >> q2 >> fnl;
       std = (mt * 0.3) + (q1 * 0.1) + (q2 * 0.1) + (fnl * 0.5);
       cout << stdn << ". students total score is " << std << endl;

       classAvg = classAvg + std; // start adding the totals of all the students
    }
    avg = classAvg/num; // find the total average by dividing by total students
    cout << "Class Average is " << classAvg << endl; // display average.
}