C++学生成绩平均计算器数组问题

Posted

技术标签:

【中文标题】C++学生成绩平均计算器数组问题【英文标题】:C++ Students score average calculator array problem 【发布时间】:2018-12-12 21:02:51 【问题描述】:

我正在尝试编写一个程序,将学生的最后分数计算为期中、测验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;
    

【问题讨论】:

您的代码很可能遭受整数除法的影响。 请注意,这与 Joy Division 完全不同。 【参考方案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;

【讨论】:

我猜数字不是这里的问题。程序应该显示所有学生的平均数,然后是他们班级的总平均数。我无法连接这两个,这是我的问题。 不确定你指的是哪个平均分,如果学生有 q1、q2、mt、fnl 的分数,程序不应该计算他得到的分数吗?那么全班的平均分呢?还有什么其他平均值? 计算学生总分的平均值。我的意思是在我们计算出 q1、q2、mt、fnl 之后。不仅如此。我能做到,那不是问题。【参考方案2】:

你不需要一个数组来计算班级平均值。只需将所有学生的分数相加并除以学生人数即可。那只需要一个变量(我称之为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;

【讨论】:

你的意思是自己输入分数?这会停止让用户输入吗? 不,不,但我不太明白你在问什么。我教你怎么计算全班平均分,这和分数怎么输入没有关系,只是计算而已。【参考方案3】:

您可以将所有学生的分数相加,最后除以学生总数。这将为您提供班级的总平均数。此外,我通过用加起来为 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.

【讨论】:

以上是关于C++学生成绩平均计算器数组问题的主要内容,如果未能解决你的问题,请参考以下文章

c语言:输入10个学生的成绩,求学生的平均成绩,并统计超过平均分数的学生人数。

如何在c++定义一个学生类以实现平均成绩的计算和查询功能?

java利用数组求平均成绩

利用JAVA编写程序,用一维数组保存20个学生的某门课程的成绩,计算平均成绩,并输出。

一个年级有m个班,每个班有n个学生,编写java程序用二维数组保存学生成绩,计算学生平均成绩

用数组求一个班级的平均成绩,请写出Java设计程序。