#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];
}
}
结果
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;
}