编程语言
首页 > 编程语言> > PTA编程总结2—币值转换

PTA编程总结2—币值转换

作者:互联网

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

实验代码:


   #include <stdio.h>
#include <string.h>

int main(void)
{
    char date[11];
    int digit = 0;

    gets_s(date,11);
    for (int i = 0; i < 11; i++)
    {
        if (date[i] == '\0') break;
        digit++;
    }
    const int length = digit;
    for (int i = 0; i < length; i++, digit--)
    {
        char c = date[i];
        switch (c)
        {
        case '0':c = 'a'; break;
        case '1':c = 'b'; break;
        case '2':c = 'c'; break;
        case '3':c = 'd'; break;
        case '4':c = 'e'; break;
        case '5':c = 'f'; break;
        case '6':c = 'g'; break;
        case '7':c = 'h'; break;
        case '8':c = 'i'; break;
        case '9':c = 'j'; break;
        default : break;
        }
        if (c == 'a')  
        {
            if (digit == 5)
                printf("W");
            else
            {
                for (i++, digit--; i < length; i++, digit--)
                {
                    if (date[i] == '0')
                        if (digit == 5)
                            printf("W"); 
                    else
                    {
                        printf("a");
                        i--;
                        digit++;
                        break;
                    }
                }
            }
        }
        else
        {
            printf("%c", c);
            switch (digit)
            {
            case 9:printf("Y"); break;
            case 8:printf("Q"); break;
            case 7:printf("B"); break;
            case 6:printf("S"); break;
            case 5:printf("W"); break;
            case 4:printf("Q"); break;
            case 3:printf("B"); break;
            case 2:printf("S"); break;
            default:break;
            }
        }
    }
    return 0;
}

设计思路:

本题调试过程碰到问题及解决办法:

遇到的问题:部分正确
解决的办法:通过观察代码,找助教帮忙检查,发现应该先判断0条件。

运行结果截图:

标签:case,digit,++,编程,PTA,break,int,printf,币值
来源: https://www.cnblogs.com/LILI6/p/10405691.html