按c中的偶数或奇数索引将数组拆分为两个数组

时间:2018-10-28 19:05:18

标签: c

如何在C中将数组的偶数位置数与奇数位置数分开 例子

int arr[]= {2,3,4,5,6,7,8,9,1};
int odd[]= {2,4,6,8,1};
int even[] = {3,5,7,9};

1 个答案:

答案 0 :(得分:0)

使用%获得余数。如果余数不为零,则 index 为奇数,否则为奇数。但是索引从0开始而不是1,因此第一个元素的索引是0并且是偶数。如果您想根据此排序(似乎可以),请在索引上加1。

#include <stdio.h>

int main() {
  int arr[] = {2,3,4,5,6,7,8,9,1}; // our array

  const size_t max_size = sizeof(arr)/sizeof(arr[0]);
  int odd[max_size];
  size_t odd_cnt = 0;
  int even[max_size];
  size_t even_cnt = 0;

  for (size_t i = 0; i != max_size; ++i) {
    if ((i+1)%2) { // if (i+1)%2 is nonzero, i+1 is odd
      odd[odd_cnt++] = arr[i];
    }
    else {
      even[even_cnt++] = arr[i];
    }
  }

  for(size_t i = 0; i != odd_cnt; ++i) {
    printf("%d ", odd[i]);
  }
  printf("\n");

  for(size_t i = 0; i != even_cnt; ++i) {
    printf("%d ", even[i]);
  }
  printf("\n");
  return 0;
}