题目//求数组中元素出现次数超过数组长度一半的数字。思路//1.先排序再输出数组中间的那个数arr[n/2],这种办法对于有偶数个元素的数组可能会出现错误2.遍历整个数组将遍历到的相同的数的次数加起来最后返回次数多的数这个数就是出现次数超过数组长度一半的数。本次所用的就是这种方法#includestdio.h #includeWindows.h int Find(int *arr, int len){ int num 0; int times 0; int i 0; for (i 0; i len; i){ if (times 0){ num arr[i]; //先给num一个值记录次数为1 times 1; } else if (arr[i] num){ //在遍历的时候有相同的则次数加1 times; } else{ times--; //不同的则次数减1超过数组长度一半的数times肯定大于0 } } return num; } int main(){ int arr[] { 1, 2, 3, 2, 2, 2, 5, 4, 2 }; printf(超过一半的数是: %d\n, Find(arr, sizeof(arr) / sizeof(arr[0]))); system(pause); return 0; }运行结果