私信TA

用户名:2950870451

访问量:25678

签 名:

等  级
排  名 197
经  验 6587
参赛次数 0
文章发表 77
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路: 这题用这个残缺不全的代码能AC我都不敢相信自己的眼睛QWQ

注意事项:

参考代码:

#include <stdio.h>

char s[12][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu","shi"};
long long temp;
void f(long long n,long long m,int k){
 if(n == 0){
  if(k == 11) //十亿位 
   printf("shi ");
  return;
 }
 else{
  f(n/10,m*10,k+1);
  if(k == 9){ //亿位 
   if(n%10 != 0)
    printf("%s yi ", s[n%10]);
  }
  if(k == 8){ //千万位 
   if(n%10 != 0) 
    printf("%s qian ", s[n%10]);
  }
  if(k == 7){ //百万位 
   if(n%10 != 0)
    printf("%s bai ", s[n%10]); 
  }
  if(k == 6){ //十万位
   if(n%10 == 1)
    printf("shi ");
   else if(n%10 != 0) 
    printf("%s shi ", s[n%10]);
   else if(n%10 == 0)
    printf("ling ");
  }
  if(k == 5){ //万位
   if(n%10 != 0) 
    printf("%s wan ", s[n%10]);
   else if(temp%10 != 0 && temp/10%10 != 0 && temp/100%10 == 0 && temp/1000%10 == 0 && temp/10000%10 == 0)
    printf("wan ling ");
   else if(n%10 == 0)
    printf("wan ");
  }
  if(k == 4){ //千位 
   if(n%10 != 0) 
    printf("%s qian ", s[n%10]);
   else if(temp%10 != 0 && temp/10%10 != 0 && temp/100%10 == 0 && temp/1000%10 == 0 && temp/10000%10 != 0)
    printf("ling ");
   else if(temp%10 == 0 && temp/10%10 == 0 && temp/100%10 != 0 && temp/1000%10 == 0 && temp/10000%10 != 0)
    printf("ling ");
  }
  if(k == 3){ //百位 
   if(n%10 != 0)
    printf("%s bai ", s[n%10]);
   else if(temp%10 != 0 && temp/10%10 != 0 && temp/100%10 == 0 && temp/1000%10 != 0)
    printf("ling ");
   else if(temp%10 == 0 && temp/10%10 != 0 && temp/100%10 == 0 && temp/1000%10 != 0)
    printf("ling ");
  }
  if(k == 2){ //十位 
   if(temp%10 == 0 && temp/10%10 != 0 && temp/100%10 == 0 && temp/1000%10 != 0)
    printf("%s shi", s[n%10]);
   else if(temp%10 == 0 && temp/10%10 != 0 && temp/100%10 != 0)
    printf("%s shi ", s[n%10]);
   else if(temp%10 != 0 && temp/10%10 != 0 && temp/100%10 != 0)
    printf("%s shi ", s[n%10]);
   else if(temp%10 == 0 && temp/10%10 == 1)
    printf("shi ");
   else if(temp%10 == 0 && temp/10%10 >= 2)
    printf("%s shi ", s[n%10]);
   else if(temp%10 != 0 && temp/10%10 == 1)
    printf("shi ");
   else if(temp%10 != 0 && temp/10%10 >= 2)
    printf("%s shi ", s[n%10]);
   else if(temp%10 != 0 && temp/10%10 == 0)
    printf("ling ");
  }
  if(k == 1){ //个位 
   if(n%10 != 0)
    printf("%s ", s[n%10]); 
  }
 }
}
int main(){
 long long n;
 
 scanf("%lld", &n);
 temp = n;
 f(n,1,1);
 
 return 0;
}


 

0.0分

14 人评分

  评论区

代码还有很多问题QWQ,比如1000001应输出yi bai wan ling yi 而我的是输出yi bai ling wan ling yi。可不知道为啥就AC了,懵
2019-01-30 19:46:24
  • «
  • 1
  • »