题目:输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3,打印1到999。
分析:这个题目需要考虑两个问题,一个是这个数字可能会小于等于0;另一个是这个数字可能非常大,我们应该如何保存这个数字?这里说到表示大数,可以用到的方法有字符串和数组!
#include<stdio.h>
#include<string.h>
int Increment(char *number)
{
int isOverflow = 0;
int nTakeOver = 0;
int nLength = strlen(number);
int i;
for(i = nLength - 1;i >= 0; i--)
{
int nSum = number[i] - '0' + nTakeOver;
if(i == nLength - 1)
nSum++;
if(nSum >= 10)
{
if(i == 0)
isOverflow = 1;
else
{
nSum -= 10;
nTakeOver = 1;
number[i] = '0' + nSum;
}
}
else
{
number[i] = '0' + nSum;
break;
}
}
return isOverflow;
}
void PrintNumber(char *number)
{
int isBeginning0 = 1;
int nLength = strlen(number);