• 7-23 币值转换


    7-23 币值转换(20 分)

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

    输入格式:

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

    输出格式:

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

    输入样例1:

    813227345
    

    输出样例1:

    iYbQdBcScWhQdBeSf
    

    输入样例2:

    6900
    

    输出样例2:gQjB

     思路:输出的时候采用整形数字来输入,防止前导零(虽然好像没有这个测试点),考虑输入最小数字零,中间正常零
    ,以上都不是事。重点是不超过亿,中间连续多个零这个测试点,我看了好几个AC代码的帖子,有一亿零一输出一亿零零一
    、然后还有第五位不管是不是零,万必须输出的。我都试了,然而没软用。调试到脑疼,看来我还是too young too naive。

     1 #include<stdio.h>
     2 #include<string>
     3 #include<sstream>
     4 #include<iostream>
     5 using namespace std;
     6 int main()
     7 {
     8     string money;
     9     cin >> money;
    10 
    11     int numb = atoi(money.c_str());
    12     if (numb == 0) {         //特殊值为零的时候
    13         cout << "a" << endl; return 0;
    14     }
    15     stringstream ss;        //取消前导零
    16     ss << numb;
    17     ss >> money;
    18     string mcopy = money;
    19     int len = money.length();
    20 
    21     for (int i = 0; i < money.length(); i++)
    22     {
    23         if (atoi(money.c_str()) == 0) break; //取消后导零
    24 
    25         switch (money[i])
    26         {
    27         case '0':if (mcopy[i - 1] != money[i] && i != 0)cout << "a";break;
    28         case '1':cout << "b"; break;
    29         case '2':cout << "c";  break;
    30         case '3':cout << "d"; break;
    31         case '4':cout << "e"; break;
    32         case '5':cout << "f";  break;
    33         case '6':cout << "g"; break;
    34         case '7':cout << "h"; break;
    35         case '8':cout << "i";  break;
    36         case '9':cout << "j";  break;
    37         }
    38 
    39         if (money[i] == '0') {        //第五位万一定要输出?????
    40             
    41             if (len == 5 && atoi(mcopy.c_str())<100000000)cout << "W";
    42             len--; continue;
    43         }
    44         money[i] = '0';
    45         switch (len)
    46         {
    47         case 2:cout << "S"; break;
    48         case 3:cout << "B"; break;
    49         case 4:cout << "Q"; break;
    50         case 5:cout << "W"; break;
    51         case 6:cout << "S"; break;
    52         case 7:cout << "B"; break;
    53         case 8:cout << "Q"; break;
    54         case 9:cout << "Y"; break;
    55 
    56         }
    57         len--;
    58     }
    59     cout << endl;
    60     return 0;
    61 }

    既然看了帖子还是要有正确答案的

    http://makaidong.com/andywenzhi/2101_3682628.html




  • 相关阅读:
    python flsak 框架
    postman
    压力测试和负载测试
    软件测试相关内容
    Linux常用基本命令
    leetcode刷题——反转字符串
    leetcode——搜索插入位置
    leetcode刷题——移除元素
    leetcode 刷题 ——删除排序数组中的重复项
    json.decoder.JSONDecodeError: Expecting value 错误的处理
  • 原文地址:https://www.cnblogs.com/zengguoqiang/p/8328254.html
Copyright © 2020-2023  润新知