题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
#include <ctype.h>
#include <stdio.h>
int main()
{
int a,b,len;
char str1[300]={'\0'};
char str2[300]={'\0'};
gets(str1);
b=0;
len=strlen(str1);
if(isdigit(str1[0]))//首个字母或其他的情况
{
str2[0]='*';
str2[1]=str1[0];
b=2;
}
else {
str2[0]=str1[0];
b=1;
}
for(a=1;a<len;a++)
{
if(isupper(str1[a])||islower(str1[a])||ispunct(str1[a])) //非数字情况
{
if(isdigit(str1[a-1]))
{
str2[b]='*';
b++;
str2[b]=str1[a];
b++;
}
else
{
str2[b]=str1[a];
b++;
}
}
else if(isdigit(str1[a])) //数字情况
{
if(isdigit(str1[a-1]))
{
str2[b]=str1[a];
b++;
}
else
{
str2[b]='*';
b++;
str2[b]=str1[a];
b++;
}
}
else
{
str2[b]=str1[a];
b++;
}
if(isdigit(str1[len-1]))//末尾字母或者其他的情况,isdigit不能直接用于==判断
{
str2[b]='*';
}
}
puts(str2);
return 0;
}