A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© xiaochongzi 中级黑马   /  2015-10-30 12:19  /  3359 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)

求代码详细,最好注释多多

5 个回复

倒序浏览
/**  * @(#)TongJi.java  *  * TongJi application  *  * @author kuroro  * @version 1.00 2011/9/6  */  import java.util.Arrays; public class TongJi {           public static void main(String[] args) {                  int[] a = new int[41];                  for(int i=0;i<50;i++)                   {                          int count = (int)(Math.random()*41)+10;                          System.out.print(count+" ");                      a[count-10]++;                  }                  for(int j = 0 ; j< a.length; j++)                  {                             if(a[j]==0)                         continue;                    else                     {                                        System.out.println();                             System.out.println((j+10)+"出现了"+a[j]+"次");                    }                  }                   int max=a[0];                   for(int j=0;j<a.length;j++)                   {                           if(a[j]>max)                                   max = a[j];                   }                    System.out.println();                    System.out.println("最大出现次数为"+max+"次");                    for(int j=0;j<a.length;j++)                    {                            if(a[j]==max)                                    System.out.println("出现次数最多的数字为"+(j+10));                    }                                    }   }
回复 使用道具 举报
代码写完之后也才发现是IOS
回复 使用道具 举报
#import <Foundation/Foundation.h>

/*要求:输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)
思路:1、创建个数组存储十个数;
2、创建个二维数组,遍历原数组,第一列用于存放元素,第二列用于存放次数;
3、比较出现次数输出最大的,并记录;
4、输出数组值。找是否有次数相同的有的话,输出;

*/
void getMostTime(int arr[]){
   // 定义用于存储数字和出现次数的容器,共两种采用二维数组,最多十个数,所以位10  2
    //用brr[][0]存储数值,brr[][1]存储次数
    int brr[10][2];
    //定义不相同数的个数unsamecount,用于后期存储分配内存
    //定义个flag标记用于判断是否已经存储相同数值
    int unsamecount=0,flag=0;
   
    for (int i=0; i<10; i++) {
        //若相同数值为存储,开辟新空间存储其,次数归一
        if (flag==0) {
            //存储数值
            brr[unsamecount][0]=arr[i];
            //存储次数并初始化
            brr[unsamecount][1]=1;
           // 此处位置,为下一个数值分配下一个位置
            unsamecount++;
        }
        //每次判断标记初始化
        flag=0;
      
        for (int j=0; j<i; j++) {
            //判断是否已经存储相同数值,通过改变标记让后续程序了解
            //如果存在对应次数加一
            if(brr[j][0]==arr[i]){
                 brr[j][1]=brr[j][1]+1;
                flag ++;
                break;
            }
        }
            }
        //定义出现最大次数标记并初始化,定义出现最大次数为主标记方便后续输出
    int max=brr[0][1],maxindex=0;
       // 找寻出现最大次数数值对应的位置
    for (int i=0;i<unsamecount ; i++) {
        if (max<brr[i][1]) {
            max=brr[i][1];
            maxindex=i;
        }
    }
    printf("出现次数最多的数依次是\n");
    //输出对应数值和次数,为避免有相同次数对此位置后各次数均进行判断
    for (int i=maxindex; i<unsamecount; i++) {
        if (brr[maxindex][1]==brr[i][1]) {
            printf("数字:%d\t次数:%d\n",brr[i][0],brr[i][1]);
        }
    }

}
int main(int argc, const char * argv[]) {
    //  定义存储是个数字的容器,此处为数组
    int arr[10];
    printf("请输入十个数:\n");
    //输入数据
    for (int i=0; i<10; i++) {
        scanf("%d",&arr[i]);
    }
   
    //获得出现次数多的数并打印
    getMostTime(arr);
   
    return 0;
}
回复 使用道具 举报
好吧好吧,就这样吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马