题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况。插入后,将该元素之后的数依次后移一个位置。

实例

#include<stdio.h>

int main() {
    int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
    int temp1, temp2, number, end, i, j;
    
    printf("原始数组是:\n");
    for (i = 0; i < 10; i++)
        printf("%4d", a[i]);
    printf("\n插入一个新的数字: ");
    scanf("%d", &number);
    
    end = a[9];
    
    if (number > end)
        a[10] = number;
    else {
        for (i = 0; i < 10; i++) {
            if (a[i] > number) {
                temp1 = a[i];
                a[i] = number;
                for (j = i + 1; j < 11; j++) {
                    temp2 = a[j];
                    a[j] = temp1;
                    temp1 = temp2;
                }
                break;
            }
        }
    }
    
    for (i = 0; i < 11; i++)
        printf("%4d", a[i]);
    printf("\n");
    
    return 0;
}

以上实例输出结果为:

原始数组是:
   1   4   6   9  13  16  19  28  40 100
插入一个新的数字: 10
   1   4   6   9  10  13  16  19  28  40 100

该程序首先定义了一个已经排好序的数组a,然后从用户输入中获取一个新的数字number。程序判断number是否大于数组中的最后一个数end,如果是,则将number直接插入到数组的最后。否则,程序从头开始遍历数组,找到第一个大于number的元素,将number插入到该位置,同时将该位置之后的元素依次后移一个位置。最后,输出更新后的数组。

注意:该程序假设数组a的长度为11,并且原始数组已经按照升序排列。如果需要处理其他长度的数组或者非升序排列的数组,需要相应地修改程序。

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想, c语言练习, c语言练习题