输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急

输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急。

 #include <stdio.h>
#define MAX 11
/*输入MAX-1个整型数字,找出不同数字的个数,并且给出出现次数最多的数字。*/
int *sel_sort(int n , int *a,int seq)/*选择排序 seq:0为由小到大,1为由大到小*/
{
    int i=0,j=0 ,min=0,tmp;
    for(i=0 ; i<n-1 ; i++)
    {
        min=i;
        for(j=i+1 ; j<n ; j++)
        {
            if(seq==0){
                if(a[j]<a[min])
                    min=j;
            }
            if(seq==1){
                if(a[j]>a[min])
                    min=j;
            }
        }
        tmp=a[i];
        a[i]=a[min];
        a[min]=tmp;
    }
    return a;
}

int main()
{
    int tmp,num,max,i=0,j=0,*p,**q;
    int a[MAX]={0},b[2][MAX]={0};
    printf("Please input:\n");
    for(i=0;i<MAX-1;i++)
    {
        scanf("%d",&a[i]);
    }
    p=sel_sort(MAX-1,a,0);
    num=1;
    b[0][0]=a[0];
    b[1][0]=1;
    tmp=1;
    for(i=0;i<MAX-2;i++)
    {
        if(p[i+1]!=p[i]){
            b[0][num]=p[i+1];
            b[1][num-1]=tmp;
            tmp=1;
            num+=1;
        }
        else{
            tmp+=1;
        }
    }
    b[1][num-1]=tmp;

    /*二维数组排序*/
    for(i=0 ; i<num-1 ; i++)
    {
        max=i;
        for(j=i+1 ; j<num ; j++)
        {
            if(b[1][j]>b[1][max])
                max=j;
        }
        tmp=b[1][i];
        b[1][i]=b[1][max];
        b[1][max]=tmp;
        tmp=b[0][i];
        b[0][i]=b[0][max];
        b[0][max]=tmp;

    }
/*完成二维数组排序*/

    printf("\nnum=%d\n",num);
    printf("NUM[0]=%d cnt=%d\n",b[0][0],b[1][0]);
    for(i=1;i<num;i++)
    {
        if(b[1][i-1]==b[1][i])
            printf("NUM[%d]=%d cnt=%d\n",i,b[0][i],b[1][i]);
        else
            break;
    }
    system("pause");

    return 0;
}

js: 给你提供一道题对你解决相似问题提供好的思路

输入乱序字母串 如 asdafasdfasfaf..... 输出最大出现次数的字母及出现的次数

前端来做的话可以这样 思路都一样可以翻译成别的语言 效率更高

// html input
var a = document.getElementById("num"),numStr,numArr,hashNum = {},max = 0,hashMax;
numStr = a.value;//"asdasdasdasdas"
numArr = numStr.split("");//["a", "s", "d", "a", "s", "d", "a", "s", "d", "a", "s", "d", "a", "s"]
for(var i=0;i < numArr.length;i++){
if(hashNum [ numArr[i] ] ){
hashNum [ numArr[i] ] +=1;
} else {
hashNum [ numArr[i] ] = 1;
}
}
//Object {a: 5, s: 5, d: 4}
for(var x in hashNum){
if(max<hashNum[x]) {
hashMax = {};//初始化
max = hashNum[x];
hashMax[x] = max;
} else if(max == hashNum[x]){
max = hashNum[x];
hashMax[x] = max;
}
}
var s = "";
for(var y in hashMax){
s+='最大出现'+y+':'+hashMax[y]+'';
}
alert(s)

public static void main(String[] args) {
int[] arr = { 1, 2, 1, 4, 4, 5, 5, 3, 6 };
Map map = new HashMap();
for (int i : arr) {
String key = i + "";
Integer num = (map.get(key) == null) ? 0 : map.get(key);
num++;
map.put(key, num);
}
Set> set = map.entrySet();
Iterator> it = set.iterator();
int max = 0;
List maxNumber = new ArrayList();
while(it.hasNext()) {
Entry obj = it.next();
String number = obj.getKey();
Integer num = obj.getValue();
if(max < num) {
maxNumber.clear();
maxNumber.add(number);
max = num;
} else if(max == num) {
maxNumber.add(number);
}
}

    String str = "";
    for(String number : maxNumber) {
        str += number + ";";
    }
    str = str.substring(0, str.length()-1);
    System.out.println("数字" + str + "出现次数最多; 最多次数:"+ max + ";");
}