陷阱: 用最大的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位數字(字符串模擬數字自加)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.