给数组中插入元素

//有一个已经排好序的数组,现输入一个数,要求按照原来的规律将它插入数组中,
//程序分析,首先判断此数是否大于最后一个数,然后再考虑中间的数的情况,插入 后此元素之后的数,依次后移一个位置。
#include <stdio.h>
main()
{
 int a[11]={1,4,6,9,13,16,19,28,40,100};
 int temp1,temp2,number,end,i,j;
 printf("original array is:\n");
 for(i=0;i<10;i++)
 printf("%5d",a[i]);
 printf("\n");
 printf("insert a new number:");
 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("%6d",a[i]);
 return 0;
}

 
在C语言中,由于数组的长度是预先分配好的,向数组插入元素需要进行一系列操作。以下为几种不同场景下插入元素的实现方法: ### 在数组末尾插入元素 若要在数组末尾插入元素,前提是数组有足够的空间。示例代码如下: ```c #include <stdio.h> // 函数用于在数组末尾插入元素 void insert_element(int arr[], int size, int element) { arr[size - 1] = element; } int main() { int arr_2[4] = {1, 4, 5}; insert_element(arr_2, 4, 7); // 插入元素7 for (int i = 0; i < 4; i++) { printf("%4d", arr_2[i]); } return 0; } ``` 在这个示例里,`insert_element` 函数将元素插入数组的最后一个位置。 ### 在数组指定位置插入元素 若要在数组的指定位置插入元素,需要将该位置及其后面的元素依次向后移动一位,为新元素腾出位置。示例代码如下: ```c #include <stdio.h> int main() { int arr[] = {1, 2, 4, 5, 6}; int position = 2; // 要插入的位置 int new_element = 3; int size = sizeof(arr) / sizeof(arr[0]); // 从后往前移动元素,为新元素腾出位置 for (int i = size - 1; i >= position; i--) { arr[i + 1] = arr[i]; } // 插入元素 arr[position] = new_element; // 遍历数组 for (int i = 0; i < size + 1; i++) { printf("%d ", arr[i]); } return 0; } ``` 此示例先将指定位置及其后面的元素依次向后移动一位,再将新元素插入到指定位置。 ### 按顺序插入元素 若要将元素按顺序插入到已排序的数组中,需要先找到插入位置,再移动元素。示例代码如下: ```c #include <stdio.h> int main() { int i, j, x; int a[6] = {1, 2, 3, 5, 6}; int size = sizeof(a) / sizeof(a[0]) - 1; // 遍历数组 printf("原数组\n"); for (i = 0; i < size; i++) { printf("%d\t", a[i]); } printf("\n请输入你需要插入的数字:"); scanf("%d", &x); // 找到插入位置 for (i = 0; i < size; i++) { if (a[i] > x) break; } // 将后面的下标后移一位 for (j = size - 1; j >= i; j--) { a[j + 1] = a[j]; } // 插入元素 a[i] = x; // 遍历数组 for (i = 0; i < size + 1; i++) { printf("%d\t", a[i]); } return 0; } ``` 该示例先找到插入位置,再将该位置及其后面的元素依次向后移动一位,最后将新元素插入到合适的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值