首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

统计出现至多数字的个数

2013-03-12 
统计出现最多数字的个数。/*题目描述输入一个长度小于等于256,大于0,且只包含数字的字符串,统计其中出现最

统计出现最多数字的个数。
/*
题目描述
输入一个长度小于等于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 循环最好不要嵌套, 如上仅供参考

热点排行