65.输出 1 到最大的 N 位数(运算)
题目:输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数。比如输入 3,
则输出 1、2、3 一直到最大的 3 位数即 999。
思路:肯定要考虑数字溢出的情况,用字符串表示数字,模拟加法。
/*
65.输出 1 到最大的 N 位数(运算)
题目:输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数。比如输入 3,
则输出 1、2、3 一直到最大的 3 位数即 999。
*/ #include <iostream>
using namespace std; void printnum(int n)
{
int figure = ; //记录数字的位数 char * pNum = new char [n + ];
memset(pNum, , n * sizeof(char)); pNum[] = ; //从1开始
while(figure < n)
{
for (int i = figure; i >= ; i--) //输出数字 从当前的最高位开始
{
cout << int(pNum[i]);
}
cout << endl; int ftmp = ;
while (pNum[ftmp] == ) //从最后一位依次向前判断是否进位,如果进位本位就归零, 找到实际上增加的那一位
{
pNum[ftmp++] = ;
}
if (ftmp > figure) //如果满足,表示数字的位数增加了
{
figure++;
}
pNum[ftmp] += ;
} delete [] pNum;
} int main()
{
printnum();
return ;
}
网上搜了下答案,感觉我自己写得这个就挺好的。