C语言中的算法构造[已关闭]

bxjv4tth  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(136)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
21小时前关门了。
Improve this question
因此,我试图使一个算法,移动数组中的元素时,以往任何时候都2是在数组中找到
输入3 4 2 9,输出4 2 9 0这个输出是必需的,我已经尝试了某种代码,但很困惑,因为它要么复制或删除元素,输出是3 4 0 9或类似的东西

int main() {
    int a[4], i, j;
    
    for (i = 0; i < 4; i++) {
        printf("Enter element: ");
        scanf("%d", &a[i]);
    }
    
    void dele() {
        for (i = 0; i < 4; i++) {
            printf("%d",i);
            if (a[i] == 2) {
                printf("Ds");
                for (j = i; j > 0; j--) {
                    printf("DSasdw");
                    a[j+1] = a[j-1];
                    printf("%dww",a[j-1]);
                }
                a[3] = NULL;
                break;
            }
        }
    }
    
    dele();
    
    for (i = 0; i < 4; i++) {
        printf("%d ", a[i]);
    }
    
    return 0;
}
polhcujo

polhcujo1#

我认为这段代码将做你想要的,从我的理解:

void shift_array(int arr[], int size)
{
  for (int i = 0; i < size; i++) {
    if (arr[i] == 2) {
      for (int j = 0; j < size - 1; j++) {
        arr[j] = arr[j + 1];
      }
      arr[size - 1] = 0;
      i--;
      size--;
    }
  }
}

int main()
{
  int num_elements = 5;
  int a[num_elements], i;
  for (i = 0; i < num_elements; i++) {
    printf("Enter element: ");
    scanf("%d", &a[i]);
  }

  shift_array(a, num_elements);

  for (i = 0; i < num_elements; i++) {
    printf(" %d ", a[i]);
  }
  return 0;
}

这个函数循环遍历数组,直到它找到一个2,然后内部循环将它向左移动1位,并使最后一个元素= 0,然后我们减少计数器和大小,以检查新移动的元素,直到我们完成整个数组。

相关问题