编程:往一个递增的数列中插入一个数。问题:但是在边界处就不行了,求改

编程:往一个递增的数列中插入一个数。问题:但是在边界处就不行了,求改

问题描述:

img

                                                  设口W 帮助H)
  AI lglobal membersy
                                      main
                                                                                         区
               #include<stdio.h> X
               uoidmain()
                      inta[11],i=0,key,j;
                       printf('please enterten numbers\n');
                       for(i=0;1<10;i++)
                              scanf(%d',&a[i]);
                       printf('pleaseenteranumber\n');
                       scanf(d',&key);
                       for(1=0;1<10;1++)
                              if(key>a[i-1]&&key<a[i])
                                     for(j=11;j>i;j--)
                                           a[j]=a[j-1];
                              a[i]=key;
                                                         I
                                     For(i=0;1<11:i++)
                                           printf(%d”,a[i]);
                                              数组改错
leView
error(s), warning(s)
武入在文件1中香找

修改如下,供参考:

#include <stdio.h>
void  main()
{
    int a[11], i = 0, key, j;
    printf("please enter ten numbers\n");
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    printf("please enter a number\n");
    scanf("%d", &key);
    for (i = 0; i < 10; i++){
        if (key >= a[9])
        {
            a[10] = key;
            break;
        }
        else{
            if(key < a[i]){
                for (j = 10; j > i; j--)
                    a[j] = a[j - 1];
                a[i] = key;
                break;
            }
        }
    }
    for (i = 0; i < 11; i++)
        printf("%d ", a[i]);
}

使用动态分配 有用请采纳

#include<stdio.h>
#include<stdlib.h>

int main(){
    int size = 10;   // 初始空间
    int count = 0;   // 记录数组中当前元素个数 
    int* nums;
    nums = (int*)malloc(sizeof(int) * size);  // 动态分配空间 
    
    // 假设初始只有10个排好序的数 
    for(int i = 0; i < 10; i++){
        scanf("%d", &nums[i]);
        count += 1;
    } 
    
    int otherN;      // 输入的要插入到有序序列中的数
    while (scanf("%d", &otherN) && otherN != -1){   // 以-1作为输入的结束条件 
        count += 1;  
        if(count > size){
            size += 10;  // 增大十个数的空间
            nums = (int*)realloc(nums, sizeof(int) * size);   // 重新分配空间 
        }
        
        // 移动数据
        int i;
        for(i = count - 2; i >= 0; i--){
            if (nums[i] > otherN)
                nums[i + 1] = nums[i];
            else     // 找到小于otherN的第一个位置 
                break;
        } 
        
        nums[i + 1] = otherN;
        
        for(int j = 0; j < count; j++)
            printf("%d ", nums[j]); 
        
        printf("\n");
    } 
    
}