用c语言编程:输入一些数值,求出现的次数最多的数。如果有多个并列,则从大到小输出。
时间: 2024-03-07 08:48:05 浏览: 16
好的,以下是用C语言编写的代码:
```c
#include <stdio.h>
#define MAX_N 1000 // 假设数值不超过1000个
#define MAX_NUM 10000 // 假设每个数不超过10000
typedef struct {
int num; // 数值
int count; // 出现次数
} NumCount;
int main() {
int n, i, j;
int nums[MAX_N];
NumCount num_counts[MAX_NUM] = {0}; // 初始化为0
// 输入数值
printf("请输入数值的个数:");
scanf("%d", &n);
printf("请输入数值:");
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
// 统计每个数出现的次数
for (i = 0; i < n; i++) {
num_counts[nums[i]].num = nums[i];
num_counts[nums[i]].count++;
}
// 找到出现次数最多的数
int max_count = 0;
for (i = 0; i < MAX_NUM; i++) {
if (num_counts[i].count > max_count) {
max_count = num_counts[i].count;
}
}
// 输出出现次数最多的数(从大到小)
printf("出现次数最多的数为:");
for (i = MAX_NUM - 1; i >= 0; i--) {
if (num_counts[i].count == max_count) {
printf("%d ", num_counts[i].num);
}
}
printf("(出现次数为%d次)\n", max_count);
return 0;
}
```
代码思路如下:
1. 先输入数值,并用数组存储起来。
2. 然后遍历数组,用一个结构体数组统计每个数出现的次数。
3. 再遍历结构体数组,找到出现次数最多的数。
4. 最后再次遍历结构体数组,输出出现次数最多的数(从大到小)及其出现次数。
需要注意的是,为了方便,假设数值不超过1000个,每个数不超过10000。如果不满足这个条件,则需要根据实际情况修改代码。