编写C语言程序,实现任意输入10 个正整数,求其中互不相同的数的个数num,以及此num 个数中哪一个数的出现次数最多,共出现了几次。不使用哈希表
时间: 2024-12-08 07:22:21 浏览: 14
要实现这个功能,我们可以使用数组和计数器来记录每个数字的出现次数。以下是一个简单的C语言程序,它允许用户输入10个正整数,然后统计其中互不相同的数的数量(`num`)和出现次数最多的数字及其出现次数:
```c
#include <stdio.h>
int main() {
int numbers[10], num_unique = 0, max_count = 0, mode;
int i;
printf("请输入10个正整数:\n");
for (i = 0; i < 10 && scanf("%d", &numbers[i]) == 1; i++) { // 避免未读完输入导致错误
if (i == 0 || numbers[i] != numbers[i - 1]) {
num_unique++;
}
// 更新最大计数和模式
if (max_count < ++numbers[numbers[i]] || (max_count == numbers[numbers[i]] && !mode)) {
max_count = numbers[numbers[i]];
mode = numbers[i];
}
}
printf("互不相同的数有 %d 个。\n", num_unique);
printf("出现次数最多的数字是 %d,出现了 %d 次。\n", mode, max_count);
return 0;
}
```
在这个程序中,我们首先定义了一个大小为10的数组`numbers`用于存储输入的数字。`num_unique`用来计算互不相同的数的数量,而`max_count`则跟踪当前已知的最大出现次数,`mode`用来存储出现次数最多的数字。
程序遍历输入的数字,如果新输入的数字与前一个不同,则`num_unique`加一;同时更新`numbers`数组,增加对应数字的计数。每遇到一个新的数字或该数字已经是最频繁的,就检查是否更新了`max_count`和`mode`。
运行完成后,输出互不相同的数的数量和出现次数最多的数字及其出现次数。
阅读全文