为什么在程序中输入另一个输入会给我不同的结果?

时间:2019-11-10 10:33:55

标签: c++

我刚刚完成了对作业的编码。但是有一些我自己无法解决的错误。 这是一个问题:编写一个程序,查找有多少学生获得的分数比平均30个测验的分数高。(我需要循环回答此问题)

当我运行输入代码为10、10、10、10、1的代码时,我得到了真正的答案,这是4个学生的分数超出平均水平。 但是,当我用输入80、50、30、65、47输入代码来运行代码时,我得到的答案是错误的。有3个学生获得的分数比测验的平均值还要高。

#include <iostream>

using namespace std;

int main()
{
    int mark, student = 0;
    int i, sum = 0;
    double avg;

    for(i=1; i <= 5; i++){

        cout << "Enter the student " << i << " mark : ";
        cin >> mark;

        sum = sum + mark;
        avg = sum / 5;

        if(mark > avg) {

            student++;

        }

    }
     cout << "\nRESULT : ";
     cout << "\n" << student <<  " student get mark more than the average 
of quiz." << endl;

     return 0;
}

2 个答案:

答案 0 :(得分:1)

在第一个循环中,总和为10,平均值为2。您需要先计算最终平均值,然后在第二个循环中计算通过的学生。

答案 1 :(得分:0)

我现在明白了。感谢您的快速回复。

这是我的最终代码:

    #include <iostream>

using namespace std;

int main()
{
    int mark[5];
    int i, sum = 0;
    double avg;
    int student = 0;

    for(i=0; i<5; i++){

        cout << "Enter the student mark : ";
        cin >> mark[i];

        sum = sum + mark[i];
    }

    avg = sum / 5.0;

    for(i=0; i<5; i++){

        if(mark[i]>avg){

            student++;

        }
    }

     cout << "\nRESULT : ";
     cout << "\n" << student <<  " student get mark more than the average of quiz." 
<< endl;

     return 0;
}

如果有错误告诉我。