【C语言题解】将数字金额翻译成中文大写金额

【C语言题解】将数字金额翻译成中文大写金额

#include "stdio.h"
void MoneyCov(char a[],char b[],int numA,int numB);
void NumCov(char c);
int main()
{
	char a[100],b[2],c;
	bool afterPoint = false;
	int i = 0,j = 0;
	while((c = getchar()) != '\n')
	{
		if(((c < '0' || c > '9') && c != '.') || i > 2)
		{
			printf("error");
			return 0;
		}
		if(c == '.')
			afterPoint = true;
		else
		{
			if(afterPoint)
			{
				b[i] = c;
				i++;
			}
			else
			{
				a[j] = c;
				j++;
			}
		}	
	}
	MoneyCov(a,b,j,i);
	return 0;
}

void NumCov(char c)
{
	switch(c)
	{
		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;
	}
}

void MoneyCov(char a[],char b[],int numA,int numB)
{
	int i,j;
	for(i=0;i<numA;i++)
	{
		NumCov(a[i]);
		j = numA-i;
		if(j%4 == 1)
		{
			switch(j/4)
			{
				case 2:printf("亿");break;
				case 1:printf("万");break;
				case 0:printf("元");break;
				default:break; 
			}
		}
		else if(j%4 == 2)
		{
			if(a[i] != '0')
				printf("十");
			else
				printf("零");
		}
		else if(j%4 == 3)
		{
			if(a[i] != '0')
				printf("百");
			else
				printf("零");
		}
		else
		{
			if(a[i] != '0')
				printf("仟");
			else
				printf("零");
		}
	}
	if(numB > 0)
	{
		NumCov(b[0]);
		if(b[0] != '0')
			printf("角");
		if(numB > 1)
		{
			NumCov(b[1]);
			if(b[1] != '0')
				printf("分");
		} 
	}
}

你可能感兴趣的:(题解)