完成程序,只在Program和End之间增加代码。编写函数subDig(),其函数原型为:void subDig(char * s, int &sPos, int &d); 其中s为给定字符串,其中一定包含有子串”xyz”和刚好一个数字子串,函数计算子串”xyz”最后一次出现的位置并存入sPos,同时计算数字子串代表的正整数的2倍值并存入d(测试数据保证不会溢出)。例如,s为”abc123xyzabcdxyz”,则sPos为13,d为246。 输入格式: 输入在一行中给出一个长度不超过200的字符串。 输出格式: 在一行中输出位置sPos和整数d,中间用空格隔开。 输入样例: abc123xyzabcdxyz 输出样例: 13 246
时间: 2023-07-16 15:16:48 浏览: 121
```python
#include <iostream>
#include <cstring>
using namespace std;
void subDig(char * s, int &sPos, int &d) {
char *p = strstr(s, "xyz"); // 找到最后一次出现子串"xyz"的位置
while (strstr(p + 1, "xyz") != NULL) {
p = strstr(p + 1, "xyz"); // 不断更新最后一次出现子串"xyz"的位置
}
sPos = p - s + 2; // 最后一次出现子串"xyz"的位置
char *q = strstr(s, "123"); // 找到数字子串的位置
while (strstr(q + 1, "123") != NULL) {
q = strstr(q + 1, "123"); // 不断更新数字子串的位置
}
char *t = q;
int num = 0;
while (*t >= '0' && *t <= '9') {
num = num * 10 + (*t - '0'); // 计算数字子串代表的正整数
++t;
}
d = num * 2; // 数字子串代表的正整数的2倍值
}
int main() {
char s[201];
cin >> s;
int sPos, d;
subDig(s, sPos, d);
cout << sPos << " " << d << endl;
return 0;
}
```
阅读全文