打印从1到最大的n位数(考虑大数问题)
void Print1ToMaxOfNDigits(int n) { if(n <= 0) { return; } int * number = new int[n]; for(int i = 0;i < n;i++) { number[i] = 0; } int highestDigit = 0; while(Increase(number,n,&highestDigit)) { PrintNumber(number,highestDigit); } } // 加1,并返回操作是否成功 bool Increase(int number[],int n,int * highestDigit) { for(int i = 0;i <= *highestDigit;i++) { if(number[i] < 9) { number[i]++; return true; } else { number[i] = 0; } } if(*highestDigit < n - 1) { (*highestDigit)++; number[*highestDigit] = 1; } else { return false; } } void PrintNumber(int number[],int highestDigit) { for(int i = highestDigit;i >= 0;i--) { printf("%d",number[i]); } printf("\n"); }