数字转成汉字形式 看了其他博客的写法,多多少少有问题 问题1、10001000  应该是 一千万零一千   有的博客错误的显示为 一千零万一千 问题2、10000000  应该是 一千万  有的博客错误的显示 一千万零零 问题3、100000 应该是 十万  有的博客错误的显示 一十万 问题4、100000000  应该是一亿 有的博客错误的显示 一亿万  
题目描述
做法:
 
#include<bits/stdc++.h> using namespace std; typedef long long ll; vector<string> translateToUpper(ll num) {  string upper[]={"零","一","二","三","四","五","六","七","八","九" };  string up[] = {"","十","百","千","万","十","百","千","亿","十","百","千"};   vector<int> nums;  while (num>0)  {   nums.push_back(num%10);   num = num / 10;  }    vector<string> result;   int hasnum=0;  for (int i=nums.size()-1;i>=0;--i)  {       if(nums[i]==0){       int id=-1;             while (i>=0 && nums[i]==0)//跳过连续的0             {                 if(i%4==0&&id==-1) id=i;//记录第一个 万 或者 亿                 --i;             }             //printf("i:%d id::%dn",i,id);              if(id!=-1) {//特判解决博客的问题1和问题2的零的顺序问题                 if(hasnum) result.push_back(up[id]);//防止出现问题4一万亿情况                 if(i>=0) result.push_back(upper[0]);             }             else result.push_back(upper[0]);             ++i;      }      else{       result.push_back(upper[nums[i]]);       result.push_back(up[i]);        if(i%4==0) hasnum=0;//每四位更新一下  hasnum 是否添加亿或者万       else hasnum=1;      }  }  if(result[0]=="一"&&result[1]=="十"){//特判防止博客中的问题3   vector<string> ans;   for(int i=1;i<result.size();++i) ans.push_back(result[i]);   return ans;  }  else return result; } int main() {  while(1)  {   ll x;   scanf("%lld",&x);   vector<string> ans=translateToUpper(x);   for(auto v:ans) cout<<v;   puts("");  } } /* 1200 0112 3001  10021111  10111111  101111  10001111 10000000 100000000 100010001 100000100 100100100 */ 
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)