1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | /* 不用任何库函数,系统函数, 完成函数 int maxContinuNum(const char* inputstr,char *outputstr); 返回给定字符串中最长连续数字串,让outputstr指向该串,然后值是其长度。 例如sss12345ss1245sfdf123456789返回,9,outputstr指向123456789。 */ #include <iostream> using namespace std; int maxContunuNum( const char * inputstr, char *outputstr) { char *p=( char *)inputstr; int max=0,num=0; bool set= false ; char *start; while (*p!= '\0' ) { if ((*p>= '0' )&&(*p<= '9' )) { if (set== false ) start=p; //连续数字中只标记第一个数字的地址 num++; //记录数出现的次数 set= true ; } else { if (num>max) //如果前面的一串数字是最长的 { outputstr=start; //则把地址赋给outputstr max=num; //并记下最长的数字串的个数 } set= false ; //为下一轮连续数字做准备 num=0; } p++; } if (num>max) { //防止最后一个字符是数字导致没有判断num>max outputstr=start;max=num; } cout<< "最长的数字串为:" <<endl; for ( int i=0;i<max;i++) //输出最长的数字串 cout<<*(outputstr+i); cout<<endl; return max; } int main() { char *p= "sss12345ss1234sdfaf123456789asfdfs12345678901231a" ; char out[100]; cout<< "最长连续数字个数为" <<maxContunuNum(p,out)<<endl; return 0; } |