本文主要介绍一种从字符串中提取数字串并运算的方法题目如下
请完成函数subDig(),函数原型如下:
voidsubDig(char *s, int &sPos, int &d);
s为给定字符串,其中一定包含有子串"xyz"和刚好一个数字
子串,函数计算子串"xyz"最后一次出现的位置并存入sPos,
同时计算数字子串代表的正整数的2倍值并存入d(测试数据
保证不会溢出)。
例如,s为"abc123xyzabcdxyz",则sPos为13,d为246。
关于子串最后一次出现的位置我们可以用倒序查找的方式找到,而对于找出数字串并运算我们可以用以下方法
#include <iostream>
#include <fstream>
using namespace std;
void subDig(char* s, int& sPos, int& d);
/**********Program**********/
void subDig(char* s, int& sPos, int& d) {
d = 0;
int l = strlen(s);
for (int i = l; i >= 0; i--) {
if (s[i] = 'z' && s[i - 1] == 'y' && s[i - 2] == 'x') {
sPos = i - 2;
break;
}
}
for (int i = 0; s[i]; i++)
{
if (s[i] < '0' || s[i]>'9') continue;//如果不满足数字直接跳过
while (s[i] >= '0' && s[i] <= '9')
{
d = d * 10 + s[i] - '0';
i++;
}
d *= 2;
return;
}
}
/********** End **********/
int main()
{
char s[] = "abc123xyzabcdxyz";
int p, d;
subDig(s, p, d);
cout << p << " " << d << endl;
system("pause"); //
return 0;
}
希望有所帮助,欢迎指正。