【问题标题】:Inserting into an array插入数组
【发布时间】:2021-03-23 04:13:28
【问题描述】:

在此任务中,您需要说明将元素插入数组的过程。输入是初始数组、要插入的项目和要插入的位置。因此,需要以固定格式显示元素插入过程的日志。

输入格式 第一行包含原始数组中的元素数。第二行包含数组本身。第三行包含一对数字/textitn、/textitpos——要插入的元素和插入位置

输出格式 指定格式的算法日志

初始数组: 15 要插入的元素:11 插入位置:0 操作: 15 15 11 15 总操作数:2

我不明白他们在这里想要什么,有人可以帮我吗?

【问题讨论】:

  • 肯定有人会帮忙,但他们希望从提问者那里得到一些初步的努力

标签: arrays c algorithm data-structures


【解决方案1】:

他们想了解如何使用内存、如何移动数据等等。首先,简单思考!

例子:

3      3        3        3
1 2 3  1 2 3 _  1 _ 2 3  1 4 2 3
2 4    2 4      2 4      2

在这种情况下,将 4 放在 2 上。但内存不足。所以分配内存。然后开仓2。最后,4移到2就大功告成了! 剩下的就是写下代码了。

【讨论】:

  • 在 C 语言中,控制变量的第一个值从 0 开始到控制的最后一个值 -1,在您的示例中,结果应该是 1 2 4 3 而不是 1 4 2 3
【解决方案2】:

这段代码可以帮助你

我使用两个数组,第一个填充数组元素,第二个填充第一个数组的偶数元素,然后我读取插入的值及其索引,并使用 for 循环移动元素,然后我显示数组

#include <stdio.h>

int main()
{
    int size;
    do
    {
         printf("Enter the size of the array\n");
         scanf("%d", &size);
    }while(size<1);
   int num[size+1];
   int num2[size];
   int j=0;
   printf("Enter the elements\n");

   for (int i = 0; i < size; i++)
   {
        printf("Put the %d element :",i);
        scanf("%d", &num[i]);
        if(num[i]%2==0)
        {
             num2[j]=num[i];
             j++;
        }
    }
    printf("\nThe Numbers pairs are :\n");

    for(int k=0;k<j;k++)
    {
          printf("[%d]",num2[k]);
    }
    printf("\n\n");

   int val,index_val;
   printf("Give me the value :");
   scanf("%d",&val);

   do
   {
        printf("Give me the index of insertion of this value :");
        scanf("%d",&index_val);
   }while(index_val<0||index_val>size);

    for(int p=size-1;p>=index_val;p--)//element shift loop
    {
          num[p+1]=num[p];
    }
    num[index_val]=val;

    printf("\nDisplay Of the Array :\n");
    for(int i=0;i<=size;i++)
    {
         printf("[%d]",num[i]);
    }
    printf("\n");
}

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 2012-05-19
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多