C 如何在只有一个数字的数组中切换两个数字?

C 如何在只有一个数字的数组中切换两个数字?,c,C,如何做到这一点: 数组1:285735 阵列2:2018 5 7 3 5 问题是,如果第一个数组中有两个偶数是连续的,则在它们的位置放置一个2018,如下所示。 我该怎么做 for(a=n-1; a>=0; a--) { if( b[a]%2==0 && b[a-1]%2==0) { for(c=a-1; c<n-1; c++) { b[c]=b[c+1]; } b

如何做到这一点:

数组1:
285735

阵列2:
2018 5 7 3 5

问题是,如果第一个数组中有两个偶数是连续的,则在它们的位置放置一个
2018
,如下所示。 我该怎么做

for(a=n-1; a>=0; a--)
{
    if( b[a]%2==0 && b[a-1]%2==0)
    {
        for(c=a-1; c<n-1; c++)
        {
            b[c]=b[c+1];
        }
        b[a]= 2017;
    }

}
(a=n-1;a>=0;a--)的

{
如果(b[a]%2==0&&b[a-1]%2==0)
{

对于(c=a-1;c您不能真正更改数组的大小,但可以移动元素并忽略末尾的元素:

#include <stdio.h>

void shift_left(int* arr, size_t sz, size_t shift_cnt)
{
  for (size_t i = 0; i != sz - shift_cnt; ++i)
  {
    arr[i] = arr[i + shift_cnt];
  }
  for (size_t i = sz - shift_cnt; i != sz; ++i)
  {
    arr[i] = 0;
  }
}

int main()
{
  int arr[] = { 2, 8, 5, 7, 3, 5 };
  size_t sz = sizeof(arr) / sizeof(arr[0]);

  for (size_t i = 0; i < sz - 1;)
  {
    if (arr[i] % 2 == 0 && arr[i + 1] % 2 == 0)
    {
      shift_left(arr + i, sz-- - i, 1);
      arr[i] = 2018;
    }
    else
    {
      ++i;
    }
  }

  for (size_t i = 0; i != sz; ++i)
    printf("%d ", arr[i]);

  return 0;
}

// Output: 2018 5 7 3 5
#包括
无效左移(int*arr,size\t sz,size\t shift\u cnt)
{
对于(大小i=0;i!=sz-shift\u cnt;++i)
{
arr[i]=arr[i+shift_cnt];
}
对于(大小i=sz-shift;i!=sz;++i)
{
arr[i]=0;
}
}
int main()
{
int arr[]={2,8,5,7,3,5};
size_t sz=sizeof(arr)/sizeof(arr[0]);
对于(尺寸i=0;i
沿着源阵列前进,寻找偶数对

// return size used

size_t AJ_squish(int *dest, size_t dest_size, const int *src, size_t src_size) {
  size_t dest_len = 0;
  while (src_size > 1 && dest_len < dest_size) {
    // 2 evens in a row?
    if (src[0] % 2 == 0 && src[1] % 2 == 0) {
      dest[dest_len++] = 2018;
      src_size -= 2;
    } else {
      dest[dest_len++] = *src++;
      src_size--;
    }
  }
  if (src_size >  0 && dest_len < dest_size) {
    dest[dest_len++] = *src;
  }
  return dest_len;
}
//使用的返回大小
大小(int*dest,size\t dest\u size,const int*src,size\t src\u size){
大小目的地长度=0;
while(src_size>1&&dest_len0&&dest\u len
a
达到
0
(即
a==0
)那么
b[a-1]会发生什么
?以及如何做什么?不清楚你在问什么,你想做什么。对于某些指定的输入,输出应该是什么?你创建的输出是什么?也请阅读相关内容。可能不起作用,我不知道如何做。我想从任何数组中切换2个数字,其中只有1个在这里,2个和8个在第一个阵列是偶数且连续的,因此我们在其中设置了一个2018place@AndreiJarca欢迎!还要注意,这将用一个2018替换三个连续的偶数,因为2018本身是偶数,在替换前两个之后,您仍然有2018,另一个偶数彼此相邻。希望这是期望的行为。如果不是t、 修复它应该不难。如果需要的话,我可以帮忙