字符串处理 pat1082

//1082

#include <iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
#include<string.h>
using namespace std;
int flag = 0, flag1 = 0;
//flag用于判断是否开始输出
//flag1用于判断是否已经输出过0了,避免重复 0;
char num[10][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
//用于输出亿以后的万 和最后四位的数量表示
//即x千x百x十x个
void prin(int n){
       if(flag){
              printf(" ");//已经开始输出了,所以加空格
       }
       if(n/1000){          //n>1000
              printf("%s Qian",num[n/1000]);
              flag = 1;
              flag1 = 0;//给后面输出0 做标记,表示可以输出0 , 因为前面的不是0;
              n %= 1000;
              if(n){
                     printf(" ");
              }else{
                     return;
              }
       }else{
              if(flag == 1 && flag1 == 0){//已经开始输出了,但是紧跟着的前面没有输出过0
                     printf("%s ",num[0]);
              }
       }
       if(n/100){           //n> 100
              printf("%s Bai",num[n/100]);
              flag = 1;
              flag1 = 0;
              n %= 100;
              if(n){
                     printf(" ");
              }else{
                     return;
                     }
       }else{
              if(flag == 1 && flag1 == 0){//已经开始输出了,但是紧跟着的前面没有输出过0
                     printf("%s ",num[0]);
                     flag1 = 1;
              }
       }
       if(n/10){
              printf("%s Shi",num[n/10]);
              flag = 1;
              flag1 = 0;
              n%=10;
              if(n){
                     printf(" ");
              }else return;
       }else{
              if(flag == 1 && flag1 == 0){//已经开始输出了,但是紧跟着的前面没有输出过0
                     printf("%s ",num[0]);
                     flag1 = 1;
              }
       }
       if(n){
              printf("%s",num[n]);
              flag = 1;
              flag1 = 0;
              return;
       }
}


int main()
{
       //freopen("1082.txt","r",stdin);
       int n;
       scanf("%d",&n);
       if(n == 0) {//0
              printf("ling");
              return 0;
       }//负数
       if(n < 0){
              printf("Fu ");//记得是大写的F
              //不然会有两个点过不去
              n = -n;
       }//亿
       if(n/100000000){
              printf("%s Yi",num[n/100000000]);
              n %= 100000000;
              flag = 1;
       }//万
       if(n==0) return 0;
       if(n/10000){
              prin(n/10000);
              n %= 10000;
              printf(" Wan");
       }
       if(n==0) return 0;
       prin(n);
    //cout << "Hello world!" << endl;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值