如何找到一个数组中的众数

 我来答
最爱寂寞的刺猬
2017-05-23 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.3万
采纳率:66%
帮助的人:1672万
展开全部
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int a[100],temp;
int max1=0,max2=1;
int p[100]={0},z=0;
//利用rand函数产生一个随机数组
srand((unsigned)time(NULL));
for(int i=0;i<100;i++){
a[i]= rand() % 100;
}
//找出众数的思想是:先排序,然后找出那个重复最多的数,那个数就是众数了
//①先利用冒泡排序法对数组进行排序
for(int b=0;b<99;b++){
for(int c=0;c<99-b-1;c++){
if(a[c]>a[c+1]){
temp=a[c];
a[c]=a[c+1];
a[c+1]=temp;
}
}
}
//②找出数组中重复最多的那个数,也就是众数,先找出众数出现的次数(出现的次数是max1)
for(int d=0;d<99;d++){
if(a[d]==a[d-1]){
max2=max2+1;
}
if(max2>max1){
max1=max2;
}
if(a[d]!=a[d+1]){
max2=1;
}
}
max2=1;
//③将数组的众数提取出来存储在数组p[100]中
for(int d=0;d<99;d++){
if(a[d]==a[d-1]){
max2=max2+1;
}
if(max2==max1){
p[z]=a[d];
z++;
}
if(a[d]!=a[d+1]){
max2=1;
}
}
//输出
printf("这个数组为:\n");
for(int j=0;j<99;j++){
printf("%d ",a[j]);
}
printf("\n");
printf("这个数组的众数为:\n");
for(int j=0;p[j]!='\0';j++){
printf("%d ",p[j]);
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式