如何在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};
答案 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;
}