Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c中查找数组的中点_C_Arrays - Fatal编程技术网

在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

我想在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 = 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