实数小写金额转大写

发布时间 2023-04-13 21:25:38作者: xXinG9199

编程序实现如下功能:从键盘输入一个包含小数的小写金额(整数部分不超过7位),将其转换为汉字大写金额,最后输出结果。

提示:不需要对0进行特殊处理。

(C语言微课视频——哔哩哔哩网站——账号:巨之说)

输入格式:

输入一个包含小数的小写金额(整数部分不超过7位,小数部分不超过2位)。

输出格式:

汉字大写金额,最后换行。

输入样例:

123.45

输出样例:

壹佰贰拾叁元肆角伍分
#include <stdio.h>

void s(int i) {
	switch (i)
	{
	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;
	}
}

int main()
{
    // 思路很简单,直接取每位转大写,处理一下万单位就行(如果前面不是0 就不打印就行)
	double money;
	scanf("%lf", &money);

	int i7 = (int)money / 1000000 % 10;
	int i6 = (int)money / 100000 % 10;
	int i5 = (int)money / 10000 % 10;
	int i4 = (int)money / 1000 % 10;
	int i3 = (int)money / 100 % 10;
	int i2 = (int)money / 10 % 10;
	int i1 = (int)money / 1 % 10;
	int i0_1 = (int)(money * 10) % 10; //角
	int i0_2 = (int)(money * 100) % 10; //分

	if (i7 != 0) { s(i7); printf("佰"); }
	if (i6 != 0) { s(i6); printf("拾"); }
	if (i5 != 0) s(i5);
	if (i7 > 0 || i6 > 0 || i5 > 0) printf("万");
	if (i4 != 0) { s(i4); printf("仟"); }
	if (i3 != 0) { s(i3); printf("佰"); }
	if (i2 != 0) { s(i2); printf("拾"); }
	if (i1 != 0) { s(i1); printf("元"); }
	if (i0_1 != 0) { s(i0_1); printf("角"); }
	if (i0_2 != 0) { s(i0_2); printf("分"); }
}