题目描述:
将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变
#include<iostream>
#include<string>
using namespace std;
static string MarkNum(string pInStr);
int main()
{
char *str;
str = new char[128];
cin.get(str, 128, '\n');
if (strlen(str)<1)
{
cout << "" << endl;
return -1;
}
cout << MarkNum(str) << endl;
delete[] str;
return 0;
}
static string MarkNum(string pInStr)
{
///////////表示数字//////////////////////
char tem[128] = { 0 };
int i, j, len, con = 0, temp = 0;
len = pInStr.size();
if (len<1)
return "";
for (i = 0; i<len; i++)
{
if (pInStr[i] <= '9'&&pInStr[i] >= '0')
{
if (temp == 0)//temp=0表示还在数字串的开始,此刻要加符号
tem[con++] = '*';
tem[con++] = pInStr[i];
if (pInStr[i + 1]>'9' || pInStr[i + 1]<'0')//不是数字的时候,说明到了数字串末尾
tem[con++] = '*';
else
temp++;
}
else//非数字串的时候直接输出,不需要处理
{
temp = 0;
tem[con++] = pInStr[i];
}
}
return tem;
}