题目:输入数字n,按顺序打印出从1到最大的n位十进制数。
代码示例:
#include<iostream>
using namespace std;
int FirstIndexNoZero(int a[], int n)
{
for (int i = 0; i < n; i++)
{
if (a[i] != 0)
return i;
}
return -1;
}
void PrintFromoneToN(int n)
{
if (n <= 0)
return;
if (n == 1)
{
for (int i = 1; i <= 9; i++)
cout << i << endl;
return;
}
//
int *array = new int[n];
memset(array, 0, n*sizeof(array));
while (1)
{
int i = n - 1;
array[i] += 1;
for (int j = i; j > 0; j--)
{
if (array[j] == 10)
{
array[j] = 0;
array[j - 1] += 1;
}
}
if (array[0] == 10)
return;
int index = FirstIndexNoZero(array, n);
for (int i = index; i < n; i++)
{
cout << array[i];
}
cout << endl;
}
delete[] array;
}
void main()
{
int n;
cout << "输入n位数:";
cin >> n;
PrintFromoneToN(n);
}