• 阿拉伯数字转中文大写


    代码如下:

    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<sstream>
    #include<map>
    #include<stack>
    using namespace std;
    
    string Converttochinese(string& a,vector<string>&p,vector<string>&q,map<char,string>&ma){
    	string res_right="";
    	stack<string>res_left;
    	string res="";
    	int pos=a.find('.');
    	string left="";
    	string right="";
    	cout<<"pos:"<<pos<<endl;
    	if(pos>=0){
    	left = a.substr(0,pos-0);
    	right=a.substr(pos+1,a.size()-pos-1);
    	}
    	else{
    	    left=a;
    	}
    
        res_left.push("元");
    	for(int i=left.size()-1;i>=0;i--){
    	if(i==int(left.size())-1){
    		if(left[i]=='0'&&i<left.size()-1&&left[i+1]!='0')
    		{	     
    			res_left.push(ma[left[i]]);
    		}
    		else if(left[i]!='0'){
    			res_left.push(ma[left[i]]);
    		}   
    	}//if
    	else{
    	if(left[i]=='0'&&i<left.size()-1&&left[i+1]!='0')
    	{	     
    		res_left.push(ma[left[i]]);
    	}
    	else if(left[i]!='0'){
    		res_left.push(p[(left.size()-i-2)%8]);
    		res_left.push(ma[left[i]]);
    	}
        else if(p[(left.size()-i-2)%8]=="万"&&(i+4>=left.size()||left[i+4]=='0')){
    		res_left.push("万");
    	}
    	}//else
    
    	}//for
    	
    	
    	
    	while(!res_left.empty()){
    		res +=res_left.top();
    		res_left.pop();
    	}
    	cout<<"res:"<<res<<endl;
    	for(int i=0;i<right.size();i++){
    		if(i<=1){
    		if(res.back()!='0')
    		   res+=ma[right[i]];
          	if(right[i]!='0')
          	{
          	    res+=q[i];
    		}
    		}
    	  }
    		  
        if(right.size()==0){
    		res = res+"整";
    		return res; 
    	}
    	cout<<"res:"<<res<<endl;
    	return res;
    }
    int main(){
    	string tmp;
    	vector<string>p{"拾","佰","仟","万","拾","佰","仟","亿"};
    	vector<string>q{"角","分"};
    	map<char,string>ma;
    	ma['0']="零";
    	ma['1']="壹";
    	ma['2']="贰";
    	ma['3']="叁";
    	ma['4']="肆";
    	ma['5']="伍";
    	ma['6']="陆";
    	ma['7']="柒";
    	ma['8']="捌";
    	ma['9']="玖";
    	vector<string>arr;
    	while(cin>>tmp){
    		if(tmp=="]"){
    			break;
    		}
    		if(tmp!="["){
    			arr.push_back(tmp);
    		}
    	}
    	cout<<"please wait:"<<endl;
    	for(int i=0;i<arr.size();i++){
    		arr[i]=Converttochinese(arr[i],p,q,ma);
    	}
    }
  • 相关阅读:
    ES6学习之数组扩展
    js三元表达式
    ES6学习之函数扩展
    TS学习之for..of
    TS学习之Symbol
    Visual Studio编译时报错“函数名:重定义;不同的基类型”
    Windows Visual Studio中修改PostgreSQL代码后调试报错
    Windows安装MySQL5.7.17
    289. Game of Life -- In-place计算游戏的下一个状态
    Swift的 convenience && designated init
  • 原文地址:https://www.cnblogs.com/qiuhaifeng/p/11508529.html
Copyright © 2020-2023  润新知