题目
代码
这个是我刷题写的最长的代码了,无参考自己手打 = =
#include<iostream>
#include<string>
using namespace std;
string INT2RMB(int num){
string str;
if(num == 0){
return "零";
}
int num_qian = num / 1000;
int num_bai = (num % 1000) / 100;
int num_shi = (num % 100) / 10;
int num_ge = (num % 10 );
string check[13] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟"};
if(num_qian){
str += check[num_qian];
str += check[12];
}
if(num_bai){
str += check[num_bai];
str += check[11];
}else{
if(num_qian!=0 && num_shi!=0){
str += check[0];
}
}
if(num_shi){
if(!(num_qian == 0 && num_bai == 0 && num_shi == 1)){
str += check[num_shi];
}
str += check[10];
}else{
if((num_qian!=0 || num_bai!=0) && num_ge!=0){
str += check[0];
}
}
if(num_ge){
str += check[num_ge];
}
return str;
}
int main(){
double cash;
while(cin>>cash){
string out_str = "人民币";
int flag_yi = 0;
int flag_wan = 0;
int flag_yuan = 0;
int num_yi,num_wan,num_yuan;
string getRMB[13] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟"};
double num_xiaoshu = cash - int(cash);
num_xiaoshu = (num_xiaoshu *100.0 +0.5)/100.0;
int INT_CASH = int(cash);
if(INT_CASH/ 100000000 >= 1){
flag_yi = 1;
num_yi= INT_CASH / 100000000;
}
INT_CASH %= 100000000;
if(INT_CASH / 10000 >= 1){
flag_wan = 1;
num_wan = INT_CASH / 10000;
}
INT_CASH %= 10000;
if(INT_CASH >= 1){
flag_yuan = 1;
num_yuan = INT_CASH / 1;
}
if(flag_yi){
out_str += INT2RMB(num_yi);
out_str += "亿";
}
if(flag_wan){
out_str += INT2RMB(num_wan);
out_str += "万";
}
if(flag_yuan){
out_str += INT2RMB(num_yuan);
out_str += "元";
}
if(cash - int(cash)<0.00000000001){
out_str += "整";
}else{
int num_jiaofeng = int(num_xiaoshu * 100);
int num_jiao = num_jiaofeng / 10;
if(num_jiao){
out_str += getRMB[num_jiaofeng/10];
out_str += "角";
}
int num_feng = num_jiaofeng % 10;
if(num_feng){
out_str += getRMB[num_jiaofeng%10];
out_str += "分";
}
}
cout << out_str<< endl;
}
return 0;
}
。。。写累了。。。