在c中找到数组的中点

时间:2017-02-22 03:52:41

标签: c arrays

我想在C语言中找到数组的中点:{2,5,7,23,1,8,3,8,2},预期结果为1.另外,如果数组甚至是{2,6,9,231,62,3},我希望得到任何一个中间值 - 在这种情况下为9231

我完全不确定如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

根据您的问题描述,无论您的数组是偶数还是奇数元素,中间元素索引始终为length / 2.

int main() {
  int a[] = {2,5,7,23,1,8,3,8,2};
  //Figure out the size of the array 
   int n = sizeof(a) / sizeof(int);
   printf("The mid point is %d", a[n/2]);
}

答案 1 :(得分:2)

你需要:

  • 查找数组的大小n。通常由sizeof array / sizeof array[0]完成。
  • 索引array[n/2]以找到中点。

以下是一个例子:

#include <stdio.h>

#define SIZE(x) (sizeof x / sizeof x[0])

int main(void) {
    int array1[] = {2,5,7,23,1,8,3,8,2};
    int array2[] = {2,6,9,231,62,3};

    printf("First midpoint = %d\n", array1[SIZE(array1)/2]);
    printf("Second midpoint = %d\n", array2[SIZE(array2)/2]);

    return 0;
}

哪个输出:

First midpoint = 1
Second midpoint = 231