zoukankan      html  css  js  c++  java
  • 7-1 币值转换

    币值转换

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

    输入格式:

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

    输出格式:

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

    输入样例1:

    813227345

    输出样例1:

    iYbQdBcScWhQdBeSf

    输入样例2:

    6900

    输出样例2:

    gQjB

    实验代码:

    #include<stdio.h>
    #include<math.h>
    int m,s=0;
    int main()
    {
        int i,j,k,p=1,flag=1;
        int f(int q,int m);
        scanf("%d",&m);
        for(i=0;m/p>=10;i++){
            p=pow(10,i);
            s=s+1;
        }
        if(m==0) printf("a");
        if(m<10&&m>=0) s=1;
        for(j=1;j<=s;j++){
            switch(f(j,m)){
                case 0:if(j!=s&&j!=s-4){
                    if(f(j+1,m)==0) flag=0;
                    else flag=1;
                    if(flag)printf("a");break;
                    };break;
                case 1:printf("b");
    break; case 2:printf("c");
    break; case 3:printf("d");
    break; case 4:printf("e");
    break; case 5:printf("f");
    break; case 6:printf("g");
    break; case 7:printf("h");
    break; case 8:printf("i");
    break; case 9:printf("j");
    break; } if(f(j,m)==0&&j!=s&&j!=s-4) continue; else{ if(s==9&&j==5){ if(f(2,m)==0&&f(3,m)==0&&f(4,m)==0&&f(5,m)==0) continue; } switch(s-j){ case 1:printf("S");
    break; case 2:printf("B");
    break; case 3:printf("Q");
    break; case 4:printf("W");
    break; case 5:printf("S");
    break; case 6:printf("B");
    break; case 7:printf("Q");
    break; case 8:printf("Y");
    break; } }} return 0; } int f(int q,int m) { int k,a; if(q==1) k=m/pow(10,s-1); else{ a=m/pow(10,s-q+1); k=m/pow(10,s-q)-a*10; } return k; }

    设计思路

    1,开始我们需要了解一下应该存储那些数组。
    2,题目说的是输入为非负整数,首先需判定输入数为0的情况
    3,然后如果输入数不为0,那么将输入数从低到高取位判定。取得的当前位有0和非0之分,若当前位非0,且当前位数不为1即当前位不为个位,则存放单位与数字。注意由于一开始不知道输入数的位数,所以数组的只能从低到高,一般从0开始,先存放单位,后存放数字。若当前位为0,则可能有下几种情况流程:
    1)若当前位为万位,则必存单位
    2)若当前位不为万位,则又需要分情况讨论:
    3)当前位为千位或个位,不存数字
    4)当前位不为千位,且不为个位,但前面一位为0,也不存数字
    5)当前位不为千位,且不为个位,前面一位非0,存数字
    问题解决方法
    遇到的问题就是switch和自定函数带入的值输错,导致结果错误,
    建议把值输入那块部分进行分析。
    运行结果(因为为后面自己修改了,所以只能用这张图)
  • 相关阅读:
    【转】HTML5的小知识点小集合
    11月15日下午 ajax返回数据类型为XML数据的处理
    11月15日下午 用代码操作文件(文件夹)
    11月15日上午文件上传
    11月14日用AJAX、PHP、SESSION做购物车
    各种进位制转换
    11月13日上午ajax返回数据类型为JSON数据的处理
    11月13日上午省、市、区(县)三级联动
    11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情
    11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
  • 原文地址:https://www.cnblogs.com/LUMO/p/10364812.html
Copyright © 2011-2022 走看看