// 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using namespace std; bool Increment(char *number)
{
bool isOverflow=false;
int nTakeOver=;
int nLength=strlen(number); for(int i=nLength-;i>=;--i)
{
int nSum=number[i]-''+nTakeOver;
if(i==nLength-)
nSum++; if(nSum>=)
{
if(i==)//若是首位满10,则到了最大的n位
isOverflow=true;
else
{
nSum-=;
nTakeOver=;//若满10则上一位加1
number[i]=''+nSum;
}
}
else
{
number[i]=''+nSum;
break;
}
}
return isOverflow;
} void PrintNumber(char *number)
{
bool isBeginning0=true;
int nLength=strlen(number);
for(int i=;i<nLength;++i)
{
if(isBeginning0&&number[i]!='')
{
isBeginning0=false;
}
if(!isBeginning0)
{
cout<<number[i];
}
}
cout<<"\t";
} void Print1ToMaxOfNDigits(int n)
{
if(n<=)
return; char *number=new char[n+];
memset(number,'',n);
number[n]='\0'; while(!Increment(number))
{
PrintNumber(number);
}
delete []number;
} int _tmain(int argc, _TCHAR* argv[])
{
Print1ToMaxOfNDigits();
return ;
}
字符串是一个简单、有效的表示大数的方法。