C语言 怎么计算数组中每一个不同元素出现的次数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 怎么计算数组中每一个不同元素出现的次数相关的知识,希望对你有一定的参考价值。

比如a[]=1,2,5,7,7,8,7,1输出1出现2次 2出现1次 5出现1次 7出现3次 8出现1次
对了 前提是不使用排序 不要改变值在数组中的位置

如果可能出现的数的范围有限的话,可以用数组来解决

int counter[100];//只能解决0~99范围内的整数
for(int i=0;i<sizeof(a)/sizeof(int);i++)
    counter[a[i]]++;

for(int i=0;i<100;i++)
    if(counter[i])printf("%d出现%d次\\n",i,counter[i]);

更复杂的情况(例如出现小数或特别大的数)就得用链表一类的容器来解决了

参考技术A #include <math.h>
#include <stdio.h>
#define N 1000//0到1000内的整数
#define n 200//数组存放了200个整数
int main()
int counter[N];
for(int i=0;i<N;i++)
counter[i]=0;//初始化

int a[n];
for(int j=0;j<n;j++)
scanf("%d",&a[j]);
counter[a[j]]++;

for(int i=0;i<N;i++)
if(counter[i])
printf("%d出现%d次\n",i,counter[i]);

js数组的reduce方法能计算数组中每个元素出现的次数吗?

参考技术A

可以,你就把它当成一种循环来理解。

var a = [1,2,3,4,5,1,2,3,2,1,2,3,4,5]

var c = a.reduce(function(acc,curr)

if( acc[curr] !== undefined )

acc[curr] += 1;

else

acc[curr] = 1;

return acc;

,)

console.log(c)

运行图如下:

参考技术B reduce方法可以对数组的每个元素进行累加处理,从而计算数组中每个元素出现的次数。具体方法为:

```javascript
let arr = [1, 2, 2, 3, 3, 3];
let result = arr.reduce((acc, val) =>
if (val in acc)
acc[val]++;
else
acc[val] = 1;

return acc;
, );
console.log(result); // 1: 1, 2: 2, 3: 3
```

在上面的代码中,reduce方法的第一个参数是一个reduce回调函数,这个函数会接收两个参数:累加器(acc)和当前元素(val)。因为我们想要求出每个元素出现的次数,所以我们可以使用一个if语句来检查该元素是否已经存在于累加器中,如果已经存在,则将元素出现的次数加1,否则将元素添加到累加器中,并且其出现次数为1。最后reduce方法将累加器返回,这样我们就可以得到一个带有每个元素和其出现次数的对象。

需要注意的是,在以上代码中,我们把初始值设为了一个空对象,这是为了让reduce方法能够生成一个对象作为输出结果,而不是一个单一的值。另外,由于reduce方法是ES5中引入的,所以在一些老版本的浏览器中可能不支持该方法。
参考技术C var arr=["a","b","a","c","d","c","a"];
var newArr=arr.reduce((t,a)=>(t[a]?t[a]++:t[a]=1,t),);
console.log(newArr);

以上是关于C语言 怎么计算数组中每一个不同元素出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

C语言 统计数组每个元素个数

C语言怎么算 同或,找一个数组中重复出现了一次的元素

c语言,输入一个字符串,计算某字符出现次数

C语言,查找数组里重复出现的数字;

C语言找出一个数组中出现次数最多的那个元素

C语言试题五之计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和