在有序数组中插入新数字

目标是:先输入一组数据给数组a[n],再通过冒泡排序使其变得有序,最后输入一个新的数字ne,找到ne在该数组中的位置并插入,最后将数组输出,我的问题在哪呢?
#include<stdio.h>
int main()
{
int n,i,j,x,ne;
scanf("%d",&n);
float a[100]={0};
for(i=0;i<n;i++)
scanf("%f",&a[i]);
for(j=0;j<n-1;j++)
{
i=n-1;
while(i>j)
{
if(a[i]<a[i-1])
{
x=a[i];
a[i]=a[i-1];
a[i-1]=x;
}//冒泡排序
i--;
}
}

scanf("%f",&ne);
for (i=0;i<=n-1;i++)
{
    if(a[n-1]<ne) 
    {
        a[n]=ne;
        break;
    }
     if(a[i]<=ne&&a[i+1]>=ne)
    {
        j=n-1;
        while(j>=i)
        {
         a[j+1]=a[j];
         j--;
        }
        a[i]=ne;
        break;
    }
    if(ne<a[0])
    {
        j=n-1;
        while(j>=0)
        {
         a[j+1]=a[j];
         j--;
        }
        a[0]=ne;
        break;
    }
}
for(i=0;i<n+1;i++)
   printf("%f ",a[i]); 
   return 0;

}

因为指定的数大于i位置的数,在找到指定位置的后一个位置放置指定的数就可以了。修改如下,供参考:


#include<stdio.h>

int main()
{
    int n,i,j,x;
    float ne;
    scanf("%d",&n);
    float a[100]={0};
    for(i=0;i<n;i++)
        scanf("%f",&a[i]);
        
    for(j=0;j<n-1;j++)
    {
        i=n-1;
        while(i>j)
        {
            if(a[i]<a[i-1])
            {
                x=a[i];
                a[i]=a[i-1];
                a[i-1]=x;
            }//冒泡排序
            i--;
        }
    }
    
    
//    for(i=0;i<n;i++){
//        printf("%f ",a[i]);
//    }
    
    scanf("%f",&ne);
    
    for (i=0;i<=n-1;i++)
    {
        if(a[n-1]<ne) 
        {
            a[n]=ne;
            break;
        }
        
         if(a[i]<=ne&&a[i+1]>=ne)
        {
        //    printf("i=%d\n",i);
            j=n-1;
            while(j>i) //这里移动到指定的i后一个位置就应该停止,因为这个数大于a[i],所以在i的后一个位置放置指定的数 
            {
             a[j+1]=a[j];
            // printf("i=%d,j=%d,a[%d]=%f\n",i,j,j,a[j]);
             j--;
            }
            a[i+1]=ne;//在i的后一个位置放置指定的数 
            break;
        }
        
        if(ne<a[0])
        {
            j=n-1;
            while(j>=0)
            {
             a[j+1]=a[j];
             j--;
            }
            a[0]=ne;
            break;
        }
        
    }
    
    for(i=0;i<n+1;i++)
       printf("%f ",a[i]); 
       
       
   return 0;
}


img

12行改为j大于i,17行改为a【i+1】=ne
如果不行,可以私聊我,

两个问题:
1、你把ne定义成了int类型,所以scanf("%f",&ne);会得到错误的值。
2、标号为17的那一行要改成 a[i+1]=ne;