错误变量在 for..圈

Wrong variable in for...loop

本文关键字:for 变量 错误      更新时间:2023-10-16
我知道

这不是一个很棒的标题,但我不知道如何措辞。无论如何,简而言之,我正在尝试计算分数的数量,分数的总和分数以及分数的平均和等级。我正在使用...循环以完成此任务。所以。。。我的函数原型:

int validateNumber(int);
void summary(int,int,float,char);
char getGrade(float);
float getAvg(int,int);

可能只有 validateNumber(int) 在这里是相关的,但以防万一。

主()

int num, total, scores;
cout << over4 << "How many scores do you want to average? " << endl; 
cout << over4 << "Enter a value from 1 to 4: ";
cin >> num;

和调用(?

total = validateNumber(num);
summary(num,total,average,grade);

然后是定义:

int validateNumber(int num)
{
int total = 0, score;
    while (num < 1 || num > 4)
    {
        cout << over3 << num << " is not between 1 and 4! Try again: "; 
        cin >> num;
    }
system("CLS");
for (int i = 1; i <= num; i++)
{   
cout << over3 << "Enter score " << i << ": " << endl;
cout << over3 << "Enter a value from 0 to 100: ";
cin >> score;       
    while (score < 0 || score > 100)
    {
        cout << over3 << score << " is not between 0 and 100! Renter the score: "
             << i << ": ";  
        cin >> score;
    }
       total += score;
}
return total;
}

和:

void summary(int num,int total,float average,char grade)
{
    cout << over4 << "Number of scores : " << num << endl;
    cout << over4 << "Scores total     : " << total << endl;
    cout << over4 << "Average          : " << average << "%" << endl;
    cout << over4 << "Grade            : " << grade << endl;
    cout << down11;
}

当用户输入介于 1 和 4 之间的 num 值时,没有问题,程序按预期工作。但是,当用户输入不在该范围内的 num 值时,该函数将按预期工作,但摘要会告诉我分数的数量是第一个错误值,结果弄乱了我的平均/成绩。

在您的函数中,您是通过值而不是通过引用传递的,因此在函数int validateNumber(int);中完成的更改仅在该函数的作用域内,在 num 的值之外与第一个相同。 您应该通过引用发送值。 这样:

int validateNumber(int &);

发生的情况是按值将 num 传递给 validateNumber 函数。validateNumber 函数中的本地 num 复制全局 num 的值并相应地进行处理。但是,全局 num 变量保持不变。为了更改 num 本身,您必须通过引用传递它。 将函数定义的参数更改为:int validateNumber(int &num) { ... }