gpt4 book ai didi

c - 从数组中添加和删除元素

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:14 24 4
gpt4 key购买 nike

我正在编写这个小型 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() =>

  /*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() 没有显示所需的结果。如果您能查看这段代码并指导我完成它,我会很高兴。谢谢一百万

最佳答案

首先,您没有为您创建的变量设置值。例如,所有这些 int i, n, m, pos; 都具有不确定的值,而不是您可能期望的 0。不要忘记在使用前给它们赋值以避免意外。

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

关于c - 从数组中添加和删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39633056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com