应该是因为当处理要插入的数小于等于第一个元素时出错了,加入对此种情况的处理即可,可以打印j在修改前后的值观察一下即可知道代码的运行过程,修改如下:
#include <iostream>
using namespace std;
int main(void){
int i,j;
int a[11];
for(i=0;i<=9;i++){
cin>>a[i];
}
int key;
cin>>key;
// cout<<"j="<<j<<endl;
for(i=0;i<=9;i++){
if(key>a[i]){
j=i+1;
}
}
if(key<=a[0]){
for(i=10;i>0;i--){
a[i]=a[i-1];
}
a[0]=key;
}else{
for(i=9;i>=j;i--){
a[i+1]=a[i];
}
a[j]=key;
}
// cout<<"j="<<j<<endl;
for(i=0;i<=10;i++){
cout<<a[i]<<" ";
}
return 0;
}
j=i+1后要break结束循环