这个插入数字的代码不知道哪有问题

#include<iostream>
using namespace std;
int main(){
    int a[10]={0,1,2,3,4,5,6};
    int index,m;
    int len=sizeof(a)/sizeof(a[0]);
    cin>>index;
    cin>>m;
    for(int i=len+1;i>=index;i--){
        a[i+1]=a[i];
    }
    a[index]=m;
    for(int i=0;i<len+1;i++){
        cout<<a[i];
    }
} 

在第一个位置插入一个数,为啥结果是乱码?

改成这样

#include<iostream>
using namespace std;
int main() {
    int a[10] = { 0,1,2,3,4,5,6 };
    int index, m;
    int len = 7;
    cin >> index;
    cin >> m;
    for (int i = len; i >= index; i--) {
        a[i + 1] = a[i];
    }
    a[index] = m;
    for (int i = 0; i < len + 1; i++) {
        cout << a[i];
    }
}

结果

img

for(int i=len+1;i>=index;i--){
a[i+1]=a[i];
}

这是有问题的,a数组越界访问。当i=len+1时,a[i+1]就是a[len+2]啦。另外你的len=10也是不对的,只要插入一个数,len就成11啦

#include<iostream>
using namespace std;
int main(){
    int a[10]={0,1,2,3,4,5,6};
    int index,m;
    int len=7;
    cin>>index;
    cin>>m;
    for(int i=len;i>index;i--){
        a[i]=a[i-1];
    }
    a[index]=m;
    for(int i=0;i<len+1;i++){
        cout<<a[i];
    }
} 
 

#include <iostream>
using namespace std;
int main()
{
    int a[10] = {0, 1, 2, 3, 4, 5, 6};
    int index, m;
    int len = 7
    cin >> index;
    cin >> m;
    for (int i = len; i > index; i--)
        a[i] = a[i - 1];
    a[index] = m;
    for (int i = 0; i < len + 1; i++)
        cout << a[i] << ' ';
    return 0;
}