满意答案
waol2o1rxi2
推荐于 2018.05.15
采纳率:44% 等级:10
已帮助:1318人
/*
putin:
12 23 34 45 56 67 78 89 92
putin x : 40
putout:
12 23 34 40 45 56 67 78 89 92
Press any key to continue
*/
#include
void main() { int i,j,N = 10;
int a[10] = {12,23,34,45,56,67,78,89,92};
int x;
printf("putin:\n");
for(i = 0;i < N - 1;i++) printf("%d ",a[i]);
printf("\nputin x : ");
scanf("%d",&x);
for(i = 0;i < N - 1;i++) if(a[i] > x) break;
if(i == N - 1) a[N - 1] = x; // 比最后的数还大时,将x直接填到单元N - 1中
else { // 否则
for(j = N - 2 ;j >= i;j--) a[j + 1] = a[j];
a[i] = x;
}
printf("putout:\n");
for(i = 0;i < 10;i++) printf("%d ",a[i]);
printf("\n");
}追问: 能不能解释一下为什么一定要定义一个N=10才行啊?想不明白,谢谢
追答:N是数组长度。
在插入数据前,数组a有9个数,定义为a[10]是为将要插入的数据预留空间,否则会造成内存覆盖,出现问题很难查出的。
00分享举报