陷阱: 用最大的n位数-1(数字太大可能产生越界) 应该采用字符串模拟数字自加! 代码如下: #include<iostream> using namespace std; int IsMax(char *number) { int nLength = strlen(number); int CarryBit = 0; bool ret = false; for (int i = nLength-1; i >= 0; i--) { int nSum = number[i] - '0' + CarryBit; if (i == nLength - 1) ++nSum; if (nSum >= 10) { if (i == 0) ret = true; else { nSum -= 10; CarryBit = 1; number[i] = '0' + nSum; } } else { number[i] = '0' + nSum; break; } } return ret; } void Print1ToN(int n) { if (n <= 0) return; char *number = new char[n+1]; memset(number, '0', n); number[n] = '\0'; while (!IsMax(number)) { cout << number << " " ; } } int main() { Print1ToN(10); getchar(); return 0; } 输出部分可以做一些优化将 从第一个不为0的开始输出。
从1打印到最大的n位数字(字符串模拟数字自加)
原创性感的玉米 ©著作权
文章标签 从1打印到最大n位数 剑指offer 文章分类 C/C++ 后端开发
-
java检测字符串是否包含数字和字母
Java检测字符串是否包含数字和字母
git 字符串 正则表达式 -
打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出
数据结构 c++ leetcode i++ Math -
打印出数字字符串的偶位数
打印出数字字符串的偶位数
C语言的一些基础程序 -
【剑指offer】打印1到最大的n数字
【剑指offer】打印1到最大的n数字
#include i++ 递归 初始化 全排列