为什么程序运行不了比其数组内最大或者最小的数,是在定义插入排序时出现了什么问题吗
1条回答 默认 最新
- a5156520 2022-11-04 09:30关注
我用你上面的代码测试,没有出现无法输出,只是结果异常(我把第三个for循环的i--改为i++倒是出现了无法输出,不知道是不是你说的这种情况);
把a[inside] =temp;移到第三个for循环后面即得到预期的结果。
修改如下:#include <stdio.h> int main(void){ int i,j,n,temp,t; int a[100]; int inside; printf("输出元素的个数及插入的值:"); scanf("%d%d",&n,&temp); // printf("n=%d,temp=%d\n",n,temp); for(i=0;i<n;i++){ scanf("%d",&a[i]); } // printf("输入的元素为:\n"); // for(i=0;i<n;i++){ // printf("%d ",a[i]); // } // if(temp<=a[0]){ inside=0; } if(temp>=a[n-1]){ inside=n; }else{ for(i=0;i<n-1;i++){ if(temp>=a[i]&&temp<=a[i+1]){ // printf("a[%d]=%d,a[%d]=%d\n",i,a[i],i+1,a[i+1]); inside=i+1; break; } } } // printf("\ninside=%d\n",inside); for(i=n-1;i>=inside;i--){ a[i+1]=a[i]; } a[inside] =temp; for(i=0;i<=n;i++){ printf("%d",a[i]); printf(" "); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录