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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaochongzi 中级黑马   /  2015-10-30 12:19  /  3161 人查看  /  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;
}
回复 使用道具 举报
好吧好吧,就这样吧
回复 使用道具 举报

  1. #include <stdio.h>

  2. void test()
  3. {

  4.     int arr[10][2];//一个二维数组,记录数字及其出现的次数
  5.     for (int i=0; i<10; i++) {
  6.         arr[i][1] = 0;
  7.     }
  8.     int count = 0;//输入次数
  9.     int arrNum = 0;//存入数组的数字个数
  10.     while (count<10) {
  11.         int a;
  12.         printf("请输入数字:\n");
  13.         scanf("%d",&a);
  14.         count++;//输入一次记录一次

  15.         //第一次输入
  16.         if (count == 1) {
  17.             arr[0][0] = a;
  18.             arr[0][1]++;
  19.             arrNum++;
  20.             continue;
  21.         }
  22.         
  23.         for (int i = 0; ; i++) {
  24.             
  25.             //有相同的数
  26.             if (arr[i][0] == a) {
  27.                 arr[i][1]++;
  28.                 break;
  29.             }
  30.             
  31.             //查询到末尾没有相同的数
  32.             if (i ==arrNum-1) {
  33.                 arr[arrNum][0] = a;
  34.                 arr[arrNum][1]++;
  35.                 arrNum++;
  36.                 break;
  37.             }
  38.         }
  39.     }
  40.    
  41.     int max = 0;//最多次数
  42.     //选出最大次数
  43.     for (int i = 0; i<arrNum; i++) {
  44.         if (max < arr[i][1]) {
  45.             max = arr[i][1];
  46.         }
  47.     }
  48.     //输出最大数
  49.     printf("最大数字:\n");
  50.     for (int i = 0; i<arrNum; i++) {
  51.         if (max == arr[i][1]) {
  52.             printf("%d\n",arr[i][0]);
  53.         }
  54.     }
  55. }

  56. int main()
  57. {
  58.     test();
  59.     return 0;
  60. }













复制代码
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马