问题是:输入五个从低到高的数,然后再输入一个数把它插入到这五个数之中,使这六个数的顺序还是从低到高的顺序排列并输出这六个数。我的这个哪里出了错误?

img

一个实现,供参考:


#include <stdio.h>

int bijiao(int * a,int x){
    int j;
    for(j=0;j<5;j++){
        
        //如果x在数组两个数之间则返回第二个位置 
        if((a[j]<x&&a[j+1]>=x&&j<4)){
            return j+1;
        }
        
        //如果所有的数都比x大,则返回第一个位置 
        if(a[0]>=x){
            return 0;
        }
        
        //如果所有的数都比x小,则返回最后一个位置 
        if(a[4]<=x){
            return 4;
        }
         
         //除上述情况的其他情况,则比较下一个数 
        if(a[j]<x){
            continue;
        }
        
        
        
        
    }
} 

int houtui(int * a,int c,int x){
    if(c<4){
        //将当前数存入临时变量,然后用x替换 
        int t=a[c];
        a[c] =x;
        c++;
        int p;
        for(;c<=5;c++){
            //记录当前数,然后用上一个数替换,直到替换完所有的数 
            p=a[c];
            a[c]=t;
            t=p;
        }
    }else{
        a[5]=x;
    }
    
}

int main(void){
    int a[6],x,i,b;
    //获取输入 
    for(i=0;i<5;i++){
        scanf("%d",&a[i]);
    }
    //获取要插入的数 
    scanf("%d",&x);
    //计算要插入的位置 
    b=bijiao(a,x); 
//    printf("b=%d\n",b);
    //插入x 
    houtui(a,b,x);
    //打印 
    for(i=0;i<6;i++){
        printf("%d ",a[i]);
    }
} 

img