思路:
定义两个指针i和j,i的起始位置是第一个元素,j的起始位置是i之后的一个元素。
1.首先比较a[i]和a[j]是否相同,如果相同,将k(i指向的目标元素出现次数计数器)+1。接着j+1指向下一个元素,并判断a[i]和a[j]是否相同。
2.遍历数组后,进行对k的值判断,如果k>n/2,则将a[i]的值放入b,并打断循环输出b的值。如果k<n/2,则将k的值归零,i+1。并重复第一个步骤。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,j,b,k=0,len;
int a[10] = { 3,1,2,3,3,1,3,1,3,3 };
len = strlen(a);
for (; i < sizeof(a) / sizeof(int); i++)
{
j = i + 1;
for (;j < sizeof(a) / sizeof(int);j++)
{
if (a[j] == a[i])
{
k++;
}
}
if (k > len / 2)
{
b = a[i]; break;
}
else {
k = 0;
}
}
printf("%d\n", b);
system("pause");
}