数组操作(插入元素)

时间:2017-05-01 21:17:51

标签: c arrays

这段代码有什么问题,我不能在数组中插入超过9个元素?这段代码应该允许用户在数组中输入多达100个元素的不同元素。

这是插入函数。

#include <stdio.h>
#include <stdlib.h>
int y = 0;
void insert(int a[])
{
    printf("enter an element to insert\n");
    int p, i, x = 0, z = 0, k = 0;
    scanf("%i", &x);
    if (y < 100)
    {
        if (y != 0)
        {
            for (i = 0; i < y; i++)
            {
                if (a[i] == x)
                {
                    printf("Element %d already exists, No change", x);
                    z = 1;
                    break;
                }
            }
            if (z == 0)
            {
                for (i = 0; i < y; i++)
                {
                    if (x < a[i])
                    {
                        p = i;
                        y++;
                        k = 1;
                        break;
                    }
                }
                if (z == 0 && k == 0)
                {
                    y++;
                    p = y - 1;
                    a[p] = x;
                }

                if (z == 0 && k == 1)
                {
                    for (i = (y - 1); i > p; i--)
                    {
                        a[i] = a[i - 1];
                    }
                    a[p] = x;
                    printf("\nElement %d is inserted   \n y is %d", x, y);
                }
            }
        }
        else
        {
            y++;
            a[y - 1] = x;
            printf("\nElement %d is inserted", x);
        }
    }
    else
        printf("array is full");
}
  int main()
{
   int x=0;
   int a[y];
   while(x!=2)
   {
      printf("\nEnter your choice: 1) insert 2)exit \n");
      scanf("%d",&x);
      switch (x)
      {
         case 1:
         insert(a);
         break;
         case 2:
         printf("Goodbye");
         break;
      }
   }
   return 0;
}

1 个答案:

答案 0 :(得分:0)

必须事先知道数组的大小。在我的情况下,大小是100(int a [100];),或者会有溢出。