描述 | 题目标题: 将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变 详细描述: 接口说明 int MarkNum(char *pInStr, char *pOutStr) 输入参数: char *pInStr 输入的字符串 输出参数: char *pOutStr 输出的字符串 返回值: int 0:处理成功 -1:出现异常 限制: 无
|
---|---|
知识点 | 字符串,循环,数组 |
题目来源 | 内部整理 |
练习阶段 | 初级 |
运行时间限制 | 10Sec |
内存限制 | 128MByte |
输入 | 输入一串字符 |
输出 | 输出一串处理过的字符 |
样例输入 | asdf123asdfe4 |
样例输出 | asdf*123*asdfe*4* |
#include <iostream>
using namespace std;
int MarkNum(char *pInstr,char *pOutStr);
int isnum(char c);
void newstr(char *str);
int main()
{
char str[100];
char outstr[200];
gets(str);
MarkNum(str,outstr);
cout<<outstr;
return 0;
}
int MarkNum(char pInStr[],char pOutStr[])
{
if(pInStr[0] == '\0')
return -1;
int len = strlen(pInStr);
int i=0,j=0;
for(i=0;i<len;i++,j++)
{
if(isnum(pInStr[i]))
{
pOutStr[j]='*';
j++;
pOutStr[j]=pInStr[i];
while(isnum(pInStr[i+1]))
{
i++;
j++;
pOutStr[j]=pInStr[i];
}
j++;
i++;
pOutStr[j]='*';
j++;
}
pOutStr[j]=pInStr[i];
}
return 0;
}
int isnum(char c)
{
if(c>='0'&&c<='9')
return 1;
return 0;
}