这道题对我来说有些难,需要有时间再看看整理下
#include <iostream>
#include <string.h>
using namespace std;
bool Increment(char* number)
{
bool isOverflow = false;
int nTakeOver = 0;
int nLength = strlen(number);
for (int i = nLength - 1; i >= 0; i--)
{
int nSum = number[i] - '0' + nTakeOver;
if (i == nLength - 1)
nSum++;
if (nSum == 10)
{
if (i == 0)
isOverflow = true;
else
{
nSum = 0;
nTakeOver = 1;
number[i] = '0';
}
}
else
{
number[i] = '0' + nSum;
break;
}
}
return isOverflow;
}
void PrintNumber(char* number)
{
int nLength = strlen(number);
int NotZero_location = 0;
for (int i = 0; i < nLength; ++i)
{
if (number[i] != '0')
{
NotZero_location = i;
break;
}
}
for (int i = NotZero_location; i<nLength; ++i)
{
cout << number[i];
}
cout << '\t'; //制表符,间隙比空格大,可使数据更整齐
}
int main()
{
int n;
cin >> n;
if (n <= 0)
return -1;
char *number = new char[n + 1];
memset(number, '0', n);
number[n] = '\0';
while (!Increment(number))
{
PrintNumber(number);
}
delete[]number;
return 0;
}