一,题目
写一个函数,它的原形是int
continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串赋给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
二,分析
主要是测验字符指针的处理功底。
思想:对整个字符串进行截取统计,最后得出最长的数字字符串
三,源码
这个相对比较简单,思路不用多说,跟在序列中求最小值差不多。未经测试。有错误欢迎指出。
#include <iostream>
using namespace std;
int continumax(char *outputstr, char *intputstr)
{
int i, maxlen = 0;
char * maxstr = 0;
bool a=true;
while (a)
{
while (intputstr &&(*intputstr<'0' || *intputstr>'9')) //skip all non-digitcharacters
{
intputstr++;
if(*intputstr =='\0')
{
a=false;
break;
}
}
int count = 0;
char * tempstr = intputstr;
while (intputstr &&(*intputstr>='0' && *intputstr<='9')) //OK, these characters are digits
{
count++;
intputstr++;
if(*intputstr =='\0')
{
a=false;
break;
}
}
if (count > maxlen)
{
maxlen =count;
maxstr =tempstr;
}
}
for (i=0; i<maxlen;i++)
{
outputstr[i] = maxstr[i];
}
outputstr[i] = '\0';
cout<<"outputstr: "<<outputstr<<endl;
return maxlen;
}
int main()
{
char *intputstr="abcd12345ed125ss123456789";
char *outputstr=new char[100]; ;
cout<<"cout:"<<continumax(outputstr, intputstr)<<endl;
return 0;
}
输出: