描述
将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
数据范围:字符串长度满足 1≤n≤100
输入描述:
输入一个字符串
输出描述:
字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例1
输入:
Jkdi234klowe90a3
输出:
Jkdi*234*klowe*90*a*3*
#include <stdio.h>
#include<string.h>
/*
数字字符可能的情况:
1)第一个字符 为数字 的情况
2)最后一个字符 为数字 的情况
3)数字 前后均为数字
4)数字 前为数字,后为非数字
5)数字 前为非数字,后为数字
*/
int main() {
char str[100];
scanf("%s",str);
int i=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]>='0' && str[i]<='9')
{
//字符串的第一个字符即为数字时
if(i==0) {
printf("*");
printf("%c",str[i]);
if(str[i+1]>='0'&&str[i+1]<='9')
;
else
{
printf("*");
}
}
//最后一个字符是数字时
else if(i==strlen(str)-1)
{
if(str[i-1]>='0'&&str[i-1]<='9')
;
else
{
printf("*");
}
printf("%c",str[i]);
printf("*");
}
else
{
//数字前后均是数字时
if(str[i-1]>='0'&& str[i-1]<='9' && str[i+1]>='0'&&str[i+1]<='9')
{
printf("%c",str[i]);
}
//数字前后不都是数字时
else {
if(str[i+1]>='0'&&str[i+1]<='9') //前面是非数字,后面是数字
{
printf("*");
printf("%c",str[i]);
}
else if(str[i-1]>='0'&& str[i-1]<='9')//前面数字,后面非数字
{
printf("%c",str[i]);
printf("*");
}
else{ //前后均非数字
printf("*");
printf("%c",str[i]);
printf("*");
}
}
}
}
//非数字直接输出
else {
printf("%c",str[i]);
}
}
return 0;
}