在c中求数组的中点,为什么要用(end + start)/2?请解释[关闭]

zf2sa74q  于 2023-04-29  发布在  其他
关注(0)|答案(2)|浏览(94)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

6年前关闭。
Improve this question
我想在C中找到一个数组的中点,比如:{2,5,7,23,1,8,3,8,2},预期结果为1。同样,如果数组在{2,6,9,231,62,3}的情况下是偶数,我希望得到任何中间值-在这种情况下是9231
我完全不知道该怎么做。

gdrx4gfi

gdrx4gfi1#

根据你的问题描述,不管你的数组是偶数还是奇数,中间的元素索引总是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]);
}
oxcyiej7

oxcyiej72#

您需要:

  • 求数组的大小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

相关问题