这是我到目前为止的代码:
#include <iostream>
#define MAX(X,Y) ((X) > (Y) ? (X):(Y))
int frequency(int n);
int main()
{
int x;
std::cout << "Please enter a sequence of numbers."
<< std::endl;
std::cin >> x;
std::cout << "The max frequency of " << x << " is "
<< frequency(x)
<< std::endl;
return 0;
}
int frequency(int n)
{
int A[10] = {0}, rem;
while (n != 0)
{
int rem = (n % 10);
A[rem] += 1;
n = (n / 10);
std::cout << rem << '\t' << n
<< std::endl;
}
//MAX(A[rem], n);
}
如何修改它以便打印出用户指定的整数中出现次数最多的数字?
答案 0 :(得分:1)
只需跟踪循环中的最大值:
int A[10] = {};
int max = 0;
while (n != 0)
{
int rem = n % 10;
++A[rem];
n /= 10;
if( max == rem or A[max] > A[rem] )
continue;
if( A[rem] > A[max] or rem > max )
max = rem;
}
return max;
请注意,您与数组一起创建另一个rem
,因为您不使用它,最好将其删除。
注2:没有错:
A[rem] += 1;
n = ( n / 10 );
它可以在C ++中很快表达出来,如我的代码所示。