|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】 输入一组无序的整数,输出其中出现次数最多的整数及其出现次数。
10
0 -50 0 632 5813 -50 9 -50 0 632
【样例输出】
-50 3
0 3
哪里出错了
#include "stdio.h"
#include "string.h"
int main()
{
int i,j, n;
int flag,count;
int arr[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",arr);
}
for(i=0;i<n-1;i++)
{
for(j=1;j<=n;j++)
{
if(arr[i]==arr[j])
{
flag=arr[i];
count=0;
count++;
}
}
{
printf("%d",flag);
printf("%d",count);
}
}
return 0;
}
本帖最后由 jackz007 于 2021-1-29 18:13 编辑
- #include <stdio.h>
- int main(void)
- {
- int i , j , k , n , m , t , arr[100] , dat[100] , cnt[100] ;
- scanf("%d" , & n) ;
- for(i = 0 ; i < n ; i ++) scanf("%d" , & arr[i]) ; // 读入数据
- for(dat[0] = arr[0] , i = m = 1 ; i < n ; i ++) { // 把 arr[n] 中总共 m 个不同数据存入 dat[m] 中
- for(k = 0 ; k < m && arr[i] != dat[k] ; k ++) ; // 把 arr[n] 中总共 m 个不同数据存入 dat[m] 中
- if (k == m) dat[m ++] = arr[i] ; // 把 arr[n] 中总共 m 个不同数据存入 dat[m] 中
- } // 把 arr[n] 中总共 m 个不同数据存入 dat[m] 中
- for(i = 0 ; i < m - 1 ; i ++) { // 对 dat[] 按从小到大的顺序排序
- for(j = i + 1 ; j < m ; j ++) { // 对 dat[] 按从小到大的顺序排序
- if(dat[i] > dat[j]) { // 对 dat[] 按从小到大的顺序排序
- t = dat[i] ; // 对 dat[] 按从小到大的顺序排序
- dat[i] = dat[j] ; // 对 dat[] 按从小到大的顺序排序
- dat[j] = t ; // 对 dat[] 按从小到大的顺序排序
- } // 对 dat[] 按从小到大的顺序排序
- } // 对 dat[] 按从小到大的顺序排序
- } // 对 dat[] 按从小到大的顺序排序
- for(i = 0 ; i < m ; i ++) cnt[i] = 0 ; // 初始化计数数组 cnt[m]
- for(i = 0 ; i < m ; i ++) for(j = 0 ; j < n ; j ++) if(dat[i] == arr[j]) cnt[i] ++ ; // 用 cnt[m] 对 arr[n] 进行不同数值的统计计数
- for(k = 0 , i = 1 ; i < m ; i ++) if(cnt[i] > cnt[k]) k = i ; // 找到出现次数的多的次数,k 是索引。
- for(i = 0 ; i < m ; i ++) if(cnt[i] == cnt[k]) printf("%d %d\n" , dat[i] , cnt[i]) ; // 把最多次数的数及出现次数统统显示出来
- }
复制代码
|
|