PATA1082Read Number in Chinese

  • 有几点需要注意的地方一是将right转化为与left在在同一节
while (left + 4 <= right)
{
	right -= 4;//每次将right移动4位,直到left与right在同一节
}
  • 二是输出的时候每一节中的位,以及后面的亿和万

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<cstring>
#include<cstdlib>

char num[10][5] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
char wei[5][5] = { "Shi","Bai","Qian","Wan","Yi" };

int main()
{
	char str[15];
	scanf("%s", str);//按字符串输入数字
	int len = strlen(str);
	int left = 0, right = len - 1;//分别指向字符串的首尾元素
	if (str[0] == '-')
	{
		printf("Fu");
		left++;
	}

	while (left + 4 <= right)
	{
		right -= 4;//每次将right移动4位,直到left与right在同一节
	}
	while (left < len)
	{
		bool flag = false;//flag==false表示没有累计的0
		
		while (left <= right)
		{
			if (left > 0 && str[left] == '0')
			{
				flag = true;
			}
			else
			{
				if (flag == true)
				{
					printf(" ling");
					flag = false;
				}
				if (left > 0) printf(" ");//只要不是首位都要在每个后面输出空格
				printf("%s", num[str[left] - '0']);//输出当前位数字
				
				if (left != right)
				{
					printf(" %s", wei[right - left - 1]);
				}
			}
			left++;
		}
		if (right != len - 1)
		{
			printf(" %s", wei[(len - 1 - right) / 4 + 2]);
		}
		right += 4;
	}

	system("pause");
	return 0;
}
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/tsruixi/p/11240585.html