前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >练习6—数据插入

练习6—数据插入

作者头像
攻城狮杰森
发布2022-06-03 11:23:16
4970
发布2022-06-03 11:23:16
举报
文章被收录于专栏:技术集锦

题目

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

解题步骤

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

Java

代码语言:javascript
复制
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语言

代码语言:javascript
复制
#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;
}

说明

  1. 难点在于如何找到待插入数据合适位置以及如何移动数组元素位置。这里使用循环求解:for循环实现位置查找功能,判断条件为待插入数据<=数组元素值。若满足条件,则退出循环并保留位置下标给location
  2. 找到位置后需要插入数据,并且不能覆盖掉原数据,这时候需要对原数据整体移动。同样使用for循环实现,i=7就相当于指针指向了数组中最后一个元素,所有在location之后的元素都得为它 “让位”,即后移。最后location位置便是空值,只需对它赋值(用户输入值)便实现数据插入。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 解题步骤
  • Java
    • 说明
    • C语言
      • 说明
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档