Lawliet729 2021-12-04 18:36 采纳率: 75%
浏览 55
已结题

c语言数组题,我想知道的是解题思路,简单一点就好

任意输入10 个正整数,求其中互不相同的数的个数num,以及此num 个数中哪一个数的出现次数最多,共出现了几次。
例如,当输入的10 个数为:3、2、4、1、3、2、3、5、3、8,则其中互不相同的数的个数num=6,而3 出现次数最多,共出现了4 次。

  • 写回答

1条回答 默认 最新

  • 五一编程 2021-12-04 18:48
    关注
    #include <stdio.h>
    
    #define MAX 11
    
    /*输入MAX-1个整型数字,找出不同数字的个数,并且给出出现次数最多的数字。*/
    
    void 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;
        }
    }
    
    int main()
    {
        int tmp,num,max,i=0,j=0;
        int a[MAX]={0},b[2][MAX]={0};
        printf("Please input:\n");
        for(i=0;i<MAX-1;i++)
        {
            scanf("%d",&a[i]);
        }
        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(a[i+1]!=a[i]){
                b[0][num]=a[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;
        }
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 创建了问题 12月4日