题目详情 (pintia.cn)
#includeint main() { int i=0,j,n; scanf("%d",&n); char a[9]; char b[9]={'n','S','B','Q','W','S','B','Q','Y'}; //位的名称存入数组b if(n==0){ printf("an"); } else{ while(n!=0){ //数字存入数组a a[i]=n%10; n=n/10; i++; } i=i-1; for(;i>=0;i--){ //数组a反向输出 if(a[i]==0){ if(i==4){ //万位为0的情况 if(a[8]!=0 && a[7]+a[6]+a[5]+a[4]==0 ){ //有亿位,且万位均为零 printf("a"); //输出一个零(如100004800) }else{ printf("W"); //否侧万位就输出一个万。 } }else{ if(a[i-1]==0){ //重复0不输出 continue; }else{ // 一般的0就输出零,没有位的名称 printf("a"); } } }else{ printf("%c%c",a[i]+'a',b[i]); } } } return 0; }
总结:
数字存在一个数组,位数名称存在一个数组。由大到小反向输出两个数组。
其他就是对于读数规则的判定。



