C语言输出大写金额,人民币大写输出(C语言)
时间: 2023-12-01 21:07:18 浏览: 115
以下是一个简单的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` 函数将其转换为人民币大写形式。
阅读全文