剑指offer---打印1到n位的最大数(12)

来源:互联网 发布:实变函数和实分析 知乎 编辑:程序博客网 时间:2024/06/05 18:17


题目:输入数字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;}
原创粉丝点击