C语言中用数组如何对数据进行大小排列,可有程序参考?谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:30:51
#define NUM 10
main()
{
int a[NUM],i,j,r,temp;
printf("please input %d number\n",NUM);
for(i=0;i<NUM;i++)
scanf("%d",&a[i]);
for(i=0;i<NUM-1;i++){
r=i;
for(i=i+1;j<NUM-1;j++)
if(a[i]<a[r])
r=j;
if(r!=i){
temp=a[i];
a[i]=a[r];
a[r]=temp;
}
}
printf("The array after sort:\n");
for(i=0;i<NUM;i++)
printf("%5d",a[i]);
printf("\n");
getch();
}这个程序有没有问题?能不能解释一下?

我把你的程序作了如下修改:
#define NUM 10
main()
{
int a[NUM],i,j,r,temp;
printf("please input %d number\n",NUM);
for(i=0;i<NUM;i++)
scanf("%d",&a[i]);
for(i=0;i<NUM-1;i++)
{ /*我这里没有使用r=i*/
for(j=i+1;j<NUM-1;j++)
/*你的程序问题就在这里了,我这里是j=i+1,你那里是i=i+1,j没有初值不说,还让i加1,这就意味这使外循环少执行几次*/
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
printf("The array after sort:\n");
for(i=0;i<NUM;i++)
printf("%5d",a[i]);
printf("\n");
getch();
}

#define NUM 10 //定义一个数,其大小为十
main()
{
int a[NUM],i,j,r,temp; //上面就不用说了吧
printf("please input %d number\n",NUM); //输出num的值
for(i=0;i<NUM;i++) //循环语句
scanf("%d",&a[i]); //输入数组a[i]
for(i=0;i<NUM-1;i++){
r=i;
for(i=i+1;j<NUM-1;j++)
if(a[i]<a[r])