以一些随机数作为输入并按降序打印数字

时间:2018-11-27 06:31:56

标签: c++ arrays function

#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”进行比较并找到最小值。程序的输出不是降序编号。我在做什么错了?

1 个答案:

答案 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] << " ";
}

您的一些错误:

    例如,c / c ++数组元素中的
  • 的编号从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;
    }
    
  • 如上例所示,您根本不需要_print_max _。
  • 变量初始化是一个好习惯:

        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;
            }
}