我正在尝试找到最小值和最大值。我遇到了以下两个问题:
任何提示都将不胜感激。
#include <iostream>
using namespace std;
int main()
{
int input;
int max = 0;
int min = 0;
cout << "Enter number: ";
while (input != -1)
{
cin >> input;
if(input != -1)
{
if(input > max)
{
max = input;
}
if(input < min)
{
min = input;
}
}
}
cout <<"Max: " << max << " Min " << min << endl;
}
答案 0 :(得分:3)
从你的代码我猜测不会有负数。然后做这样的事情:
编辑:这部分来自另一个答案会很好。
include <iostream>
using namespace std;
int main()
{
int input;
int hasInput = 0;
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>
cout << "Enter number: ";
while (cin >> input)
{
if(input == -1) break;
hasInput = 1;
if(input > max)
{
max = input;
}
if(input < min)
{
min = input;
}
}
if(hasInput == 1)
cout <<"Max: " << max << " Min " << min << endl;
}
答案 1 :(得分:1)
在开始时,不是设置为0,而是在while循环之前请求第一个数字,并将min和max设置为该数字。作为旁注,使用-1作为接受数字输入的东西的退出条件可能会导致问题,您可能想要事先询问它们的数字或检测非数字输入以结束程序。
编辑:示例代码:
int main(int argc, char** argv)
{
int input;
bool hasInput = false;
cout << "Enter number: ";
cin >> input;
int max = input;
int min = input;
cout << "Enter number: ";
while (cin >> input)
{
if(input == -1) break;
hasInput = true;
if(input > max)
{
max = input;
}
if(input < min)
{
min = input;
}
cout << "Enter number: ";
}
if(hasInput)
cout <<"Max: " << max << " Min " << min << endl;
}
忘了检查第一个输入是否为-1 ...我确定你可以找出那个。
答案 2 :(得分:1)
就像@Turix所说的那样,问题在于您的初始max
和min
值。您的max
值应该是可能的最小整数值,以便任何大于它,类似地,min
应该是最大可能的整数值。有了这个,就像这样初始化你的变量:
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>