ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

7-43 币值转换 (20 分)

2021-07-23 10:57:35  阅读:186  来源: 互联网

标签:输出 20 int 样例 43 转换 include 币值 输入


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

输入格式:

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

输出格式:

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

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

昨天晚上在睡觉的时候有了灵感,哈哈 那个中间零的想法就出来了

我这道题写的比较麻烦 中间有零情况比较难

给你们说一下思路

我就考虑特殊情况

首先是后面是零的情况 我用的while循环找出后面有多少个零(万里面找一个,个位那里找一个),万的话是我睡觉的时候有的思路(昨天晚上写不出来,睡觉忽然就脑子转起来了,哈哈),就找出后就不用管它了(这是我考虑的情况一这个比较难)

第二个考虑的情况就是个位或者万位不是零,其他位含有多个连续零(就一个if语句就可以搞定)

一个细节 第二个for循环哪里,开始的时候不是从千位开始的(这个的话课读出一个零)这个是我碰巧写出来的,

其实也可以利用if语句写,然后从千位开始。既然对了就不该了。

补上昨天没写出来的代码,上代码

#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
int main()
{
    char s[10];
    cin>>s;
    int n=strlen(s);//计算多少位
    char shu[11]={'a','b','c','d','e','f','g','h','i','j'};
    int j=1;
    //6001
    if(s[n-1]=='0'&&n==1)
    {
        cout<<shu[0];
        return 0;
    }
    while(s[n-j]=='0')//最后面多少个零
    {
        j++;
    }
    int k=5;
    while(s[n-k]=='0')//万位多少连续的零
    {
        k++;
    }
    int m[n];//100100001  这是我实验的数
    for(int i=0;i<n-k+1;i++)
    {
        m[i]=s[i]-'0';
        if(m[i-1]==0&&m[i]==0)//第二种情况考虑
        {
            
        }       
        else
        {
            cout<<shu[m[i]];
            if((n-i)==9)
            {
                cout<<"Y";
            }
            else if(((n-i)==5)&&m[i]!=0)
            {
                cout<<"W";
            }
            else if(((n-i)==4||(n-i)==8)&&m[i]!=0)
            {
                cout<<"Q";
            }
            else if(((n-i)==3||(n-i)==7)&&m[i]!=0)
            {
                cout<<"B";
            }
            else if(((n-i)==2||(n-i)==6)&&m[i]!=0)
            {
                cout<<"S";
            }
        }       
    }//100100100
    if(s[n-5]=='0')  cout<<"W";//特殊情况考虑,上面代码没法输出W
    for(int i=n-k+1;i<n-j+1;i++)//下面循环内容跟上面一样  主要是这个for循环里面
    {
        m[i]=s[i]-'0';
        if(m[i-1]==0&&m[i]==0)
        {
            
        }
        else
        {
            cout<<shu[m[i]];
            if((n-i)==9)
            {
                cout<<"Y";
            }
            else if(((n-i)==5)&&m[i]!=0)
            {
                cout<<"W";
            }
            else if(((n-i)==4||(n-i)==8)&&m[i]!=0)
            {
                cout<<"Q";
            }
            else if(((n-i)==3||(n-i)==7)&&m[i]!=0)
            {
                cout<<"B";
            }
            else if(((n-i)==2||(n-i)==6)&&m[i]!=0)
            {
                cout<<"S";
            }
        }       
    }
}

标签:输出,20,int,样例,43,转换,include,币值,输入
来源: https://blog.csdn.net/weixin_53046105/article/details/119026321

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有