用c语言编写1. 给定n个正整数吗,编写一个实验程序找出它们中出现最多的数,如果这样的数有多个,输出其中最小的一个
时间: 2024-10-17 10:13:49 浏览: 67
c代码-6.3输出10个数的最大值和最小值的大小和下标
要使用 C 语言编写一个实验程序来找出给定 n 个正整数中出现次数最多且值最小的那个数,你可以采用以下步骤:
1. 定义一个结构体 `NumberCount` 来存储每个数字及其计数:
```c
typedef struct {
int num;
int count;
} NumberCount;
```
2. 创建一个函数 `findMostFrequentMin` 来处理这个问题:
```c
NumberCount findMostFrequentMin(int arr[], int n) {
// 初始化计数数组和最大计数、对应的最小数字
int max_count = 0;
NumberCount most_common = {INT_MAX, 0};
for (int i = 0; i < n; i++) {
int current_num = arr[i];
if (most_common.count == 0 || current_num < most_common.num) {
most_common.num = current_num;
}
most_common.count++;
// 更新最大计数,如果当前计数大于之前的最大计数
if (most_common.count > max_count) {
max_count = most_common.count;
most_common.num = current_num;
} else if (most_common.count == max_count && current_num < most_common.num) {
most_common.num = current_num; // 如果有多数相等,选择最小的
}
}
return most_common;
}
```
3. 主函数中获取输入并调用上面定义的函数:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入正整数的数量: ");
scanf("%d", &n);
int arr[n];
printf("请输入 %d 个正整数: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
NumberCount result = findMostFrequentMin(arr, n);
printf("出现次数最多且最小的数是: %d\n", result.num);
return 0;
}
```
当你运行这个程序时,它会提示用户输入正整数的数量和数值,然后输出找到的满足条件的数。
阅读全文