C++ 函数不将最低年级的学生返回主

C++ 函数不将最低年级的学生返回主,c++,C++,我想做一个程序来计算学生的平均成绩,同时降低最低分数。 为此,我为平均分数创建了3个函数,分别从用户输入和最低分数中获取分数。 然而,在main函数中,我并没有得到返回的最低值,而只是得到初始值。 这是密码,谢谢。 我只是发布了问题的主要部分,如果你想要剩下的代码,我会编辑问题 int main() { int students = 0; int avg = 0.0f; int total = 0; int i = 0; float lowest = 0;

我想做一个程序来计算学生的平均成绩,同时降低最低分数。 为此,我为平均分数创建了3个函数,分别从用户输入和最低分数中获取分数。 然而,在main函数中,我并没有得到返回的最低值,而只是得到初始值。 这是密码,谢谢。 我只是发布了问题的主要部分,如果你想要剩下的代码,我会编辑问题

int main() {
    int students = 0;
    int avg = 0.0f;
    int total = 0;
    int i = 0;
    float lowest = 0;
    int sumofhigh = 0;
    cout << "================Calculating average of grades while dropping lowest grade============\n \n";
    int score[25];

    getscores(score, total, i);
    cout << "\n";
    lowest =  lowgrade(score, students);
    cout << "The lowest score is: " << lowest << " ";


}

int lowgrade(int score[], int numberstudent) {
    int low = score[0];
    for (int i = 0; i <= numberstudent ; ++i) {
        if (score[i]<low) 
            low = score[i];

    }
    return low;
}
void getscores(int score[], int &total, int i) {
    int student = 0; total = 0;  i = 0;;
    cout << "Please enter the number of students: "; cin >> student;
    while (student < 0) {
        cout << "Students can't be negative can they? enter again: "; cin >> student;
    }

    cout << "\n";
    cout << "Now enter the grades for each of the students!: \n";
    for ( i = 0; i < student; ++i) {
        cout << "Enter grades for student " << i + 1 << " "; cin >> score[i];
        while (score[i] < 0 || score[i]>100) {
            cout << "Students can't get above hundred or have negative grades, enter again: "; cin >> score[i];
        }

        total += score[i];
        cout << "\n";
    }
    cout << "The total sum of grades is: " << total << " ";
}
intmain(){
int学生=0;
平均积分=0.0f;
int-total=0;
int i=0;
浮动下限=0;
int-sumofhigh=0;

cout您正在调用函数lowgrade() 从main和sending student,设置为0。函数中的变量numberstudent将为零。它永远不会到达for循环内部,因此只接受第一个参数


编辑:当您在getscores函数中对student变量进行声明时,它是一个局部变量。在函数中,您不能以这种方式更新students值。当您完成getscores()时,您填充了分数数组,但students仍然为0

您正在调用函数lowgrade() 从main和sending student,设置为0。函数中的变量numberstudent将为零。它永远不会到达for循环内部,因此只接受第一个参数


编辑:当您在getscores函数中对student变量进行声明时,它是一个局部变量。在函数中,您不能以这种方式更新students值。当您完成getscores()时,您填充了分数数组,但students仍然为0(int i=0;i
getscores(score,total,i)
getscores是否修改
i
意思是通过引用传递的最后一个参数是什么?是否将
students
设置为非0的值?根据您发布的代码,如果在
getscores()中声明第二个变量名
students
,则它不是
i
for(int i=0;i
getscores(score,total,i)中的独立变量,与
main()中同名变量无关
getscores是否修改
i
意思是通过引用传递的最后一个参数是什么?是否将
students
设置为非0的值?根据您发布的代码,如果在
getscores()中声明第二个变量名
students
,则它不是
i
这是一个单独的变量,与
main()中同名的变量无关。
先生,您认为将其称为参考变量会解决问题吗?@JohnnyJoestar如果您将学生发送到getscores()中作为引用的参数,那么是。这样做而不是声明一个新的变量OK,所以我已经这样做了,但现在我得到一个无穷大的值。在完成getscores()之后,通过查看学生的值来尝试调试.它容纳的学生数量正确吗?是的,我输入了5个学生,然后给出了5个学生。先生,您认为将其称为参考变量会解决问题吗?@JohnnyJoestar如果您将学生发送到getscores()中作为引用的参数,那么是。这样做而不是声明一个新的变量OK,我已经这样做了,但是现在我得到了一个无穷大的值。在完成getscores()之后,通过查看学生的值来尝试调试。它是否容纳了正确数量的学生?是的,我输入了5个学生,然后给出了5个学生。