首页 > 其他 > 详细

打印1到最大的n位数*

时间:2021-02-08 16:49:13      阅读:21      评论:0      收藏:0      [点我收藏+]

注意:需考虑大数问题

void PrintFrom1ToMax(int n)
{
	if (n <= 0)
		return;

	char* arrPrintStr = new char[n+1];
	memset(arrPrintStr, ‘0‘, n);
	arrPrintStr[n] = ‘\0‘;
	while (!Increment(arrPrintStr))
	{
		PrintNumber(arrPrintStr);
	}
	delete arrPrintStr[];
}

bool Increment(char* arrNumber)
{
	bool bIsOverflow = false;
	int nTakeOver = 0;
	int nLength = strlen(arrNumber);
	for (int i = nLength - 1; i >= 0; i--)
	{
		int num = arrNumber[i] - ‘0‘ + nTakeOver;
		if (i == nLength - 1)
			num++;

		if (num >= 10)
		{
			if (i == 0)
				bIsOverflow = true;
			else
			{
				num -= 10;
				nTakeOver = 1;
				arrNumber[i] = ‘0‘ + num;
			}
		}
		else
		{
			arrNumber[i] = ‘0‘ + num;
			break;
		}
	}
	return bIsOverflow;
}

void PrintNumber(char* arrNumber)
{
	bool bStartPrint = false;
	int nLength = strlen(arrNumber);
	for (int i = 0; i < nLength; ++i)
	{
		if (!bStartPrint && arrNumber[i] != ‘0‘)
			bStartPrint = true;
		if (bStartPrint)
			printf("%c", arrNumber[i]);
	}
}

  

打印1到最大的n位数*

原文:https://www.cnblogs.com/yapp/p/14389053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!