首页 > 解决方案 > 如何在do while循环中输出正的最小数字?

问题描述

当我需要输出一个最小正数时,程序会输出一个最小负数。负数是结束数据输入。

#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; 
}

标签: c++

解决方案


除了评论中提到的几点,我认为当你收到负值时你应该跳出循环。并在读取后添加 sum 值score。这是您修改后的循环的样子:

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

推荐阅读