;從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的開始輸出。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章