首页 > 解决方案 > 将一些随机数作为输入并按降序打印数字

问题描述

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

标签: c++arraysfunction

解决方案


你的程序有很多错误。您可以查看此示例以了解您的错误:

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

推荐阅读