用C语言实现小写金额转大写 金额不超过1000
时间: 2023-05-31 13:06:53 浏览: 59
以下是实现小写金额转大写的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *digit[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
char *unit[] = {"元", "拾", "百", "千", "万"};
char *convert(int num)
{
char *str = (char *) malloc(sizeof(char) * 100);
memset(str, 0, sizeof(char) * 100);
int i, j = 0;
int flag = 0; // 是否已经输出过“零”
int temp;
if (num < 0 || num > 1000) {
printf("输入金额不合法!");
exit(0);
}
if (num == 0) {
strcpy(str, "零元整");
return str;
}
if (num < 10) {
sprintf(str, "%s元整", digit[num]);
return str;
}
if (num < 100) {
i = num / 10;
j = num % 10;
if (i == 1) {
strcpy(str, "壹拾");
} else {
sprintf(str, "%s拾", digit[i]);
}
if (j != 0) {
strcat(str, digit[j]);
}
strcat(str, "元整");
return str;
}
if (num < 1000) {
i = num / 100;
temp = num % 100;
sprintf(str, "%s佰", digit[i]);
if (temp != 0 && temp < 10) {
strcat(str, "零");
}
strcat(str, convert(temp));
return str;
}
if (num < 10000) {
i = num / 1000;
temp = num % 1000;
sprintf(str, "%s仟", digit[i]);
if (temp != 0 && temp < 100) {
strcat(str, "零");
}
strcat(str, convert(temp));
return str;
}
if (num < 100000000) {
i = num / 10000;
temp = num % 10000;
strcat(convert(i), "万");
if (temp != 0 && temp < 1000) {
strcat(str, "零");
}
strcat(str, convert(temp));
return str;
}
return NULL;
}
int main()
{
int num;
printf("请输入小写金额(不超过1000):");
scanf("%d", &num);
printf("大写金额为:%s\n", convert(num));
return 0;
}
```
运行结果如下:
```
请输入小写金额(不超过1000):768
大写金额为:柒百陆拾捌元整
```