/*題目: 列印1到最大的n為數字。
比如:輸入3,列印1到999.
解題思路,這是乙個大數的問題。做大數的自加運算。但是要注意2點。
(1):判斷是否越界,換句話說,就是達到最大值時的判別。可以選擇strcmp,但是複雜度時o(n),
因為只有在進製的時候才會有越界的可能,並且只有99...999 向上進製時才會越界,所以判斷 i是否為0。
(2):輸出時,注意,把0去掉,0098,變成98. */
#include #include using namespace std;
//判斷是否達到最大值,退出輸出。只有當最高一位實現進製的時候,就是溢位了。
bool isoverflow(char *number)
ntakeover = 1;
nsum -= 10;
number[i] = '0' + nsum;
} else //不大於10,復值,並就退出迴圈
}return isoverflow; //返回是否越界符號。
}//列印數字,注意字串前端為0的不列印,比如098,只列印98。
void printnumber(char *number)
cout << '\t';
}void formonetonum(int num)
//字串 結尾要加入 \0,所以長度加1
char *number = new char[num + 1];
memset(number, '0', num);
number[num] = '\0';
while (!isoverflow(number))
deletenumber;
}int main()
12 列印 1 到最大的 n 位數
題目 輸入數字 n,按順序列印出從 1 到 最大的 n 位十進位制數。比如輸入 3 則列印出 1 2 3 一直到最大的3位數即 999。解析 容易知道不能用 int 等數字型別表示 大數問題 關鍵點 1.如何用字串表示n位數?2.如何實現字串數的自增操作?3.如何列印乙個字串數?申請長度是n 1的字...
12 列印1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,列印出1,2,3一直到最大的3位數即999.n的取值範圍可以很大,考慮大數問題。最常見的方法是用字串或者數字表達大數。把問題轉換成數字排列問題。思考 如何用字串儲存數字 如何在字串表達的數字上模擬加法 把字串表達是數字列印出來 incl...
Q12 列印1到最大的n位數
2016 07 13 q12 列印1到最大的n位數 public classq12 最基本的解法,存在越界溢位現象,不穩定。public voidprint1tomaxofndigits 1 intn for i 0 isystem.out println i 把問題轉換成數字排列的問題,利用遞迴實...