题目:输入数字n,按顺序打印出从1到最大的n位数。比如输入的是3,则打印1、2、3…….一直打印到999。
#include <iostream>
#include <string.h>
using namespace std;
void printNumber(char* number)
{
int len = strlen(number);
bool isBeginning0 = true;
for(int i=0;i<len;i++)
{
if(isBeginning0 && number[i] != '0')
isBeginning0 = false;
if(!isBeginning0)
cout<<number[i];
}
cout<<" ";
}
bool Increment(char* number)
{
bool flg = true;
int len = strlen(number);
for(int i=len-1;i>=0;i--)
{
int num = number[i]-'0'+1;
if(num >= 10)
{
if(i == 0)
flg = false;
else
{
num -= 10;
number[i] = num + '0';
}
}
else
{
number[i] = num + '0';
break;
}
}
return flg;
}
void Print1toMaxofNDigits(int n)
{
char* number = new char[n+1];
if(n > 0)
{
memset(number,'0',n);
number[n] = '\0';
while(Increment(number)) //给字符串中表达的数字模拟加1
{
printNumber(number);
}
}
cout<<endl;
delete []number;
}
int main()
{
Print1toMaxofNDigits(3);
return 0;
}