添加和删​​除数组中的元素

时间:2016-09-22 07:39:05

标签: c arrays function methods

我正在处理这个小C程序,以填充数组,插入和删除数组中的元素,最后打印该数组。

该程序包含一个main()函数,addToArray()函数, remFromArray()函数和printArray()函数。

这是我的主要方法: 它会提示用户输入正整数序列

•对于用户输入的每个整数,调用addToArray函数将整数插入数组

•调用printArray函数打印出数组的内容。

注意:不要提示用户输入的整数数量;您必须接受输入,直到用户输入负数

#include <stdio.h>

#define maxSize 100 //maxSize for array

int addToArray(int* arr, int size, int numToAdd);
int remFromArray(int* arr, int size, int numToGo);
void printArray(int* arr, int size);

int main (void){

    int arr[maxSize];
    int i, j;

    printf("Enter a positive integer to add to an array\n");
    while (i >= 0 ){

        scanf("%d",&i);

        if (i >= 0 ) {
            addToArray(arr, maxSize, i);
        printf("Enter another positive integer for array\n");

        }
        else{
            printArray(arr, maxSize);
        }
     }
  }

这些是我创建的另一个功能:

addToArray()=&gt;

  /*find the correct index in the array where to insert the 
    new element, so array in ascending order
  - make room for the new element by moving other elements
  - store the new element at the correct index
  - return the new size (number of elements) of the array */

int addToArray(int* arr, int size, int numToAdd){
int i, n, m, pos;   

    for (int i = 0; i < maxSize; i++)
    {
        if (numToAdd < arr[i])
        {
            pos = i;
            break;
        }
        if (numToAdd > arr[n-1])
        { 
            pos = maxSize;
            break;
        }
    }
    if (pos != maxSize)
    {
        m = maxSize - pos + 1 ;
        for (int i = 0; i <= m; i++)
        {
            arr[maxSize - i + 2] = arr[maxSize - i + 1] ;
        }
    }
    arr[pos] = numToAdd;
}
void printArray(int* arr, int size){

    printf("Resultant array is\n");

    for (int c = 0; c <= maxSize; c++){
        printf("%d\n", arr[c]); 
    }
}

你可以看到我已经尝试编写main(),addToArray(),printArray(),但由于某种原因它不能正常工作。我的printArray()没有显示所需的结果。 如果你能看一下这段代码并指导我,我会很高兴的。 万分感谢

1 个答案:

答案 0 :(得分:3)

首先,不要为您创建的变量设置值。例如,所有int i, n, m, pos;都有不确定的值,而不是您所期望的0。在使用之前不要忘记将它们设为值,以避免出现意外情况。

其次,请注意数组的索引。例如,arr[maxSize - i + 2],当i == 0时,则索引将为maxSize + 2,这是无效的位置,可能导​​致分段错误。