c++用数组实现中文大写数字
时间: 2023-06-11 14:08:37 浏览: 150
以下是使用数组实现中文大写数字的 C 代码:
```
#include <stdio.h>
#include <string.h>
char *chinese_number[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
char *big_unit[] = {"", "万", "亿", "兆", "京", "垓", "杼", "穰", "沟", "涧", "正", "载", "极", "恒河沙", "阿僧祇", "那由他", "不可思议", "无量大数"};
void print_number(char *number)
{
int len = strlen(number);
int i, j, k;
char digit[5] = "0000"; // 数字位,最多为四位,不足四位用 0 填充
int unit_index = 0; // 大单位索引
printf("中文大写:%s\n", number);
// 将数字按照四位一组进行分组,从低位到高位处理
for (i = len - 1; i >= 0; i -= 4) {
k = 0;
// 填充数字位
for (j = 0; j < 4 && i - j >= 0; j++) {
digit[j] = number[i - j];
k++;
}
// 处理数字位,从高位到低位处理
for (j = k - 1; j >= 0; j--) {
// 处理非零数字
if (digit[j] != '0') {
printf("%s", chinese_number[digit[j] - '0']);
// 处理数字位
switch (j) {
case 0:
printf("元");
break;
case 1:
printf("拾");
break;
case 2:
printf("佰");
break;
case 3:
printf("仟");
break;
}
} else {
// 处理连续的零
if (j != k - 1 && digit[j+1] != '0') {
printf("零");
}
}
}
// 处理大单位
if (unit_index < sizeof(big_unit) / sizeof(char *)) {
printf("%s", big_unit[unit_index]);
}
unit_index++;
}
}
int main()
{
char number[50];
printf("请输入一个整数:");
scanf("%s", number);
print_number(number);
return 0;
}
```
示例输出:
```
请输入一个整数:1234567890123456
中文大写:1234567890123456
壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹佰贰拾叁万肆仟伍佰陆拾
```
阅读全文