环境vs2010

/ Test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class Node{
public:
    int value;
    int n;
    Node(){value=0;n=0;}
};
int find(Node a[],int n,int x)//放回为n则没有找到,<n则找到
{
    int i=0;
    for(;i<n;i++){if(x==a[i].value){return i;}}
    return i;
}
 void findN(Node a[],int n,int x,int b[],int &nn)//b记录node.n=x的数的下标 
{
    int i=0,j=0;
    //int* b=new int[n];
    for(;i<n;i++){if(x==a[i].n){b[j++]=i;}}
    nn=j;
    //return i;
}
void insert(Node a[],int n,int x)
{
    a[n].value=x;a[n].n++;
}
void fun(int a[],int n) //输出数组中出现次数最多的数(若有次数相同的,输出value较小的)
{
    int i=0,j=0;//j为temp数组元素的个数
    Node temp[100];
    temp[0].value=a[0];
    temp[0].n=1;
    j++;
    int f=0;
    for(i=1;i<n;i++)
    {
        f=find(temp,j,a[i]);
        if(f<j){(temp[f].n)++;}
        else{insert(temp,j,a[i]);j++;}
    }
    int max=temp[0].n;
    int m=0;//m为个数最多的数的下标
    for(i=1;i<j;i++)
    {
        if(temp[i].n>max)
        {
            max=temp[i].n;m=i;
        }
    }
    cout<<"相同的数的个数最多为:"<<max<<endl;
    int tempN[10]={0},nn=0;
    findN(temp,j,max,tempN,nn);
    int min=temp[tempN[0]].value;
    for(i=0;i<nn;i++)//从几个个数相同的数中找到最小的一个值
    {
        if(temp[tempN[i]].value<min){min=temp[tempN[i]].value;}
    }
    cout<<"个数最多的数中最小的为:"<<min<<endl;
    //cout<<temp[m].value<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
    int a[]={1,2,1,4,1,6,1,3,4,6,7,1,3,1,5,6,6,7,6,6,6,1};
     fun(a,22);
    return 0;
}