输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。用c语言怎么写
时间: 2024-10-20 16:06:43 浏览: 19
在C语言中,你可以通过使用哈希表(散列表)来解决这个问题。这里是一个简单的示例程序,它会遍历输入数组,同时计算每个元素的出现次数,并存储在哈希表中。最后,从哈希表中找出出现次数最多的元素。
```c
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100 // 假设输入数组最大长度
typedef struct {
int number;
int count;
} Pair;
// 哈希函数,简单地取模SIZE作为键
int hash(int key) {
return key % SIZE;
}
// 动态分配的哈希表
Pair* hash_table[SIZE];
void insert(Pair** table, int num) {
if (*table[hash(num)]) {
(*table[hash(num)]).count++;
} else {
*table[hash(num)] = (Pair){num, 1};
}
}
int findMaxCount(Pair* table) {
int max_count = 0, max_number = -1;
for (int i = 0; i < SIZE; i++) {
if (table[i] && table[i]->count > max_count) {
max_count = table[i]->count;
max_number = table[i]->number;
}
}
return max_number, max_count;
}
int main() {
int numbers[] = {5, 2, 8, 2, 9, 5, 5, 6, 7, 5}; // 示例输入数组
int n = sizeof(numbers) / sizeof(numbers[0]);
// 初始化哈希表
for (int i = 0; i < SIZE; i++) {
hash_table[i] = NULL;
}
// 插入所有数字并计数
for (int i = 0; i < n; i++) {
insert(hash_table, numbers[i]);
}
// 找出出现次数最多的数字
int most_frequent_num, frequency;
most_frequent_num = findMaxCount(hash_table);
printf("出现次数最多的数字是 %d,出现了 %d 次。\n", most_frequent_num, frequency);
return 0;
}
```
阅读全文