题目:输入数字n,按顺序打印出从1到最大的n为十进制数,比如输入3,则打印出1、2、3一直到最大的3位数即999
代码:
void Print1toMaxOfNDigital(int n)
{
if(n <= 0)
return;
char *number = (char *)malloc(sizeof(char) * (n + 1));
memset(number, '0', n);
number[n] = '\0';
while( !increment(number))
{
printNum(number);
}
}
//字符串模拟整数的加法,并返回是否停止加1的标志
bool increment(char *number)
{
bool isOverFlow = false;
int nTakeOver = 0;
int nLength = strlen(number);
for(int i = nLength - 1; i >= 0; i--)
{
int nSum = number[i] - '0' + nTakeOver;
if(i == nLength - 1)
nSum++;
if(nSum >= 10)
{
if(i == 0)
isOverFlow = ture;
else
{
nSum -= 10;
nTakeOver = 1;
number[i] = '0' + nSum;
}
}
else
{
number[i] = nSum + '0';
break;
}
}
return isOverFlow;
}
void printNum(char *number)
{
bool isBeginning0 = ture;
int nLength = strlen(number);
for(int i = 0; i < nLength; i++)
{
if(isBeginning && number[i] != '0')
isBeginning = false;
if(!isBeginning)
printf("%c", number[i]);
}
printf("\t");
}