题目:
将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例1
输入
Jkdi234klowe90a3
输出
Jkdi*234*klowe*90*a*3*
代码:
#include <cstdio> #include <cstring> /* 主要是对特殊情况的处理,比如: 1.第一个或最后一个为数字的情况 2.只有一个数字,周边都是字母的情况 而采用标记的方式,则很好的之后了数字的位置,以及数字周边的情况 */ int main(){ int i, cnt[107]; char s[105]; while(scanf("%s", s) != EOF){ memset(cnt, 0, sizeof(cnt)); for(i=0; i<strlen(s); i++){ if(s[i]>='0' && s[i]<='9') cnt[i]=1; } if(s[0]>='0' && s[0]<='9') printf("*"); for(i=0; i<strlen(s); i++){ if(i>0 && cnt[i]-cnt[i-1]==1){ printf("*%c", s[i]); if(i+1<strlen(s) && cnt[i]-cnt[i+1]==1) printf("*"); }else if(i+1<strlen(s) && cnt[i]-cnt[i+1]==1) printf("%c*", s[i]); else printf("%c", s[i]); } if(s[strlen(s)-1]>='0' && s[strlen(s)-1]<='9') printf("*"); printf(" "); } return 0; }