数组的删除与添加如果没有在数组里删除原有的数字 执行插入时就报错

int shuzu=5; //定义了数组元素的个数
int powers[]={11,22,33,44,55};
int shanchu; //需要删除的数字
int xiabiao=-1; //找到删除数字的下标
int charu;
int i ,j; //循环变量
printf("请输入要删除的数字");
scanf("%d",&shanchu);
// 使用循环找到需要删除后的那个的数字
for (i=0;i<shuzu;i++)
{
if(shanchu==powers[i])
{
//记录下当前的下标
xiabiao=i;
break; //找到了删除的数字就跳出

      }
  }
 //根据判断是否找到
 if(-1==xiabiao)
 {
     printf("没有找到");

 }
 else
 {    //从找到的下标开始,后面一个覆盖前面一个数字
     for(i=xiabiao;i<shuzu-1;i++)
     {
         powers[i]=powers[i+1];
     }
     //删除完后,一定要记得数组的长度-1
     shuzu--;
     printf("删除后的结果为;\n");
     for (i=0;i<shuzu;i++)
   {
    printf("%d\t",powers[i]);
   }
 }

//删除之后进行插入
printf("\n");
printf("输入需要插入的值");
scanf("%d",&charu);
powers[shuzu]=charu;
//打印
for (i=0;i<=shuzu;i++)//注意现在的数组长度需要+1
{
    printf("%d\t",powers[i]);
}

图片说明
我这个代码如果没有在数组里删除原有的数字 执行插入时就报错
图片说明
求大佬帮我看看问题出在哪里

你可以先仔细调试下,如果调试不出来,采纳了姐姐的回答,姐姐帮你看看