【PTA基础编程题目集(C语言)】7-23 币值转换

该文介绍了一个C语言程序,用于将不超过9位的人民币数值转换为大写中文格式,遵循财务规范。程序处理了不同数量的零以及零的位置,确保输出符合中文习惯。代码逻辑涉及数字和单位的转换,以及不同数量级的处理。

输入一个整数(位数不超过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 <string.h>
#include <math.h>
void read_num(char num) //数字大写输出
{
    printf("%c", 'a' + (num - '0'));
    return;
}
void read_danwei(int danwei) //单位大写输出
{
    switch (danwei)
    {
    case 1:break;
    case 10:printf("S"); break;
    case 100:printf("B"); break;
    case 1000:printf("Q"); break;
    case 10000:printf("W"); break;
    }
    return;
}
void buling(char num[], int weishu) //补0,不足四位补成四位,如23->0023
{
    int i;
    if (weishu != 4)
    {
        for (i = weishu - 1; i > -1; i--) //原数字右移
        {
            num[i + (4 - weishu)] = num[i];
        }
        for (i = 0; i < 4 - weishu; i++) //补0
        {
            num[i] = '0';
        }
    }
}
void read_four(char num[], int weishu) //每四位级大写输出
{
    int i, temp = 0;
    int zero_place = -1, danwei, nozero_place = -1, zero2_place = -1;
    buling(num, weishu); //补0
    for (i = 0; i < 4; i++) //统计0的个数
    {
        if ('0' == num[i])
        {
            temp++;
        }
    }
    switch (temp)
    {
    case 0: //没有0,直接读
        danwei = (int)p
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花辞树dor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值