| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1266 人关注过本帖
标题:菜鸟求助c编程,想要提取出已知的10个元素的数组中出现次数最多的元素(正常 ...
只看楼主 加入收藏
李海宝1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-2-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
菜鸟求助c编程,想要提取出已知的10个元素的数组中出现次数最多的元素(正常出现最多的只有一个元素,如果有两个元素都为最多则取它俩平均值)
希望各位大神帮帮忙写一下,最好有代码注解,谢谢。
搜索更多相关主题的帖子: 平均值 c编程 元素 最好 
2017-02-20 13:33
李海宝1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-2-20
收藏
得分:0 
例如两个已知数组jiaodu[1,1,1,1,2,3,3,3,4,4]和jiaodu[1,1,1,2,2,3,3,3,4,4]
2017-02-20 13:36
李海宝1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-2-20
收藏
得分:0 
2017-02-20 13:41
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:7 
, 仅仅提供一种方法, 数值的范围和如果求平均需要完善
程序代码:
#include<stdio.h>
int main(void)
{
    int a[10]={1, 1, 1, 3, 2, 3, 3, 3, 4, 4};
    int b[10]={0};
    int i=0;
    for(i = 0; i < 10; i++)
    {
        b[a[i]]++;
    }
    int max=0;
    
    for(i = 0; i < 10; i++)
    {
        if(b[i] > b[max])
          max=i;
    }
    
    printf("%d", max);
    
    return 0;
}

早知做人那么辛苦!  当初不应该下凡
2017-02-20 13:55
李海宝1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-2-20
收藏
得分:0 
#include "stdio.h"
int main()
{
 int n,a[10],i,j,flag=0,max;
 int b[10]={0};//计数数组
 scanf("%d",&n);
 for(i=0;i<n;i++)
  scanf("%d",&a[i]);
    for(i=0;i<n-1;i++)
  for(j=i+1;j<n;j++)
   if(a[i]==a[j])
    b[i]++;
 for(i=0;i<n;i++)
  if(b[i]!=0)
  {
   flag=1;
   break;
  }
 if(flag==0)
 {
  printf("输入数据中没有重复出现的数!n");
  return 1;
 }

 max=b[0];
 for(i=1;i<n;i++)
  if(b[i]>max)
   max=b[i];
 for(i=0;i<n;i++)
   if(max==b[i])
  printf("出现最多次数的是%d,一共出现%d次n",a[i],b[i]+1);

}
2017-02-20 14:30
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:7 
#include<stdio.h>
int num[10];
int coun[10];
int main()
{
    int i=10,j,max=0,s=0,sum=0;//max记录最多的重复次数,s记录重复了max次的元素个数,
    //sum是重复了max次的元素之和
    while(i--)
    {
        num[i]=rand()%10;coun[i]=0;
        printf("%d,",num[i]);
    }
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            if(num[i]==num[j])
                coun[i]++;
        }
        if(coun[i]>max) max=coun[i];
    }
    for(i=0;i<10;i++)
    {
        if(coun[i]==max)
        {
            s++;sum+=num[i];
        }
    }
    printf("答案:%f",(float)sum/s);
    return 0;
}
2017-02-20 23:13
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:7 
#include<stdio.h>
int main()
{
    int a[10],b[10]={2};
    int max=0,i,j,s=0,k;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++)
    {
        max=0;
        for(j=i+1;j<10;j++)
        {
           if(a[i]==a[j])
           max++;   
        }
        if(max>=b[i])
          {
              b[i]=max;
              k=a[i];
          }
    }
    printf("%d",k);
    return 0;
}
   只是会一个的 如果是两个 不会,。。
2017-02-22 20:37
快速回复:菜鸟求助c编程,想要提取出已知的10个元素的数组中出现次数最多的元素 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018402 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved