#include<iostream>
using namespace std;
int print_max(int a, int b);
main()
{
int low=0,max,min;
int num[5];
for(int i=1; i<=5; i++)
{
cout<<"Plz Enter the number "<<endl;
cin>>num[i];
low=print_max(num[i],low);
max=print_max(num[i],low);
}
cout<<max;
for(int i=1; i<=5; i++)
{
if(max>num[i])
min=num[i];
cout<<min;
}
}
int print_max(int a,int b)
{
int max;
if (a>b)
{max=a;
return max;}
else
{
max=b;
return max;
}
}
我想对输入的随机数进行排序,并以降序对其进行排序。 “ low”参数将保存较大的数字,然后“ max”将所有值与“ low”进行比较并保存较大的值。然后,我在循环中添加了if
条件,以便它将所有输入值与“ max”进行比较并找到最小值。程序的输出不是降序编号。我在做什么错了?
答案 0 :(得分:1)
程序中有很多错误。您可以看到以下示例以了解您的错误:
#include <iostream>
#include <climits>
#include <algorithm>
using namespace std;
int main()
{
const unsigned int N = 5;
int low = INT_MAX, max = INT_MIN;
int num[N] = {0};
for(auto i = 0U; i < N; i++)
{
cout << "Plz Enter the number " << endl;
cin >> num[i];
if(num[i] < low)
low = num[i];
if(num[i] > max)
max = num[i];
}
cout << endl << "max: " << max << endl;
cout << "min: " << low << endl << endl;
std::sort(num, num + N, [](int i, int j){return i > j;});
for(auto i = 0U; i < N; i++)
cout << num[i] << " ";
}
您的一些错误:
的编号从0到N-1。
int a[5]; // valid elements are a[0]...a[4]
在 print_max 中,您不需要变量' max ':
int print_max(int a,int b)
{
if(a > b)
return a;
else
return b;
}
变量初始化是一个好习惯:
int low = INT_MAX, max = INT_MIN;
int num[N] = {0};
如果需要,可以使用某种BubbleSort代替 std :: sort :
void sort(int *num, unsigned int size)
{
for(auto i = 0U; i < size-1; i++)
for(auto j = 0U; j < size-i; j++)
if(num[j] < num[j + 1])
{
auto tmp = num[j];
num[j] = num[j + 1];
num[j + 1] = tmp;
}
}