qq_40744691
qq_40744691
采纳率0%
2017-11-08 12:36 阅读 1.9k

初学者c语言编程问题。

7-3 求整数序列中出现次数最多的数(15 分)
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • weixin_40980527 weixin_40980527 2017-11-08 13:23

    我想到一个笨拙的办法,就是先从大到小排序,然后再一一比较

    点赞 1 评论 复制链接分享
  • sinat_39633010 sinat_39633010 2017-11-08 14:24

    东拼西凑整合了这段代码,基本能满足你说的要求,有一个bug就是当遇到两个数的个数相同时,
    输出的是首先出现的那个数,这个你可以仔细分析后完善一下。

    #include <stdio.h>
    void main()
    {
        int a[100]      = {0};
        int b[100]      = {0};
        int count[100]  = {0};
        int len = 0,max =0,n = 0;
        int i =0,j = 0;
    
        do
        {
            scanf("%d",&a[i]);
            i++;
        }while(getchar() != '\n');
    
        n = i;
        for(i=0;i<n;i++)
        {
            for(j=0;j<len;j++)
            {
                if(a[i]==b[j])
                {
                    count[j]++;
                    break;
                }
            }
            if(j==len)
            {
                b[len]=a[i];
                count[len]=1;
                len++;
            }
        }
        for(j=1;j<len;j++)
            if(count[j]>count[max])
                max=j;
        printf("max=%d,times=%d\n",b[max],count[max]);  
    }
    
    点赞 评论 复制链接分享
  • weixin_40980527 weixin_40980527 2017-11-09 10:58

    #includeint main(){ static int M=0; int a1[30],a2[30],a3[30]={0},i=0,j=0,k,N,temp; do{ scanf("%d",&a1[i]); i++; }while(a1[i-1]!=-1); N=i; a2[0]=a1[0]; for(i=0;i<N-1;i++){ for(k=0;k<=M;k++){ if(a1[i]==a2[k]) break; else{ if(k==M){ a2[k+1]=a1[i]; M++; } } } } for(j=0;j<=M;j++){ for(i=0;i<N;i++){ if(a2[j]==a1[i]){ a3[j]++; } } } temp=0; for(i=0;i<=M;i++){ if(a3[temp]<a3[i]) temp=i; printf("%d--%d次\n",a2[i],a3[i]); } printf("\n出现次数最多的数为:%d\n该数出现了%d次",a2[temp],a3[temp]); printf("\n"); return 0;}

    正确!

    点赞 评论 复制链接分享

相关推荐