说不上哪里不对输出就是有问题?


#include <iostream>
using namespace std;
int ins(int a[],int n,int len)
{
    for(int i=0;i<len;i++)
    {
        if(n>=a[i]&&n<a[i+1])
        {
            for(int j=i+1;j<len-i;j++)
             {
                a[j+1]=a[j];
                a[i+1]=n;
             }
        }
    }
}
int main()
{
    int n,a[100]={1,2,4,8,9,11,13,34,45,78};
    cin>>n;
    ins(a,n,10);
    for(int i=0;i<11;i++)
        cout<<a[i]<<" ";
}

输入
25
输出
1 2 4 8 9 11 13 25 34 45 78

修改如下,供参考:

#include <iostream>
using namespace std;
int ins(int a[],int n,int len)
{
    int i,j;
    for(i=0;i<len;i++)
    {
        if(n <= a[i]) //if(n>=a[i])&&n<a[i+1])
        {
            for(j=len;j > i;j--)//for(int j=i+1;j<len-i;j++)
            {
                a[j]=a[j-1];
                //a[i+1]=n;
            }
            a[i] = n;
            break;
        }
        if(i == len-1)
            a[len] = n;
    }
}
int main()
{
    int n,len,a[]={1,2,4,8,9,11,13,34,45,78};//修改
    len = sizeof(a)/sizeof(a[0]);    //修改
    cin>>n;
    ins(a,n,len);   //修改
    for(int i=0;i<=len;i++)  //修改
        cout<<a[i]<<" ";
    return 0;             //修改
}

赋值那里要新建一个数组放进去,不然肯定出问题