一个已经按照从小到大排序好的数组。输入一个数字,然后将这个数字插入数组中,从小到大输入插入数字后的数组。

一个已经按照从小到大排序好的数组。输入一个数字,然后将这个数字插入数组中,从小到大输入插入数字后的数组。

我的代码该怎么改啊,我看书上好像也是这样写的哇怎么就不对嘞

#include
int main()

{
int a[10]={1,2,3,4,7,9,10,100,150};
int n;
int i,j=0,k;
scanf("%d",&n);
while(n>a[j]){
j++;

}printf("j=%d\n",j);
for(i=8;i>=j;i--){
    a[i+1]=a[i];
    a[j]=n;
}   for(k=0;k<=9;k++){
        printf("%d ",a[k]);}

}

img

img

a[j]=n放到for循环后面,不能放在里面

这么写,供参考:

#include<stdio.h>
const int N = 10;
int main()
{
    int m, n = 9, i;
    int a[N] = { 1,2,3,4,7,9,10,100,150 };

    scanf("%d", &m);  // 插入的数

    if (m > a[n - 1]) {   
        a[n] = m;
    }
    else {
        for (i = n; m < a[i - 1] && i > 0; i--) {
            a[i] = a[i - 1];
        }
        a[i] = m;
    }
    for (i = 0; i < n + 1; i++)//输出 插入数后的有序数列
        printf("%4d", a[i]);
    printf("\n");
    return 0;
}