gpt4 book ai didi

c - 从c中的数组中删除一系列元素

转载 作者:行者123 更新时间:2023-11-30 19:51:01 25 4
gpt4 key购买 nike

我需要从数组中删除一系列元素,但我不知道如何删除。我尝试了这个 for 循环,其中 start 是范围的开始,end 是范围的结束。

int main(void)
{
int n, n2, i, start, end, index;
int a1[n];
int a2[n2];

printf("Enter the length of the array#1: ");
scanf("%d", &n);

printf("Enter the elements of the array#1: ");
for (i = 0; i < n; i++){
scanf("%d", &a1[i]);}

printf("Enter the length of the array#2: ");
scanf("%d", &n2);

printf("Enter the elements of the array#2: ");
for (i = 0; i < n2; i++){
scanf("%d", &a2[i]);}

printf("Enter the start and end indexof array #1 to be removed: ");
scanf("%d %d", &start, &end);

int a3[(end-start)+1];

printf("Enter the position(index)of the array #2 to be added before: ");
scanf("%d", &index);

for (i=0;i < (n - end - 1);i++){
a1[start + i] = a1[end + i + 1];
a1[end + i + 1] = 0;
}
printf("\n");
printf("array1: ");


for (i=0;i < (n);i++){
printf("%d", a1[i]);
printf(" ");
}

最佳答案

你有:

  • 使用 nn2 给出数组的大小,而无需先初始化这些变量。虽然您尚未初始化阵列,但如果您这样做了,它会因 VLA 而失败。
  • 未检查您从用户收到的输入是否提供的范围可行?如果 end - start 大于数组的长度会怎样。
  • 使用 0 作为该元素移动到新位置/索引后要替换的值,如果移动的数字是 0 本身怎么办?

对于最后一点,使用一些用户输入的可能性非常小的值,例如 INT_MAX 并且您将需要 limits.h header + after让你的 for 循环看起来像这样会很好:

for(index=0;((index<sizeArr)&&((arr[index]!=INT_MAX)));++index)

此循环将从原始数组打印start - end较小的值。

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

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