求一批整数中出现最多的数字。输入一个正整数 n (1<n≤1000),再输入 n 个整数,分析每个整数的每一位数字,求出现次数最多的各位数字
例如输入 3 个整数 1234、2345、3456
其中出现次数最多的数字是 3 和 4,均出现了 3 次
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int f[10] = { 0 };
void sum(int* in, int n) {
for (int i = 0; i < n; i++) {
while (in[i] != 0) {
int a = in[i] % 10;
f[a]++;
in[i] /= 10;
}
}
}
void pr(int n) {
int max = f[0];
for (int i = 1; i < 10; i++) {
if (max < f[i]) {
max = f[i];
}
}
for (int i = 0; i < 10; i++) {
if (f[i] == max) {
printf("%d ",i);
}
}
}
int main() {
int n;
scanf("%d", &n);
int* in = malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", &in[i]);
}
sum(in, n);
pr(n);
free(in);
}
即便多个有f[i]同时为max,我分步进行操作,第一次只找出max,第二次才输出符合条件的 i,这样便满足了要求
Comments NOTHING