把数字用拼音表示并输出

#include<stdio.h>
#include<math.h>
//这个程序虽然是我写的,但是它设计的的确很2B。 我觉得不写注释,过段时间我自己都不知道自己写的什么。
//测试用例 0 ,123121123,-123121256,1000 ,10023,543000. 
int main()
{
	int num = 0;
	int a = 0;
	
	scanf("%d",&num);
	if(num < 0)		//
	{
		printf("fu ");
		num = abs(num);
	}
	if(num == 0)
	{
		printf("ling");
		return 0;
	} 
	int num_ = 0;
	int flag = 0;		
	int b = num;
	for(int i = 0; 0 != b ;i++)		//检测数字的位数。
	{
		b /= 10;
		flag++;
	}
	for(int i = flag - 1; 0 != num; i--)	//将数字倒过来
	{
		num_ += pow(10,i) * (num % 10);
		num /= 10;
	}
	for(int i = 0; 0 != num_ || flag; i++)//这里中间的判断使用把100倒过来变成1,输出会出错的问题给解决了。
	{
		a = num_ % 10;		//这里是每次去分离最低位数字,所以必须在前面把数字给倒过来。
		switch(a)		//将数字倒过来存在这样一个问题,100——会被变成1,这样无法输出正确结果。
		{
			case 0:
			{
				printf("ling");
				break;
			}
			case 1:
			{
				printf("yi");
				break;
			}
			case 2:
			{
				printf("er");
				break;
			}
			case 3:
			{
				printf("san");
				break;
			}
			case 4:
			{
				printf("si");
				break;
			}
			case 5:
			{
				printf("wu");
				break;
			}
			case 6:
			{
				printf("liu");
				break;
			}
			case 7:
			{
				printf("qi");
				break;
			}
			case 8:
			{
				printf("ba");
				break;
			}
			case 9:
			{
				printf("jiu");
				break;
			}
		}
		num_ /= 10;
		flag--;
		if(0 != flag)		//解决输出格式问题
		{
			printf(" ");
		}
	}
	return 0;
}

原文地址:https://www.cnblogs.com/zy666/p/10504320.html