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

C++程序:输入n个数,将这些数从大到小排列输出
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++) ...

一个c++程序,输入一个数n,然后输入n个数,让这n个数从大到小排序的算法...
for(int i = 1;i <= n;i++)cin>>b[i];\/\/输入 sort(b + 1,b + 1 + n);\/\/排序 for(int i = 1;i <= n;i++)cout<<b[i]<<" ";\/\/输出 return 0;}

从键盘输入n个数,求这n个数的最大数与最小数,并输出结果
} cout << "最大数为:" << max_num << endl;cout << "最小数为:" << min_num << endl;return 0;} ```在这个程序中,我们首先定义了三个整型变量n、num、max_num和min_num。其中n表示需要输入的整数个数,num表示当前输入的整数,max_num表示所有整数中的最大值,min_num表示所有...

求用c++\/c语言编写一个输入n输出1~n的所有排列(千万不是排列数哦)的...
cout << "Input n" << endl;\/\/ 输入n cin >> n;\/\/ 这里可以自己做输入错误检测 \/\/ 给数组动态分配大小 int* a = new int[n];\/\/ 给数组赋值(要排列的数据源)for(int i = 1; i <= n; i++){ a[i - 1] = i;} do{ \/\/ 依次输出每个数 for(int i = 0; i < n; ...

c语言数组编程,输入n个整数,将这n个数按绝对值由大到小排序输出
printf("\\n"); return 0;}好了,调试通过,输入数组后,先打印排序前的数组,然后排序,之后输出排序后的数组。。。 本回答由网友推荐 举报| 答案纠错 | 评论 2 17 右手兂名指 采纳率:69% 来自团队:CppExpert 擅长: C\/C++ Linux 网站使用 其他回答 如上!!! dongsimin321 | 发布于2012-05-25 举报...

C++对n个数从小到大排序
src[j] = src[j+1]; src[j+1] = tem; } }}int main(){ int *num, n = 0; cout << "intput n: " << endl; cin >> n; if (n <= 0) { cout << "intput err!" << endl; return -1; } num = new int[n]; \/\/ 申请存储...

用C语言或者C++程序编写:对于输入的任意N个整数,输出其中的最大元素和...
include<stdio.h> int main(){ int max;int min;int a[1000]; \/\/ 假设你有以前个数,记得要对其进行初始化 int i;max=min=a[0];for(i=0;i<1000;i++){ if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];} printf("max is %d , min is %d",max,min);return 0;} ...

c++程序设计题,编写程序,从任意n个数中找出最大数和最小数,并将它们相...
include<iostream>using namespace std;int main(){ int n; cin >> n ; \/\/输入需要排序的数字个数n int *p=new int [n]; for(int i=0;i<n;i++) { cin >> p[i]; \/\/输入数据 } int max=p[0],min=p[0],max_index=0,min_index=0;\/\/max最大值...

在c++语言输入n 个数,要求程序按输入时的逆序把这n 个数打印出来,已知...
\/\/输入 n 个数 for (int i=0; i> iInputNum[i]; } \/\/逆序打印这n个数 for (int i=iCount - 1; i>=0; --i) { cout << iInputNum[i] << " "; } cout << endl; \/\/换行 return 0;}操作结果:望采纳, 谢谢。

用c++编程 输入一个整数n,输出1!+2!+3!+……+n! 急急急急急!
先写出一个如下的函数:int fun(int n){ int s=1;for(int i=1;i<=n;i++)s*=i;return s;} 然后在主函数中调用反复调用它 int main(){ int n;while(cin>>n){ int sum=0;for(int i=1;i<=n;i++){ sum+=fun(i);} cout<<sum<<endl;} } ...

相似回答