输入一个整数(位数不超过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

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





