c ++程序,用于对用户的值和显示平均值求和

问题描述 投票:-1回答:1

我有一个关于显示阵列中10个给定等级的平均值的任务。现在我不需要考虑值为-1的成绩。在这种情况下,-1表示分配尚未完成,因此不应考虑平均值。例:

Grade 1: 90
Grade 2: 86
Grade 3: 95
Grade 4: 76
Grade 5: 92
Grade 6: 83
Grade 7: 100
Grade 8: 87
Grade 9: 91
Grade 10: -1
Average Grade: 88%  //Notice how the -1 for the 10th grade is not factored into the average.
Example 2
Grade 1: -1
Grade 2: -1
Grade 3: -1
Grade 4: -1
Grade 5: -1
Grade 6: -1
Grade 7: -1
Grade 8: -1
Grade 9: -1
Grade 10: -1
Average Grade: ---%

由于所有等级都是-1,因此没有平均值。你需要处理这个条件。这是我的代码:

#include <iostream>
using namespace std;

#define NUM_GRADES 10

void getGrades(int grades[], int num)
{
for(int iGrades = 0; iGrades < num; iGrades++)
{
    cout << "Grade " << iGrades + 1 << ": ";
    cin >> grades[iGrades];
}
return;
}

int averageGrades(int grades[], int num)
{
int average;
int sum;
for(int i = 0; i < num; i++)
{
    sum+=grades[i];
}
average = sum / num;
return average;
}

 int main()
{
int grades[NUM_GRADES];
averageGrades(grades, NUM_GRADES);
getGrades(grades, NUM_GRADES);

cout << "Average Grade: "
<< averageGrades(grades, NUM_GRADES)
<< "%\n";

return 0;
}
c++
1个回答
1
投票

averageGrades()需要if声明跳过-1成绩,并且还有一个有效成绩数量的计数器。它还需要在sum添加到0之前将其初始化。

您可以从函数返回-1以指示没有平均值。

int averageGrades(int grades[], int num)
{
    int average;
    int sum = 0, gradeCount = 0;
    for(int i = 0; i < num; i++)
    {
        if (grades[i] != -1) {
            sum+=grades[i];
            gradeCount++;
        }
    }
    if (gradeCount > 0) {
        average = sum / gradeCount;
    } else {
        average = -1;
    }
    return average;
}

然后,您需要在main()中打印结果时检查此特殊返回值,以便显示---而不是数字。

int avg = averageGrades(grades, NUM_GRADES);
cout << "Average Grade: ";
if (avg == -1) {
    cout << "---";
} else {
    cout << avg;
}
cout << "%\n";
© www.soinside.com 2019 - 2024. All rights reserved.