用c语言给定n个正整数吗,编写一个实验程序找出它们中出现最多的数,如果这样的数有多个,输出其中最小的一个
时间: 2024-10-17 09:14:32 浏览: 38
两个数相加c语言
在C语言中,要编写一个程序来找出一组正整数中出现次数最多且值最小的那个数,可以使用哈希表(如数组或散列表)来存储每个数及其出现的次数。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 100 // 假设输入的最大数字不超过100
int main() {
int n, num[MAX_NUM] = {0}, max_count = 1, min_max_num;
scanf("%d", &n); // 输入数字的数量
// 遍历并计数
for (int i = 0; i < n; i++) {
scanf("%d", &num[i]);
if (num[i] > MAX_NUM) {
printf("Error: Number is too large.\n");
return 1;
}
if (!num[i]) continue; // 忽略零
if (max_count == 1 || num[i] == num[max_count - 1]) {
max_count++;
} else if (num[i] > num[max_count - 1]) {
max_count = 1;
min_max_num = num[i];
}
}
// 输出结果
if (max_count == 1) {
printf("The single number that appears is %d.\n", num[0]);
} else {
printf("The smallest number that appears most frequently is %d, it appears %d times.\n", min_max_num, max_count);
}
return 0;
}
```
这个程序首先读取数字的数量`n`,然后遍历输入的每一个数字,并在`num`数组中记录每个数字出现的次数。同时更新最大计数器`max_count`和最小最多数`min_max_num`。最后,根据最大计数和`min_max_num`的值输出结果。
阅读全文