关于数组的一个大小排序,插入一个数据后,排序出错
程序代码:#include<stdio.h>
#include<math.h>
int main(void)
{
int i,j,p,q,s,n,m,a[10];
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];
}
}
s=a[i];
a[i]=a[p];
a[p]=s;
printf("%d\t",a[i]);
}
printf("\n");
scanf("%d",&n);
for(i=0;i<10;i++)
{
if(n>a[i])
{
for(m=9;m>=i;m--)
{
a[m+1]=a[m];/*从a[9]开始一直到a[i]位的数据整体向后平移一位*/
}
a[i]=n; /*第i位空出来用n补充,由于数据从大到小排列,故不再循环,跳出*/
break;
}
else if(i==9)
a[i+1]=n;/*如果n比所有a[i]小,则放在i+1位*/
}
for(i=0;i<=10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
代码如上,求大侠检查。 ,结果如上,按结果所示,似乎是数据并没有后移一位,第i位的数据直接被n替换了(a[i]=n)









