发布网友 发布时间:2022-06-28 18:03
共1个回答
热心网友 时间:2023-10-10 01:20
调试了一下,是末尾补值语句有逻辑错误,如下图:数组a[],b[]在编译后在内存中是相邻的,即b[7]之后紧接a[0],在i=6时,b[]插入了23,j变成7,又走到i==6的判断,执行了b[j+1]=k语句,此时是b[8]=k(数组越界),b[8]就是a[0]的地址,故看到a[0]被赋值23.i==6的逻辑判断不严密。 修改代码和注释如下:#include int main(){ int i,j,k,a[]={3,5,7,9,10,12,35},b[8]; char flag_inserted=0; //增加1个已完成插入的标志,中间插入与后边补值互斥 printf("请输入需要插入的数:"); scanf("%d",&k); for(i=0,j=0;i<7;i++,j++) { if(i==j) { if(k