统计出现最多数字的个数。
/*
题目描述
输入一个长度小于等于256,大于0,且只包含数字的字符串,
统计其中出现最多数字的个数。
若有多个数字的个数并列最多,取最先出现的数字。
输出该数字及个数做成的字符串,格式:"数字+逗号+个数"。
输入
输入一个长度小于等于256,大于0,且只包含数字的字符串
输出
输出该数字及个数做成的字符串,格式:"数字+逗号+个数"。注意逗号为英文半角
样例输入
463618964
样例输出
6,3*/
我写的程序:
#include <iostream>
using namespace std;
void func(char str[]);
int main()
{
char str[256];
cin>>str;
func(str);
return 0;
}
void func(char str[])
{
short length=strlen(str);
short num[10]={0};
short temp=0;
short xiabiao=0;
for (int i=0;i<length;i++)
{
num[str[i]-48]++;
for (int n=0;n<10;n++)
{
if (temp<num[n])
{
temp=num[n];
xiabiao=n;
}
}
}
cout<<xiabiao<<","<<temp;
}
提交后,说答案75%错误,不知道哪里错了。求指教!
[解决办法]
“若有多个数字的个数并列最多,取最先出现的数字”
这条不符合啊
你的
for (int n=0;n<10;n++) 这里面找出来的是“并列最多,数字值最小的”。。。
[解决办法]
//统计个数
for (int i=0;i<length;i++)
{
num[str[i]-48]++;
}
//选择最多,最先出现的
for (int n=0;n<10;n++)
{
if (temp<num[n])
{temp=num[n];xiabiao=n;}
}
//输出
cout<<xiabiao<<","<<temp;
}
[解决办法]
应该剩下的25% 是 -------> 错误:‘strlen’在此作用域中尚未声明
请#include <cstring>
顺带一提,
for ( int i = 0; i < strlen( str ); i++ )
{
num[ str[i]-48 ]++;
}
for ( int n=0; n < 10; n++ )
{
if ( temp < num[ n ] )
{
temp = num[ n ];
xiabiao = n;
}
}
你这段代码中for 循环最好不要嵌套, 如上仅供参考