题解 | #表示数字#

表示数字

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;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务