原本思路:暴力搜索,暴力存储每一个数字,但是数字出现的次数无法算;
知识扩充:a[k]++<=>a[k]=a[k]+1,并非k+1;
a[120]={0}表示数组内的元素值都是0;
此题思路:1,并不把数字的值存在数组内,而是作为数组的下标,如输入k,------>a[k]
2,那么我们每次输入一个重复的数值时候就让对应的a[k]+1达到了计算个数的目的;
3,由于我们是求最多的数值,因此,用条件句判断最合适,因为可能满足最多的不只一个
而这个条件我们在之前已经记录在每一个a[k]内,然后当前对比最大值,提取最大值
#include <stdio.h> #include <string.h> int main() { int n,max=0,i,k; int a[120]={0}; while(scanf("%d",&n)!=EOF) { if (n>=0&&n<=100) k=n; else k=101; if (k>=0&&k<=100) { a[k]++; //记录数字出现的次数; } if (max<a[k]) //提取当前次数最多的次数大小 max=a[k]; } for (i=0;i<=100;i++) { if (a[i]==max) //满足次数最大的输出,因此兼容多个 printf("%d\n",i); } return 0; }