C语言 输入前k大的数 给定一个数组,数组长度小于1000,统计前k大的数并且把这k个数从大到小输出。

描述
给定一个数组,数组长度小于1000,统计前k大的数并且把这k个数从大到小输出。

关于输入
先输入一个n表示数组的长度,然后连续地输入n个数。最后输入一个k。

关于输出
换行输出前k大的数

#include <stdio.h> 

main()
{
int n,k,i,j,temp;
int a[1000];

printf("输入n:");
scanf("%d",&n);

printf("输入n个数:"); 
for (i=0;i<n;i++)
scanf("%d",&a[i]);

printf("输入k:");
scanf("%d",&k);

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

printf("前%d大的数为:",k);
for(i=1;i<=k;i++)
printf("%d ",a[n-i]);
printf("\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-22
#include<stdio.h>
#include<string.h>
int cmp(const void *a, const void *b) 

     
     return(*(int *)b-*(int *)a); 
}
int main(void)
{
int n,a[1000],k,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&k);
qsort(a,n,sizeof(a[0]),cmp);
for(i=1;i<=k;i++)
printf("%d\n",a[i]);
return 0;
 }

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网