C++ 查找Max&;最小值
我试图找到最小值和最大值。我遇到以下两个问题:C++ 查找Max&;最小值,c++,C++,我试图找到最小值和最大值。我遇到以下两个问题: 仅输入负数时,最大值将等于0,而不是输入的最大值 当只输入正数时,我也有类似的问题。基本上,最小值将为0,而不是输入值 任何提示都将不胜感激 #include <iostream> using namespace std; int main() { int input; int max = 0; int min = 0; cout << "Enter number: "; whil
#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;
}
#包括
使用名称空间std;
int main()
{
int输入;
int max=0;
int min=0;
cout>输入;
如果(输入!=-1)
{
如果(输入>最大值)
{
最大值=输入;
}
如果(输入<分钟)
{
最小值=输入;
}
}
}
cout在开始时,不要设置为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;
}
int main(int argc,char**argv)
{
int输入;
bool hasInput=false;
cout>输入;
int max=输入;
int min=输入;
cout>输入)
{
如果(输入==-1)中断;
hasInput=true;
如果(输入>最大值)
{
最大值=输入;
}
如果(输入<分钟)
{
最小值=输入;
}
cout在开始时,不要设置为0,而是在while循环之前询问第一个数字,并将min和max设置为该数字。作为补充说明,使用-1作为接受数字输入的退出条件可能会导致问题,您可能希望提前问他们数字的数量,或者检测非数字输入以结束t他喜欢这个节目
编辑:示例代码:
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;
}
int main(int argc,char**argv)
{
int输入;
bool hasInput=false;
cout>输入;
int max=输入;
int min=输入;
cout>输入)
{
如果(输入==-1)中断;
hasInput=true;
如果(输入>最大值)
{
最大值=输入;
}
如果(输入<分钟)
{
最小值=输入;
}
cout就像@Turix所说的,问题是因为初始的max
和min
值。您的max
值应该是可能的最小整数值,以便任何大于它的值,同样地,min
应该是可能的最大整数值。有了它,初始化变量像这样:
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>
int max=std::numeric_limits::min();
int min=std::numeric_limits::max();/#include
正如@Turix所说,问题在于初始的max
和min
值。你的max
值应该是可能的最小整数值,因此任何大于它的值都应该是可能的最大整数值。同样,你的min
值应该是可能的最大整数值。有了这个值,初始化你的变量是这样的:
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>
int max=std::numeric_limits::min();
int min=std::numeric_limits::max();/#include
根据您的代码,我猜不会有负数。然后执行以下操作:
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>
编辑:来自另一个答案的这部分内容将很好
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;
}
包括
使用名称空间std;
int main()
{
int输入;
int hasInput=0;
int max=std::numeric_limits::min();
int min=std::numeric_limits::max();/#include
cout>输入)
{
如果(输入==-1)中断;
hasInput=1;
如果(输入>最大值)
{
最大值=输入;
}
如果(输入<分钟)
{
最小值=输入;
}
}
如果(hasInput==1)
cout根据您的代码,我猜不会有负数。然后执行以下操作:
int max = std::numeric_limits<int>::min();
int min = std::numeric_limits<int>::max(); //#include <limits>
编辑:来自另一个答案的这部分内容将很好
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;
}
包括
使用名称空间std;
int main()
{
int输入;
int hasInput=0;
int max=std::numeric_limits::min();
int min=std::numeric_limits::max();/#include
cout>输入)
{
如果(输入==-1)中断;
hasInput=1;
如果(输入>最大值)
{
最大值=输入;
}
如果(输入<分钟)
{
最小值=输入;
}
}
如果(hasInput==1)
问题是否在于max
和min
的初始值。是的,但我该如何解决它?想想看……您希望max
一开始就尽可能低(这样任何大于它的输入值都将成为新的最大值)。相反,你希望min
的起点尽可能高。你可以在这里找到常数来帮助你:给input
一个初始值,比如int input=0
。问题在于max
和min
的初始值。是的,但我该如何解决它?想想看。。。您希望max
以尽可能低的起点开始(以便任何大于它的输入值都将成为新的最大值)。相反,你希望min
的起点尽可能高。你可以在这里找到常数来帮助你:为input
提供初始值,例如int input=0
。谢谢@user3482801,但我仍然有问题。你能举个例子吗?谢谢!谢谢@user3482801,但我仍然有问题。您能举个例子吗?谢谢!即使先键入-1,仅此更改也会打印出这些最小/最大值-尤其容易混淆/误导,如min>max。即使先键入-1,仅此更改将打印出这些最小/最大值-尤其容易混淆/误导,如min>max。照此,您的代码甚至会打印出这些最小/最大值如果先键入-1-特别容易混淆/误导最小值>最大值。很高兴看到而(cin>>输入)
..+1仅此一项。干杯。照此,即使先键入-1,代码也会打印出这些最小值/最大值-特别容易混淆/误导最小值>最大值。