找数问题,通俗点解答。

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


#include <stdio.h>

int main()
{
    int i,count = 0;
    int arr[10];
    for(i = 0;i < 10;i++){
        scanf("%d",&arr[i]);
    }
    int fre[10] = {0};
    for(i = 0;i < 10;i++){
        fre[arr[i]] ++;
    }
    int max = fre[0],index = 0;
    for(i = 0;i < 10;i++){
        if(fre[i] > 0){
            count ++;
            if(fre[i] > max){
                max = fre[i];
                index = i;
            }
        }
    }
    printf("互不相同的数的个数是:%d\n%d出现的次数最多,共出现了%d次\n",count,index,fre[index]);
    return 0;
}


#include<stdio.h>
#define MAX 10
void main()
{
int num[MAX];//num[i]数组用来存放第i个输入的数字
int num_count[MAX]={1,1,1,1,1,1,1,1,1,1};//num_count[i]用来存放第i个输入进来的数字的出现个数
int i,j;
printf("请输入%d个数字:\n",MAX);
for(i=0;i<MAX;i++)
{
scanf("%d",&num[i]);
for(j=0;j<i;j++)//第i个输入进来的数字和前面输入数字进行比较
{
if(num[j]==num[i])
{
num_count[j]++;
break;
}
}
}
int find_max_num=num[0];//find_max_num用来存放出现次数最多的数字的值
int find_max_count=num_count[0];//find_max_coun用来存放出现次数最多的数字的出现次数
for(i=1;i<MAX;i++)
{
if(num_count[i]>find_max_count)
{
find_max_count=num_count[i];
find_max_num=num[i];
}
}
printf("出现最多的数字是%d,一共出现了%d次\n",find_max_num,find_max_count);
for(i=0;i<MAX;i++)
{
if((num[i]!=find_max_num) && (num_count[i]==find_max_count))
printf("出现最多的数字是%d,一共出现了%d次\n",num[i],num_count[i]);
}
getchar();
getchar();
}