我创建了一个程序,允许用户输入 10 个等级。我使用了一个 while 循环将成绩存储在数组中,但如果用户只有 5 个成绩要输入,他可以键入 done 退出程序。
循环完成后,它将计算并显示。数组中的最高等级、最低等级和平均等级
不幸的是,当用户键入完成时,程序将显示其余未输入的成绩行。
你能帮我找出如何阻止while循环显示循环的其余未输入成绩吗?
#include <iostream>
using namespace std;
int main()
{
const int SIZE = 10;
int grade[SIZE];
int count = 0;
int lowestGrade;
int highestGrade;
bool done = false;
cout << "This program is limited to entering up to 10 grades." << endl;
while ( grade[count] != done && count < SIZE)
{
cout << "Enter a grade #" << count + 1 << " or done to quit: ";
cin >> grade[count];
count++;
}
//LOWEST GRADE
lowestGrade = grade[0];
for (count = 0; count < SIZE; count++)
if (grade[count] < lowestGrade)
{
lowestGrade = grade[count];
}
//HIGHEST GRADE
highestGrade = grade[0];
for (count = 0; count < SIZE; count++)
{
if (grade[count] > highestGrade)
{
highestGrade = grade[count];
}
}
//AVERAGE GRADE
double total = 0;
double average;
for (int count = 0; count < SIZE; count++)
total += grade[count];
average = (total / SIZE);
cout << endl;
cout << "Your highest grade is: " << highestGrade << endl;
cout << "Your lowest grade is: " << lowestGrade << endl;
cout << "Your average grade is: " << average << endl;
system("pause");
return 0;
}
原文由 Chriskt 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是您的代码的两个问题。
第一的:
上面的代码将尝试将单词“done”读入整数变量,产生 0。不是你想做的!
第二:
上面的代码将尝试遍历所有可能的元素(SIZE)。但是,您可能已经比这更少了!您需要使用在上一个循环中计算的
count
作为您的边界(当然,在循环中为控制变量使用不同的名称)。