题解 | #学英语#

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

英语成为了最大的BUG 改了好多次单词拼写。。。
#include <stdio.h>
#include <stdlib.h>
    char biao1[][20]={"","one","two","three","four","five","six","seven","eight","nine",\
        "ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",\
        "eighteen","nineteen"};
    char biao2[][20]={"","","twenty","thirty","forty","fifty","sixty","seventy","eighty",\
        "ninety"};
    char biao3[][20]={"billion","million","thousand","hundred","and"};
void shuchu(int outcnt,char** output)
{
    for(int i=0;i<outcnt;i++)
        printf("%s ",output[i]);
}
void small1000(int weishu,char* place)
{   
    int outcnt=0;
    char * output[10];
    if(weishu==3)
    {
        output[outcnt++]=biao1[place[weishu-1]];
        output[outcnt++]=biao3[3];
        shuchu(outcnt,output);
    if(place[1] || place[0])
        printf("and ");
        else
        {   
            //shuchu(outcnt,output);
            return;
        }
        outcnt=0;
      if (place[1]>1)
      {
          output[outcnt++]=biao2[place[1]];
          if (place[0])
          {
              output[outcnt++]=biao1[place[0]];
          }
      }
        else
        {
            output[outcnt++]=biao1[place[1]*10+place[0]];
        }
        shuchu(outcnt,output);
        return ;
    }
    else if(weishu==2)
    {
        if (place[1]>1)
      {
          output[outcnt++]=biao2[place[1]];
          if (place[0])
          {
              output[outcnt++]=biao1[place[0]];
          }
      }
        else
        {
            output[outcnt++]=biao1[place[1]*10+place[0]];
        }
        shuchu(outcnt,output);
        return ;
    }
    else
    {
      printf("%s ",biao1[place[0]]);
    }
}
int main()
{
    long int x=0;
    scanf("%d",&x);
    int temp=0;
    int dc=0;
    char* output[50]={0};
    char place[10]={0};
    int weishu=0;
    int outcnt=0;
   while(x)
   {
       place[weishu++]=x%10;
       x=x/10;           
   }
    if(weishu==7)
    {
        output[outcnt++]=biao1[place[weishu-1]];
        output[outcnt++]=biao3[1];
        for (int i=5;i>=0;i--)
        {
            if (place[i])
            {
                weishu=i+1;
                break;
            }
            
        }
        if (weishu==7)
        {
            //后面全是0
            shuchu(outcnt,output);
            return 0;
        }
       shuchu(outcnt,output);
    outcnt=0;
    }

    if(weishu>3 && weishu<7)
    {
        small1000(weishu-3, place+3);
        printf("thousand ");
        temp=weishu;
        for (int i=2;i>=0;i--)
        {
            if (place[i])
            {
                weishu=i+1;
  //              printf("and ");
            break;
            }
        }
        if (temp==weishu)
        {
           
            return 0;
        }
    }
    small1000(weishu,place);
    
    
}


全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务