当前位置 博文首页 > Dp_Json's Blog:练习6—插入数据

    Dp_Json's Blog:练习6—插入数据

    作者:[db:作者] 时间:2021-08-19 21:59

    题目

    编写程序,有一维数组数据为:23,34,45,60,67,88,96,从键盘上输入一个数据,将数据插入到数组,使得插入后的数组元素依然保持有序并输出到屏幕。

    解题步骤

    (1)数组建立;
    (2)接收用户输入数据;
    (3)查找位置;
    (4)移动元素;
    (5)插入(赋值);
    (6)输出结果;

    Java

    import java.util.Scanner;
    
    public class Demo {
        public static void main(String[] args){
            int[] array=new int []{23,34,45,60,67,88,96,0};//此处的0表示占位(否则创建的数组为[7]
            int i,input,location;
            Scanner user=new Scanner(System.in);
            System.out.println("please enter an integer:");
            input=user.nextInt();
            for(i=0;i<7;i++)   //因为0占位,所以相当于只有7个元素,不能改为8
                if(input<=array[i])
                    break;
            location=i;
            for(i=6;i>=location;i--)  //注意i初始值6,最大下标为6(未插入数据前)
                array[i+1]=array[i];  //前方数据后移
            array[location]=input;
            System.out.println("insert "+input+"after the array elements are:");
            for (i = 0; i < 8; i++)
                System.out.format("%d  ", array[i]);
        }
    }
    

    说明:

    Java处最关键的是分清楚插入数据前后,数组元素的下标值以及数组的建立过程。

    C语言

    #include <stdio.h>
    int main()
    {
        int array[8] = {23, 34, 45, 60, 67, 88, 96}, i, input, location = 0;
        printf("please enter any integer:");
        scanf("%d", &input);
        for (i = 0; i < 7; i++) //i<现有元素个数,寻找位置
            if (input <= array[i])
                break;
        location = i;                   //标记此处位置,占位
        for (i = 7; i >= location; i--) //顺次后移
            array[i + 1] = array[i];
        array[location] = input;
        printf("Insert %d housing number element:", input);
        for (i = 0; i < 8; i++)
            printf("  %d", array[i]);
        return 0;
    }
    

    说明:

    难点在于如何找到待插入数据合适位置以及如何移动数组元素位置。这里使用循环求解:for循环实现位置查找功能,判断条件为待插入数据<=数组元素值。若满足条件,则退出循环并保留位置下标给location
    找到位置后需要插入数据,并且不能覆盖掉原数据,这时候需要对原数据整体移动。同样使用for循环实现,i=7就相当于指针指向了数组中最后一个元素,所有在location之后的元素都得为它 “让位”,即后移。最后location位置便是空值,只需对它赋值(用户输入值)便实现数据插入。

    cs
    下一篇:没有了