C++程序:输入n个数,将这些数从大到小排列输出

输入一个n,输入n个数,输出n个数的从大到小排列
样例输入:
5
1 9 4 3 5
样例输出:
9 5 4 3 1

只允许使用<iostream>和<windows.h>

#include<iostream>
#include<window.h>
using namespace std;
int main()
{
    //指定数组长度
    int n;
    cin>>n;
    //动态分配内存
    int* p=new int[n];
    //顺序输入
    for(int i=0;i<n;i++)
        cin>>p[i]; 
    //冒泡排序
    int t=0;
    for(int i=1;i<n;i++)
        for(int j=0;j<i;j++)
        {
            if(p[j]<p[j+1])
                {
                    t=p[j];p[j]=p[j+1];p[j+1]=t;
                }
        }
     //顺序输出
    for(int i=0;i<n;i++)
        cout<<p[i]; 
    return 0;
}

追问

int* p=new int[n];
这句什么意思

追答

动态分配 n 个i连续nt型的空间。
可以理解为 申请一个 长度为n 数组名为p的 int型数组。
只是和普通数组相比他的长度可以在运行时指定,增加编程的灵活性,减少空间浪费。

具体的用法可以参考一下c++理论书里 new 关键字或运算符的相关章节

如果对于初学者或者等级考试,在不做高级需求的时候
一般就写成
int p[80]
这样一个足够大的数组用于存储数据。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-23
#define SIZE sizeof(aa)/sizeof(int)
void fun(int *a, int n)
{
int i, j, k, t, m, s = 0;
for (i = 0; i < n; i++)
{
k = i;
//比较极数(最大小),记住i,交换
for (j = i + 1; j < n; j++)
{
if (a[j] > a[k]) k = j;
}
if (k != i)
{
t = a[i]; a[i] = a[k]; a[k] = t;//交换


}

}


}


void main()
{
int aa[] = { 45, 56, 76, 234, 1, 34, 23, 2, 3 }, i;
fun(aa, 9);
for (i = 0; i < SIZE; i++)
cout<< aa[i]<<" ";
cout << endl;;
}

第2个回答  2014-12-23
#include <iostream>
using namespace std;
int main()
{
int a[1000];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
swap(a[j],a[j+1]);
}
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
第3个回答  2018-04-05
#include<bits/stdc++.h>
using namespace std;
int i,j,n,a[1001];
int main()
{
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
for(i=2;i<=n;i++)
for(j=i-1;j>=1;j--)
if(a[j+1]>a[j])swap(a[j+1],a[j]);
for(i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;
}
第4个回答  2019-05-25
#include<iostream>
using namespace std;
int main()
{ int n,t=0;
cout << "请输入n的值:" << endl;
cin >> n;
int *p=new int [n];
cout << "请输入n个整数:" << endl;
for(int i=0;i<n;i++)
cin >> p[i];
for(int j=0;j<n;j++)
for(int i=0;i<n-j;i++)
{
if(p[i]<p[i+1])
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
cout << "输出按从大到小的顺序重新存放后的结果:" << endl;
for(int i=0;i<n;i++)
cout << p[i] << ' ';
}
相似回答