void main()
{static int a[10]={0},n[10],*p,*q;
for (p=a;p<a+10;p++)
scanf("%d",p);
for(p=a;p<a+10;p++)
/*此处的循环和上面的for是一样的,不过一个是为了输入数据a[10],一个是检验a[10]中的每个数出现的次数*/
n[*p]++;
/*
这个题目最有意思的就是这个地方,一定要弄懂。n[]是用来统计一个数出现的次数,n[1]是统计1出现的次数(以此类推)。所以n[*p]++表示当输入的数种出现*p时,用来统计它的变量n[*p]就加1。ps:给每一个n[]初始化为0要规范一点*/
q=p=n;
/*q是指针变量,用来指向出现最多数的次数。p用来依次指向0-9出现的次数*/
p++;
/*此句看不懂,拉出去打死*/
while (p<n+10)
/*此句看不懂,拉出去打死了再打死一遍*/
{
if(*p>*q)
/*当*p中的次数小于另一个数出现的次数时,记录新的最大值*/
q=p;
p++;
/*此句看不懂,打死了还要鞭尸*/
}
printf("%d
%d",q-n,*q);
/*输出最大数出现的次数和该数,ps:p和n都是地址,他们做减法,就是出现最多数出现的次数(要懂指针的运算规则)。*/
}