题解 | #人民币转换#

人民币转换

https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b

#include <iostream>//和42学英语很像
#include <vector>
using namespace std;
vector<string> str{"壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
vector<string> str1{"拾", "贰拾", "叁拾", "肆拾", "伍拾", "陆拾", "柒拾", "捌拾", "玖拾"};
string myfunc1(string& s) {
    string sout;
    if(s[0]!='0'){
        sout += str[s[0] - '0' - 1];sout += "仟";
    }

    if (s[1] != '0') {
        sout += str[s[1] - '0' - 1];
        sout += "佰";
    }
    if (s[2] == '0') {
        if (s[3] != '0') {
            if(s[0]!='0' || s[1] != '0') sout += "零";
            sout += str[s[3] - '0' - 1];
        }
    } else {
        if(s[0]!='0' && s[1] == '0') sout += "零";
        sout += str1[s[2] - '0' - 1];
        if (s[3] != '0') {
            sout += str[s[3] - '0' - 1];
        }
    }
    return sout;
}
int main() {
    double a;
    cin >> a;
    // string s1;cin>>s1;
    // double a=stod(s1);
    int b = a * 1000;
    int bf = b % 100;bf/=10;
    b /= 100; //bf 百分位
    int sf = b % 10;
    b /= 10; //sf 十分位  现在b就是整数部分
    string s;
    s += "人民币";
    //整数部分
    string zs = to_string(b);
    int n = zs.size();
    if (n > 8) { //有亿位
        for(int i=0;i<(12-n);i++) {zs="0"+zs;}
        string s1=zs.substr(0,4),s2=zs.substr(4,4),s3=zs.substr(8,4);
        s+=myfunc1(s1);s+="亿";
        s+=myfunc1(s2);s+="万";
        s+=myfunc1(s3);s+="元";
    } else if (n <= 8 && n > 4) { //千万~万
        for(int i=0;i<(8-n);i++) {zs="0"+zs;}
        string s1=zs.substr(0,4),s2=zs.substr(4,4);
        s+=myfunc1(s1);s+="万";
        s+=myfunc1(s2);s+="元";
    }
    else{
        for(int i=0;i<(4-n);i++) {zs="0"+zs;}
        s+=myfunc1(zs);
        if((zs[0]-'0')||(zs[1]-'0')||(zs[2]-'0')||(zs[3]-'0'))s+="元";
    }
    // s += "元";
    //小数部分
    if (bf == 0 && sf == 0) s += "整";
    if (sf != 0) {
        s += str[sf - 1];
        s += "角";
        if (bf != 0) {
            s += str[bf - 1];
            s += "分";
        }
    }
    if (sf == 0 && bf != 0) {s += str[bf - 1];s += "分";}
    cout << s;
}

全部评论

相关推荐

点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务