问题:输入一个数字n,按顺序打印从1到最大的n位十进制数
常规思路的陷阱
用一个循环从1开始逐个打印 ,这里并没有给出n的范围,当n很大时,整形(int)和长整型(long)都可能溢出
改进
解决这个问题需要表达一个大数,最常用也最容易的方法是用字符串或数组表达大数
代码实现
先实现打印部分(这里注意要满足阅读习惯,如098就不满足阅读习惯,98才满足)
//按照阅读习惯打印数字,碰到第一个非0字符才开始打印
void printNumber(char *number){
bool isBegin0 = true;
int nLength = strlen(number);
for(int i = 0; i < nLength; ++i){
if(isBegin0 && number[i] != '0'<