注册 登录
编程论坛 新人交流区

发个小题,大家看看怎么做

forrestx 发布于 2007-11-12 16:58, 409 次点击
一个数组,无序排列
如:int a[10]={3,2,5,7,4,3,1,10,8,9};

问题是:找出数组中第N大的数,并给出这个数的位置M
如:找出第3大的数,并说出它所在的位置
第3大的数 = 8
位置在第9位。
2 回复
#2
dydytd34002007-11-12 17:59
#include <stdio.h>
#define N 10 /*便于修改*/
void main()
{
int a[N],b[N],i,j,temp,pd;
for(i=0;i<N;i++) /*输入任意10个数(这里以10为例)*/
{
scanf("%d",&a[i]);
b[i]=a[i];
}
for(i=0;i<N;i++) /*对数组b[]进行排序*/
{
for(j=0;j<N-i-1;j++)
{
if(b[j]<b[j+1])
{
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}

}
printf("输入要找第几大的数。");
scanf("%d",&pd);
for(i=0;i<N;i++)
{
if(b[pd-1]==a[i])
break;
}
printf("第%d大的数=%d\n",pd,a[i]);
printf("位置在第%d位",i);
}
应该没错吧~
#3
q259818412007-11-12 19:33

#include <stdio.h>
#define N 10 /*便于修改*/
void main()
{
int a[N],b[N],i,j,temp,pd;
for(i=0;i<N;i++) /*输入任意10个数(这里以10为例)*/
{
scanf("%d",&a[i]);
b[i]=a[i];
}
for(i=0;i<N;i++) /*对数组b[]进行排序*/
{
for(j=0;j<N-i-1;j++)
{
if(b[j]<b[j+1])
{
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}

}
printf("输入要找第几大的数。");
scanf("%d",&pd);
for(i=0;i<N;i++)
{
if(b[pd-1]==a[i])
break;
}
printf("第%d大的数=%d\n",pd,a[i]);
printf("位置在第%d
1