当我需要输出一个正的最小数时,程序会输出一个最小的负数。负数表示结束数据输入。
#include <iostream>
using namespace std;
int main() {
int totalNumber, max, min, score = 0, sum = 0;
float avrg;
do {
sum = sum + score;
cout << "Enter score " << ++totalNumber <<": ";
cin >> score;
if (score < min) {
min = score;
}
if (score > max){
max = score;
}
}
while(score >= 0);
totalNumber -= 1;
avrg = sum / totalNumber;
cout << " You entered " << totalNumber << " scores" <<endl;
cout << " Maximum score = " << max << endl;
cout << " Minimum score = " << min << endl;
cout << " Average score = " << avrg << endl;
return 0;
}
发布于 2020-10-19 03:01:20
这应该是可行的。您所需要做的就是确保数字不小于0,并且如果它是第一个输入的数字,那么它应该立即变成min。
#include <iostream>
using namespace std;
int main()
{
int totalNumber = 0;
int max = 0;
int min = 0;
int score = 0;
int sum = 0;
float avrg;
do
{
sum = sum + score;
cout << "Enter score " << ++totalNumber <<": ";
cin >> score;
if (totalNumber == 1)
{
min = score;
}
else if ((score < min) && (score > 0))
{
min = score;
}
else if (score > max)
{
max = score;
}
}
while(score >= 0);
totalNumber -= 1;
avrg = sum / totalNumber;
cout << " You entered " << totalNumber << " scores" <<endl;
cout << " Maximum score = " << max << endl;
cout << " Minimum score = " << min << endl;
cout << " Average score = " << avrg << endl;
}
发布于 2020-10-19 02:55:08
除了评论中提到的要点,我认为当你收到一个负值时,你应该跳出这个循环。并在读取score
后添加sum值。下面是修改后的循环的样子:
do {
cout << "Enter score " << ++totalNumber <<": ";
cin >> score;
sum = sum + score;
if (score < 0) { // Negative value; Exit from loop
cout << "exiting..." << endl;
break;
}
if (score < min) {
min = score;
}
if (score > max){
max = score;
}
} while(score >= 0);
当我尝试它的时候,它看起来像预期的那样工作:
src : $ g++ posititveminimum.cpp
src : $ ./a.out
Enter score 1: 48
Enter score 2: 60
Enter score 3: 78
Enter score 4: 91
Enter score 5: 67
Enter score 6: -1
You entered 5 scores
Maximum score = 91
Minimum score = 48
Average score = 68
https://stackoverflow.com/questions/64420478
复制相似问题