题解 | #表示数字#

表示数字

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

全部评论

相关推荐

沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务