一,题目
写一个函数,它的原形是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; } 输出: