请完成函数subDig(),函数原型如下:
void subDig(char *s, int &sPos, int &d);
s为给定字符串,其中一定包含有子串"xyz"和刚好一个数字子串,函数计算子串"xyz"最后一次出现的位置并存入sPos,
同时计算数字子串代表的正整数的2倍值并存入d(测试数据保证不会溢出)。
例如,s为"abc123xyzabcdxyz",则sPos为13,d为246。
样例输出: 13 246
#include <iostream>
#include <cstring>
#include <sstream>
#include<cmath>
using namespace std;
int main()
{
string s="abc123xyzabcdxyz";
char sa[]="abc123xyzabcdxyz";
int p,flag,d,c1,c2,c3,fn,fn2;
for(int i=0;;i++)
{
if('0'<=s[i]&&s[i]<='9')
{
if(flag==0)
{
c1=i;
flag=1;
}
c2++;
}
if(s[i]=='\0')
{
break;
}
}
int l=strlen(sa);
for(int j=l-1;j>1;j--)
{
if((s[j]=='z')&&(s[j-1]=='y')&&(s[j-2]=='x'))
{
c3=j-2;
break;
}
}
cout<<c3<<" ";
string si;
si=s.substr(c1,c2);
stringstream ss;
ss << si;
ss >> fn;
cout<<2*fn;
}
本文介绍了一个C++函数subDig(),用于计算给定字符串中特定子串xyz的最后一次出现位置,并将紧随其后的数字子串代表的正整数的两倍值返回。通过遍历字符串和使用字符串流进行数值转换实现。
1293

被折叠的 条评论
为什么被折叠?



