【问题标题】:Assigning a grade from an array从数组中分配成绩
【发布时间】:2015-12-03 12:28:30
【问题描述】:

我需要编写一个程序来读取学生的分数,得到最好的分数,然后根据以下方案分配成绩:

1) 如果分数 >= best - 10,则成绩为 A

2) 如果分数 >= best - 20,则等级为 B;

3) 如果分数 >= best - 30,则等级为 C;

4) 如果分数 >= best - 40,则等级为 D;

5) 否则等级为 F。

程序提示用户输入学生总数,然后提示用户输入所有分数,最后显示成绩。我的问题来自于从数组中提取成绩,这就是我目前所拥有的:

 #include <iostream>
#include <string>

using namespace std;

int studentGrade(int* gradeArray, int numberStudents)
{
    int grade = 0;
    int score, best;
    for (int i = 0; i < numberStudents; i++)
    {
        grade += gradeArray[i];
    }

    return (grade);
}
int main()
{
    int numberStudents;
    cout << "Enter the number of students: ";
    cin >> numberStudents;

    int* gradeArray = new int[numberStudents];

    for (int i = 0; i < numberStudents; i++)
    {
        int score;
        cout << "Enter the students Score: ";
        cin >> score;

        gradeArray[i] = score;
        cout << gradeArray[i];
    }


}

【问题讨论】:

  • 你到底在坚持什么?请更具体。此外,您正在泄漏gradeArray,因为您没有delete[] 它。考虑改用std::vector
  • 输入错误的时候又会出现问题!输入在使用前应始终进行检查:if (std::cin &gt;&gt; score) { ... } else { ... }.

标签: c++ arrays


【解决方案1】:

当您编写 ma​​in() 以外的函数时,您必须从 main 或其他函数调用它才能执行它。 在您的代码中没有任何地方调用您的

int studentGrade(int* gradeArray, int numberStudents){}

如果你想执行studentGrade函数,你应该使用适当的参数调用它,调用应该来自main like--

studentGrade(gradeArray,numberStudents);

由于你的 studentGrade 函数将返回一个 int 值,你也可以这样调用它;

int finalGrade=studentGrade(gradeArray,numberStudents);

并打印studentGrade返回的值:

std::cout<<finalGrade<<std::endl;

当您以这种方式调用函数时,您的代码将简单地总结数组 gardeArray 中的所有数据并返回它。所以剩下的数学你可以自己做。

并且由于您已将内存分配给带有 new 的数组,您应该按照以下方式在程序末尾删除

delete []gradeArray;

此外,你的 main 函数返回一个你声明的 int

int main ()

所以在你的代码末尾你应该有

 return 0;

所以在你的 for 循环之后将它添加到你的 main 中-

 int finalGrade =studentGrade(gradeArray,numberStudents);
 std::cout<<finalGrade<<std::endl;
 delete []gradeArray;
 return 0;

现在你可以继续前进了,祝你好运:)

【讨论】:

  • 并按照 Remy Lebeau 的建议尝试使用 std::vectors。
猜你喜欢
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多