社区首页 >问答首页 >如何在do while循环中输出正的最小值?

如何在do while循环中输出正的最小值?
EN

Stack Overflow用户
提问于 2020-10-19 02:45:59
回答 2查看 58关注 0票数 0

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

代码语言:javascript
代码运行次数:0
复制
#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; 
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-19 03:01:20

这应该是可行的。您所需要做的就是确保数字不小于0,并且如果它是第一个输入的数字,那么它应该立即变成min。

代码语言:javascript
代码运行次数:0
复制
#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; 
}
票数 0
EN

Stack Overflow用户

发布于 2020-10-19 02:55:08

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

代码语言:javascript
代码运行次数:0
复制
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);

当我尝试它的时候,它看起来像预期的那样工作:

代码语言:javascript
代码运行次数: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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64420478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档