main()
{ int i,j,temp,insert,a[11]={11,22,33,44,55,66,77,88,99,100};
printf("\n");
for(i=1;i<=9;i++)
printf("%5d",a[i]);
printf("\n");
printf("input a data:\n");
scanf("%d",&insert);
printf("insert=%5d",insert);
if(insert>a[9])a[10]=insert;
else for(i=0;i<=8;i++)
{ if(insert>a[i]&& insert<a[i+1])
{for(j=9;j>=i+1;j--)
a[j+1]=a[j];
a[i+1]=insert;
}
}
printf("\nNow array a::\n");
for(i=0;i<=10;i++)
printf("%5d",a[i]);
}
当输入的数值不与数列中的数值相当时时成功的 比如 输入56结果为11 22 33 44 55 56 66 77 88 99 100
但是当与数列中的数值相当时就会出错 不如输入55 但得到的结果是11 22 33 44 55 66 77 88 99 100 0
我改了下程序如下
main()
{ int i,j,temp,insert,a[11]={11,22,33,44,55,66,77,88,99,100};
printf("\n");
for(i=1;i<=9;i++)
printf("%5d",a[i]);
printf("\n");
printf("input a data:\n");
scanf("%d",&insert);
printf("insert=%5d",insert);
if(insert>a[9])a[10]=insert;
else for(i=0;i<=8;i++)
{ if(insert>=a[i]&& insert=<a[i+1]) 这边提示错误
{for(j=9;j>=i+1;j--)
a[j+1]=a[j];
a[i+1]=insert;
break;
}
}
printf("\nNow array a::\n");
for(i=0;i<=10;i++)
printf("%5d",a[i]);
}
弄了半天终于知道了了 原来是有个重复出现的
if(insert>=a[9])a[10]=insert; 这边改正>=
else for(i=0;i<=8;i++)
{ if(insert>=a[i]&& insert<a[i+1]) 这边改正<
现在可以了 ,不知道还有没有其他的改法, 希望一块探讨, QQ 276339044 联系我
我觉得应该在找到位置后 后面的数后移,完毕后将insert赋a[i+1], 然后直接跳出 不让他i++ 再循环了,比较好 不知道怎么写