您的位置:首页 > 其它

打印1到最大的n位数

2017-08-02 19:52 351 查看
考虑大数问题,用数组表示,要做两件事:数组加一,输出数组

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: