我设法编写代码以返回最多出现的数字,但是当多个数字出现的次数相同时,我需要返回具有最低值的数字。
int getFreq(int arg) {
int tmp;
int storage[10] = { 0 };
int maxDigit = -1;
int maxfreq = -1;
tmp = (arg < 0) ? -arg : arg;
do {
storage[tmp % 10]++;
if (storage[tmp % 10] > maxDigit) {
maxDigit = storage[tmp % 10];
maxFreq = tmp % 10;
}
tmp /= 10;
} while (tmp != 0);
return maxFreq;
}
答案 0 :(得分:0)
我修改了你的功能,并将统计收集与其分析分开,以便更容易找到最常见但最低的数字。 6和7都出现两次。 7的括号显示了数字中的6,但函数返回6。
#include <stdio.h>
int getFreq(int arg) {
int tmp;
int storage[10] = { 0 };
int maxFreq = -1;
int digit = 0;
tmp = (arg < 0) ? -arg : arg;
do {
storage[tmp % 10]++;
tmp /= 10;
} while (tmp);
for (tmp=9; tmp>=0; tmp--) {
if (storage[tmp] >= maxFreq) {
digit = tmp;
maxFreq = storage[tmp];
}
}
return digit;
}
int main(void)
{
int val = 17266375;
printf("Most frequent (lowest) from %d = %d\n", val, getFreq(val));
return 0;
}
节目输出:
Most frequent (lowest) from 17266375 = 6