我想在C语言中找到数组的中点:{2,5,7,23,1,8,3,8,2}
,预期结果为1.另外,如果数组甚至是{2,6,9,231,62,3}
,我希望得到任何一个中间值 - 在这种情况下为9
或231
。
我完全不确定如何解决这个问题。
答案 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