首页 > 解决方案 > 输出是垃圾值

问题描述

这是我的代码。有什么不对吗?这个项目是关于降序排序的,我确实在互联网上检查了一些示例代码,但它和我的非常相似。但是我的代码总是打印垃圾值内存。

#include <iostream>
using namespace std;

void input(int a[], int n)
 {
    for( int i=0;i<n;i++)
    {
        cin>>a[i];
    }
 }
 void sort(int a[], int n)
 { 
    int i; int j; int temp;
    for (i=0;i<n-1;i++)

        for( j=i+1;i<n;j++)
            {
                if(a[i]<a[j])
                {
                temp =a[i];
                a[i]=a[j];
                a[j]=temp;
                }

            }

 }
 int output(int a[], int n)
{
    for ( int i=0;i<n;i++)
    {
        cout<<a[i]<<' ';
    }

}

 int main()
 { 
 int n;
 cin>>n;
 int a[n];
 input(a,n);
 sort(a,n);     
 output(a,n); 
 return 0;
 }

标签: c++arrayssorting

解决方案


请在排序功能中更改i<nj<n您的内部 for 循环。它可能会有所帮助:)

#include <iostream>
using namespace std;

void input(int a[], int n)
 {
    for( int i=0;i<n;i++)
    {
        cin>>a[i];
    }
 }
 void sort(int a[], int n)
 { 
    int i; int j; int temp;
    for (i=0;i<n;i++)

        for(j=i+1;j<n;j++)
            {
                if(a[i]<a[j])
                {
                temp =a[i];
                a[i]=a[j];
                a[j]=temp;
                }

            }

 }
 int output(int a[], int n)
{
    for ( int i=0;i<n;i++)
    {
        cout<<a[i]<<' ';
    }

}

 int main()
 { 
 int n;
 cin>>n;
 int a[n];
 input(a,n);

 sort(a,n);     
 output(a,n); 
 return 0;
 }

现在如果你想要第二个最大值,你可以从a[n-2].


推荐阅读