从1打印到最大的n位数字(字符串模拟数字自加)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从1打印到最大的n位数字(字符串模拟数字自加)相关的知识,希望对你有一定的参考价值。

陷阱:  用最大的n位数-1(数字太大可能产生越界)
应该采用字符串模拟数字自加!
代码如下:
#include<iostream>
using namespace std;
int  IsMax(char *number)
{
 int nLength = strlen(number);
 int CarryBit = 0;
 bool  ret = false;
 for (int i = nLength-1; i >= 0; i--)
 {
  int nSum = number[i] - ‘0‘ + CarryBit;
  if (i == nLength - 1)
   ++nSum;
  if (nSum >= 10)
  {
   if (i == 0)
    ret = true;
   else
   {
    nSum -= 10;
    CarryBit = 1;
    number[i] = ‘0‘ + nSum;
   }
  }
  else
  {
   number[i] = ‘0‘ + nSum;
   break;
  }
 }
 return ret;

}
void Print1ToN(int n)
{
 if (n <= 0)
  return;
 char *number = new char[n+1];
 memset(number, ‘0‘, n);
 number[n] = ‘\0‘;
 while (!IsMax(number))
 {
  cout << number << "  " ;
 }
 
 
}
int main()
{
 Print1ToN(10);
 getchar();
 return 0;
}
输出部分可以做一些优化将 从第一个不为0的开始输出。


以上是关于从1打印到最大的n位数字(字符串模拟数字自加)的主要内容,如果未能解决你的问题,请参考以下文章

打印1到最大的n位数

Offer[17] 打印1到最大的n位数

打印1到最大的n位数

剑指offer-面试题17-打印从1到最大的n位数-数字

剑指offer17打印从1到最大的n位数

剑指offer[面试题17:打印从1到最大的n位数]