用C语言写出以下程序,要求是,询问用户输入几个非负的二位整数,然后对个位和十位出现的数字就行记忆,最后输出出现最多次数的数字,并输出出现次数
时间: 2024-10-13 16:09:03 浏览: 28
在C语言中,你可以编写如下的程序来实现这个功能。该程序首先接收用户的输入,然后计算每个数字出现的频率,最后找到出现最多的数字及其出现次数。
```c
#include <stdio.h>
#include <stdlib.h> // 使用malloc分配内存
#define MAX_DIGITS 100 // 可能的最大输入个数
#define MEMORY_CAPACITY 10 // 记忆数组大小,假设最多两个数字出现次数一样多
typedef struct {
int digit;
int count;
} DigitMemory;
// 函数用于初始化记忆数组
void initialize_memory(DigitMemory memory[]) {
for (int i = 0; i < MEMORY_CAPACITY; i++) {
memory[i].digit = 0;
memory[i].count = 0;
}
}
// 函数用于更新记忆数组
void update_memory(DigitMemory memory[], int num) {
int last_digit = num % 10; // 获取个位数
memory[last_digit].count++; // 更新个位数计数
last_digit = num / 10; // 向左移一位获取十位数
memory[last_digit].count++; // 更新十位数计数
}
// 找到出现次数最多的数字
int find_most_frequent_digit(DigitMemory memory[]) {
int max_count = 0, most_frequent_digit = -1;
for (int i = 0; i < MEMORY_CAPACITY; i++) {
if (memory[i].count > max_count) {
max_count = memory[i].count;
most_frequent_digit = i;
}
}
return most_frequent_digit;
}
int main() {
int num_of_digits;
printf("Enter the number of two-digit non-negative integers: ");
scanf("%d", &num_of_digits);
// 确保输入合理
if (num_of_digits > MAX_DIGITS) {
printf("Too many inputs! Limit is %d.\n", MAX_DIGITS);
return 1;
}
DigitMemory memory[MEMORY_CAPACITY]; // 创建记忆数组
initialize_memory(memory);
for (int i = 0; i < num_of_digits; i++) {
int input;
scanf("%d", &input); // 接收用户输入
update_memory(memory, input);
}
int most_common_digit = find_most_frequent_digit(memory);
printf("The digit(s) that appear most frequently is (%d) with a count of %d.\n",
most_common_digit, memory[most_common_digit].count);
return 0;
}
```
阅读全文