它适用于最大数量,但不适用于最小数量plz检查此代码中的什么是prblm。当我运行此程序时,它显示最大数量但不显示最小数量。在这种情况下,什么是metter我有些重要的意见。 假设我必须输入数据 10 55 2 44 它显示输出最大值是55 但应该显示结果 最大的不是55 最小的是2是
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,max,min;
cout<<"enter 1st number:";
cin>>a;
cout<<"enter 2nd number:";
cin>>b;
cout<<"enter 3rd number:";
cin>>c;
cout<<"enter 4th number:";
cin>>d;
if(a>b)
{
if(a>c)
{
if(a>d)
{
cout<<a<<" is greatest";
}
}
}
else if(b>c)
{
if(b>d)
{
cout<<b<<" is greatest";
}
}
else if(c>d)
{
cout<<c<<" is greatest";
}
else
{
cout<<d<<" is greatest";
}
if(a<b)
{
if(a<c)
{
if(a<d)
{
cout<<a<<" is smallest";
}
}
}
else if(b<c)
{
if(b<d)
{
cout<<b <<" is smallest";
}
}
else if(c<d)
{
cout<<c<<" is smallest";
}
else
{
cout<<d<<" is smallest";
}
return (0);
}
答案 0 :(得分:0)
假设a> b,a&gt; c和a
你的第一个if bloc失败了:
if (a>b) // yes
{
if (a>c) // yes
{
if (a>d) // <=== false but no else clause for this one !!
{
cout << a << " is greatest";
}
}
}
然后,您的代码将跳过所有相关的其他条款,并继续执行以下操作:
if (a<b) // fails
{
if (a<c)
{
if (a<d)
{
cout << a << " is smallest";
}
然后它会跳过else子句,然后跳过!你在代码的最后,没有打印任何东西!
答案 1 :(得分:0)
作为替代方案,我会使用更具可扩展性的东西。将所有数字放在std::vector<int>
中,然后使用std::max_element
和std::min_element
分别查找最大值和最小值。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
int a,b,c,d;
std::cout<<"enter 1st number:";
std::cin>>a;
std::cout<<"enter 2nd number:";
std::cin>>b;
std::cout<<"enter 3rd number:";
std::cin>>c;
std::cout<<"enter 4th number:";
std::cin>>d;
std::vector<int> numbers = {a,b,c,d};
auto largest = std::max_element(begin(numbers), end(numbers));
std::cout << "max element is: " << *largest << '\n';
auto smallest = std::min_element(begin(numbers), end(numbers));
std::cout << "min element is: " << *smallest << '\n';
return 0;
}