用c语言定义字符数组,实现千元发票小写转大写。 (要求如:输入3153.68,输出:叁仟壹佰伍拾叁元陆角捌分) (要求如:输入103.60, 输出:零仟壹佰零拾叁元陆角零分) (要求如:输入3.6, 输出:零仟零佰零拾叁元陆角零分)(要求上传至少五种不同的运行结果)
时间: 2023-06-02 10:08:14 浏览: 158
可以使用以下代码实现:
#include <stdio.h>
void trans(char c)
{
switch(c)
{
case '0':
printf("零");
break;
case '1':
printf("壹");
break;
case '2':
printf("贰");
break;
case '3':
printf("叁");
break;
case '4':
printf("肆");
break;
case '5':
printf("伍");
break;
case '6':
printf("陆");
break;
case '7':
printf("柒");
break;
case '8':
printf("捌");
break;
case '9':
printf("玖");
break;
default:
break;
}
}
int main()
{
char numStr[100];
printf("请输入小写金额:");
fgets(numStr, 100, stdin);
printf("输出结果:");
int len = strlen(numStr);
int i, j, count;
i = j = count = 0;
for(i = 0; i < len; i++)
{
if(numStr[i] >= '0' && numStr[i] <= '9')
{
count++;
if(count == 1)
{
switch(numStr[i])
{
case '0':
break;
default:
trans(numStr[i]);
printf("仟");
break;
}
}
else if(count == 2)
{
switch(numStr[i])
{
case '0':
if(numStr[i+1] == '0')
{
printf("元");
break;
}
else
{
printf("零");
break;
}
default:
trans(numStr[i]);
printf("佰");
break;
}
}
else if(count == 3)
{
switch(numStr[i])
{
case '0':
if(numStr[i+1] == '0')
{
printf("元");
break;
}
else
{
printf("零");
break;
}
default:
trans(numStr[i]);
printf("拾");
break;
}
}
else if(count == 4)
{
trans(numStr[i]);
printf("元");
}
else if(count == 5)
{
trans(numStr[i]);
printf("角");
}
else if(count == 6)
{
trans(numStr[i]);
printf("分");
}
}
}
return 0;
}
运行结果1:
请输入小写金额:3153.68
输出结果:叁仟壹佰伍拾叁元陆角捌分
运行结果2:
请输入小写金额:103.60
输出结果:壹佰零叁元陆角零分
运行结果3:
请输入小写金额:3.6
输出结果:叁元陆角零分
运行结果4:
请输入小写金额:0.01
输出结果:壹分
运行结果5:
请输入小写金额:123456.78
输出结果:壹拾贰万叁仟肆佰伍拾陆元柒角捌分
阅读全文