1.循环必然溢出。
2.考虑用字符串实现,模拟加法。
3.
void PrintMaxOfNDigite(int n)
{
char *number=new char[n+1];
number[n]="\0" ;
memset(number ,'0',n);
while( ! increment(number) ) //自加后没溢出,第一位是9,然后还在进位。
{
printf( "%s" , number ) ; // 有问题。这样子,前面的0都会打出来。 0000012;这样子。
printNumber(number) ; //写个函数打印
}
}
bool increment(char *number )
{
int len= strlen(number);
bool isOverflow=false;
int takeover=0;
for( int i=len-1 ; i>=0 ; i-- )
{
int num= number[i] - '0' + takeover ;
if(i==len-1)
{
num++;
}
if(num>=10)
{
if(i==0) { 溢出了。isOverflow=true; }
takeover=1;num-=10;
number [i]=num+ ‘ 0 ’ ;
}
else
{
number[i] =num +'0' ;
break; //重要,这样的话跳出,前面的不用遍历了。
}
}
}