使用C语言,用范围是1到5的随机数生成器填充一个大小为20的数组,检查数组中是否已经存在一个众数,众数是指在数组中出现次数大于10次的元素。如果没有,继续生成新的随机数组,直到找到一个众数为止。当众数被发现时,打印出整个数组和众数。
时间: 2024-09-15 07:02:42 浏览: 60
C语言在某一个范围内的随机数
首先,我们需要导入所需的头文件并定义一个函数来生成随机数。然后创建一个循环,生成数组、检查是否有众数,直到找到为止。以下是一个简化的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 需要获取当前时间
// 生成1到5之间的随机数
int random_number() {
srand(time(0)); // 初始化随机数种子
return rand() % 5 + 1;
}
// 检查数组是否有众数
int check_mode(int arr[], int size) {
int count[6] = {0}; // 初始化计数器
for (int i = 0; i < size; i++) {
count[arr[i]]++;
}
for (int i = 1; i <= 5; i++) {
if (count[i] > 10) {
return i;
}
}
return -1; // 如果没有众数,则返回-1
}
int main() {
int arr[20];
int found = 0;
while (!found) {
for (int i = 0; i < 20; i++) {
arr[i] = random_number();
}
int mode = check_mode(arr, 20);
if (mode != -1) {
found = 1;
printf("Array: ");
for (int i = 0; i < 20; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("Mode: %d\n", mode);
} else {
printf("No majority number found yet, generating new array...\n");
}
}
return 0;
}
```
注意:这个程序可能会无限循环,因为在生成新数组之前我们并没有停止检查。在实际情况中,你可能需要添加一些限制条件来控制循环次数。
阅读全文