打印1到最大的n位数

来源:互联网 发布:今日头条个人数据 编辑:程序博客网 时间:2024/06/05 05:34

考虑大数问题,用数组表示,要做两件事:数组加一,输出数组

bool IsAdd(int a[],int n){    int flag = 0;    for (int i = n; i >= 0; i--)    {        if (i == n)                       {            int tmp = a[i] + flag + 1; (最后一位数时才加一)            a[i] = tmp % 10;            flag = tmp / 10;        }        else        {            int tmp = a[i] + flag;            a[i] = tmp % 10;            flag = tmp / 10;        }    }    if (a[0] == 1) return false;    return true;}void PrintNum(int a[], int n){    int i = 0;    while (a[i] == 0&&i<n) i++;(从第一个不是0的数开始打印)    while (i <= n)        cout << a[i++];    cout << endl;}void PrintAll(int n){    int *a = new int[n + 1]();(多出来的一位用来判断是否打印到最后一位数)    while (IsAdd(a, n))    {        PrintNum(a, n);    }}int main(){    PrintAll(2);}