C语言--数字串转大写金额输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言程序,可以将一个小于10亿的金额换为人民币大写输出: ```c #include <stdio.h> #include <string.h> char *num_to_rmb[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; char *unit[] = {"", "拾", "佰", "仟", "万", "亿"}; char *rmb_unit[] = {"", "元", "角", "分"}; void print_rmb(char *rmb_str) { int len = strlen(rmb_str); int i, j, k, flag; char result[256] = ""; if (len > 9) printf("金额过大,无法处理"); else { // 处理整数部分 for (i = 0, flag = 0; i < len; i++) { j = len - i - 1; k = j % 4; if (rmb_str[i] == '0') { if (k == 0) { strcat(result, unit[j / 4 + 4]); flag = 0; } else if (flag == 0) { strcat(result, num_to_rmb[0]); flag = 1; } } else { if (flag == 1) { strcat(result, num_to_rmb[0]); flag = 0; } strcat(result, num_to_rmb[rmb_str[i] - '0']); strcat(result, unit[k]); if (k == 0) flag = 0; } } if (flag == 1) strcat(result, num_to_rmb[0]); strcat(result, rmb_unit[1]); // 处理小数部分 if (len == 1 || rmb_str[len - 2] == '0') strcat(result, num_to_rmb[rmb_str[len - 1] - '0']); else { strcat(result, num_to_rmb[rmb_str[len - 2] - '0']); strcat(result, rmb_unit[2]); strcat(result, num_to_rmb[rmb_str[len - 1] - '0']); } strcat(result, rmb_unit[0]); printf("%s\n", result); } } int main() { char rmb_str[32]; printf("请输入金额(小于10亿):"); scanf("%s", rmb_str); print_rmb(rmb_str); return 0; } ``` 在这个程序中,我们定义了三个字符串数组: - `num_to_rmb`,用于将数字换为汉字; - `unit`,定义了汉字数字的位数(如“拾”、“佰”、“仟”、“万”、“亿”等); - `rmb_unit`,定义了人民币的单位(元、角、分)。 `print_rmb`函数将一个字符串表示的金额换为人民币大写形式,并输出到控制台。它首先根据字符串长度判断是否超过10亿,如果超过则输出错误信息。否则,它将整数部分和小数部分分别处理,然后拼接起来输出。整数部分的处理比较复杂,需要根据位数分别处理。小数部分则比较简单,只需要判断是否有角和分即可。 在 `main` 函数中,我们输入一个字符串表示的金额,然后调用 `print_rmb` 函数将其换为人民币大写形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值