首页 > 解决方案 > C 插入数组指针

问题描述

我正在编写一个 C 程序来将元素插入到带有指针的数组中。在我的 INSERT 方法中,我似乎无法将元素添加到数组中。当我选择选项 4 时,它在数组中显示 0 数字。

我使用的测试用例如下:

  1. 运行程序
  2. 选择选项 1
  3. 输入数组大小
  4. 输入要添加到数组中的元素。
  5. 选择选项 4 以显示数组
    // Online C compiler to run C program online
    #include <stdio.h>
    #define MAX 10
    
    void initialize (int *size, int ar[]);
    void insert (int max, int *size, int ar[], int num);
    void iremove (int *size, int ar[], int num);
    void display (int size, int ar[]);
    
    
    int main ()
    {
      int option = 0;
      int num, ar[MAX], size = 0;
    
      printf ("Please select an option: \n");
      printf ("(1) Initialize the array \n");
      printf ("(2) Insert an integer \n");
      printf ("(3) Remove an integer \n");
      printf ("(4) Display the numbers stored in the array \n");
      printf ("(5) Quit \n");
    
      do
        {
            printf ("Enter your choice: \n");
            scanf ("%d", &option);
            switch (option)
            {
                case 1:
                    initialize (&size, ar);
                break;
                case 2:
                    printf ("Enter an integer: \n");
                    scanf ("%d", &num);
                    insert (MAX, &size, ar, num);
                break;
                case 3:
                break;
                case 4:
                    display(size,ar);
                break;
        default:
          break;
            }
        }
        while (option < 5);
        return 0;
    }
    
    void display (int size, int ar[])
    {
        int i;
        printf ("The %d numbers in the array: \n", size);
        for (i = 0; i < size; i++)
        printf ("%d ", ar[i]);
        printf ("\n");
    }
    
    void initialize (int *size, int ar[])
    {
        int total, i, num;
        printf ("Enter the total number of integers (MAX=%d): \n", MAX);
        scanf ("%d", &total);
        (*size) = 0;
        printf ("Enter the integers: \n");
        for (i = 0; i < total; i++)
        {
            scanf ("%d", &num);
            insert (MAX, size, ar, num);
        }
    }
    
    void insert (int max, int *size, int ar[], int num)
    {
        if(*size>=MAX)
        {
            printf("Array full")
        }
        else
        {
            ar[*size] = num;
        }
    }
    
    void iremove (int *size, int ar[], int num)
    {
    /* Write your code here */
    }

标签: c

解决方案


你忘了增加大小:

void insert (int max, int *size, int ar[], int num)
    {
        if(*size>=MAX)
        {
            printf("Array full")
        }
        else
        {
            ar[*size] = num;
            (*size)++;
        }
    }

推荐阅读