打印1到最大的n位数

输入数字n,按顺序打印出从1到最大的n位十进制数,如:输入3,则打印出1,2,3,......999。

void PrintN(int n)
{
    if (n<=0)
        return ;
    char *number=new char[n+1];
    memset(number,'0',n);
    number[n]='\0';
    while(!Increment(number))
        Printnumber(number);
    delete []number;
}
bool Increment (char *number)
{
    bool flag=false;
    int num=0;
    int len=strlen(number);
    for (int i=len-1;i>=0;i--)
    {
        int nsum=number[i]-'0'+num;
        if (i==len-1)
            nsum++;
        if (nsum>=10)
        {
            if (i==0)
                flag=true;
            else
            {
                nsum-=10;
                num=1;
                number[i]='0'+nsum;
            }
        }
        else 
        {
            number[i]='0'+nsum;
            break;
        }
    }
    return flag;
}
void Printnumber(char *number)
{
    bool flag=true;
    int len=strlen(number);
    for (int i=0;i     {
        if (flag&&number[i]!='0')
            flag=false;
        if (!flag)
            printf("%c",number[i]);
    }

  printf("\t");
}

你可能感兴趣的:(编程题)