在c中查找数组的中点
我想在C中找到数组的中点,比如:在c中查找数组的中点,c,arrays,C,Arrays,我想在C中找到数组的中点,比如:{2,5,7,23,1,8,3,8,2},预期结果为1。另外,如果数组在{2,6,9231,62,3}的情况下是偶数,我希望在这种情况下得到中间值中的任何一个-9或231 我完全不知道该怎么做。根据您的问题描述,无论数组的元素数是奇数还是偶数,中间的元素索引始终为length/2 int main() { int a[] = {2,5,7,23,1,8,3,8,2}; //Figure out the size of the array int n
{2,5,7,23,1,8,3,8,2}
,预期结果为1。另外,如果数组在{2,6,9231,62,3}
的情况下是偶数,我希望在这种情况下得到中间值中的任何一个-9
或231
我完全不知道该怎么做。根据您的问题描述,无论数组的元素数是奇数还是偶数,中间的元素索引始终为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]);
}
您需要:
- 查找数组的大小
。通常由n
完成sizeof数组/sizeof数组[0]
- 索引
以查找中点数组[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;
}
通常,
length/2
是中点。您忘记问问题,因此不清楚您需要什么帮助。请至少张贴一些代码与插槽的代码,以找到中点将去。谢谢!这回答了我的问题。我不知道为什么我会被否决。但是谢谢你的回答,不客气。我没有否决你的问题。但别担心。有时会发生这种情况。sizeof(a)
这里是指针的大小arrayMidpoint()
未生成可接受的结果。@delali,是否检查此代码是否有效?我对此表示怀疑,因为作为参数传递的数组被视为指针。所以sizeof(a)
imo应该返回指针的大小,而不是数组的大小。但是我附近没有一台电脑来测试它。请检查。@chux,你说得对。函数参数中的数组被视为指针,因此它返回指针的大小,而不是原始数组中所有元素的总大小。我已经更新了我的答案。
First midpoint = 1
Second midpoint = 231