请教C循环问题。
#include <stdio.h>int main()
{int i,j,p,q,a[10],s;
printf("input 10 number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]){p=j;q=a[j];}
printf("a[%d]=%d\n",p,q);
if(i!=p){s=a[i];a[i]=a[p];a[p]=s;}
}
sleep(500000);
return 0;
}
我想用数组排序,显示内容为:a[2]=10 a[8]=9 a[3]=8......等。为什么下标总是不按要求的显示?可能的问题出在 printf("a[%d]=%d\n",p,q);
的p上,应怎样改?还有就是:if(i!=p){s=a[i];a[i]=a[p];a[p]=s;}语句,我将a[p] 换成a[j]为什么显示不正确?