如何用C语言编写一个程序来统计数组中每个数字出现的次数?
时间: 2025-01-03 13:44:54 浏览: 9
在C语言中,你可以使用哈希表(如结构体数组或动态分配的数组)来统计数组中每个数字出现的次数。下面是一个简单的示例,展示如何使用结构体来存储计数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体来存储数字和它的计数
typedef struct {
int num;
int count;
} CountPair;
// 函数来统计数组中每个数字的出现次数
void count_numbers(int arr[], int size) {
// 初始化一个大小等于数组最大值+1的计数数组
CountPair* counts = (CountPair*)malloc((arr[size - 1] + 1) * sizeof(CountPair));
for (int i = 0; i <= arr[size - 1]; i++) {
counts[i].count = 0;
}
// 遍历数组并更新计数
for (int i = 0; i < size; i++) {
counts[arr[i]].count++;
}
// 输出结果
for (int i = 0; i <= arr[size - 1]; i++) {
if (counts[i].count > 0) {
printf("数字 %d 出现了 %d 次\n", i, counts[i].count);
}
}
// 释放内存
free(counts);
}
int main() {
int array[] = {1, 2, 3, 4, 2, 3, 5, 6, 1, 1};
int size = sizeof(array) / sizeof(array[0]);
count_numbers(array, size);
return 0;
}
```
在这个例子中,我们首先创建一个与数组元素范围相同的计数结构体数组,然后遍历输入数组,每次遇到一个数字就在对应的计数上加一。最后,我们打印出每个数字及其出现次数。
阅读全文