在c++中如何在字符串中找最大的数字,字符串个数小于256,字符串中有字母,数字,空格

如题所述

字符串每一个字符都代表了一个叫ASC什么码的 也就是直接获取字符串的字符,相同的字符都等于一个数字的值,通过这很容易判断是否是数字还是其他什么符号。
然后你得想你到底是取单个最大的数字还是最大的一串数,单个的比较简单,就说一串数吧。
你得准备2个变量来存储数,1个变量为最大数,记做max,另一个记做num。
然后读取字符串,当发现数字时,变将num×10+该数字,当发现不是数字时,如果num为0,不执行任何操作,当num不为0,判断num和max的大小,大的赋值给max,同时num设为0.这样就能得到最大数字了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-11
不知你要从字符串中找单个数字,还是多位的数?如:
字符串:"abc259ef",你是希望找出'9'呢还是找出259?
如果要找出单个数字,那简单:假设字符串在str中
char str[256];
char c_val;
int i;
c_val = '0';
for(i=0;i<256;i++)
{
if (str[i] > c_val)
c_val = str[i];
}
c_val就是结果;

如果要找出多位数,则如下,(写个大概代码)
char str[256];
int i_result,i_temp;
int i;
i_result = 0;
i_temp = 0;
for(i=0;i<256;i++)
{
if (str[i] >='0' && str[i]<='9')
{
i_temp = i_temp*10 + (str[i] - '0');
}
else
{
if (i_temp > i_result)
i_result = i_temp;
i_temp = 0;
}
if (i_temp > i_result)
i_result = i_temp;
}
i_result就是结果本回答被提问者采纳
第2个回答  2011-02-11
我能帮助你的就是思路:
准备工作:一个含有数字的字符串、一个用于存放从字符串中筛选出来的数字的数组;
1、从字符串中挑选出来所有的数字,并把这些数字赋值给准备好的数组;
2、对数组中的数字进行比较筛选出最大的数字就是你所需要的。
另外写程序给你点建议,不要仅限于追求具体的代码;因为不同的人做一件事的思路是不一样的。结果得到的是一样的,不如发挥自己的创造力!希望能帮到你!
第3个回答  2011-02-21
不知这样行不?
求单数。(PS:感觉2楼的求单数有问题,但串数是正确的。 3楼也提供了另一种求串数的方法,可以解题。)
void fun(char * str)
{
char * ptr ;
for(int k='9'; k>='0'; k--)
{
* ptr = str;
while( *ptr++ != NULL)
if ( * ptr == k ) break; // 在字符串中找从9到0的数,当找到比如8时就立即跳出
}
printf{"% d", k};
}
第4个回答  2011-02-11
把所有字符串转成数字后排序
你还是据点例子上来 字符串什么样子 数字在什么位置
要不人怎么回答你
相似回答