帮我看看这个程序,这是一个要求输入10个一位正整数,存入一维整型数组,统计其中出现最多的数及其次数

帮我看看这个程序,这是一个要求输入10个一位正整数,存入一维整型数组,统计其中出现最多的数及其次数并输出。问题就是我看不到图上的那两块,数组n存的是什么样的数?为什么q-n是出现最多的数?
我是新手,自学的,所以求各位解答下,谢谢!

static int n[10]; //初始n数组每个元素都为0
n[*p]++; //统计每个数字出现的次数,*p表示你输入的数字,出现一次n[*P]加1,最终n[*p]表示你这个数字出现的次数
指针p后依次指向n的每个元素,q保存当前n数组中最大的,比较一边后就成a数组出现次数最多的啦。
q-n为第几个数,*q为最大值
(重点:这程序应该对输入的数有要求,只能为0~9之间,不然会出问题啦)追问

比如输入1234567892,那么n中存在的元素是什么?是每个元素的次数?例如121111111 这样?

追答

n中存的是你输入的每个数字的次数
121111111后,则n[1]=8,n[2]=1,其余的都为零;你一步一步跟踪调试下,体会会更深刻啦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-20
a[10]里边存的是0~9之间的数字。
n[]里边存的是数字出现的次数,数字0出现的次数存在n[0]里,1出现的次数存在n[1]里,...,一次类推,所以就出现了你第一个框的内容:检查a[..]是哪个数,然后*p就表示那个数,然后对应的n[..]里存的是那个数出现的次数,所以需要加1.

q指针指向的是n[]中最大的那个值的位置,比如说是n[7], 那么就表示7是出现次数最多的数字。q指向n[7]即q的值是n+7,即从n开始移动7个位移,q-n正好就是出现次数最多的那个数字。
相似回答