货币

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

include

using namespace std;

int main(){

char num[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};

int n, temp, flag = 0;

int k = 100000000;

cin >> n; 

if(n == 0){

    cout << 'a';

    return 0;

}

//判断万位到千万位是否为零

if(n - (n % 10000) - (n / k) * k == 0) flag = 1; 

//找到最高位

while(n > 0){        

    if(n / k > 0) break;

    else k /= 10;

}   

while(n > 0){

    temp = n / k;

    if(temp == 0){

        //下一位若非零,则输出 

        if((n - temp * k) / (k / 10) != 0) cout << 'a';

    }

    else{

        cout << num[temp];

        if(k == 100000 || k == 10) cout << 'S';

        else if(k == 1000000 || k == 100) cout << 'B';

        else if(k == 10000000 || k == 1000) cout << 'Q';            

    }

    if(k == 10000 && !flag) cout << 'W';

    else if(k == 100000000) cout << 'Y';

    n -= temp * k;

    k /= 10;

}

}

猜你喜欢

转载自www.cnblogs.com/c11c11cyy/p/10409567.html