列印1到最大的n位數

2021-07-03 16:11:42 字數 1206 閱讀 1566

輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數即999。

解決這個問題需要表達一大數。最常用也是最容易的方法是用字串或者陣列表達大數。

printnumber函式中只有碰到第乙個非0的字元之後才開始列印,直至字串的結尾。

void printnumber(char* number)

}printf("\t");

}

如果在數字前面補0的話,就會發現n位所有十進位制數其實就是n個從0到9的全排列。也就是說,把數字的每一位都從0到9排列一遍,就得到了所有的十進位制數。只不過在列印的時候,數字排在前面的0不列印出來。

全排列使用遞迴實現。數字的每一位都可能是0~9中的乙個數,然後設定下一位。遞迴結束的條件是我們已經設定了數字的最後一位。

列印1到最大的n位數

輸入數字n,按順序列印出1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。方法1 利用case語句使字元 char charplus char a if numchar len 0 判斷是否向高位移動,如果該為由9 0,則向高位移動 if flag numchar ...

列印1到最大的n位數

劍指offer用的是字串,還要苦逼的字串比較,看是否進製。直接用整型陣列來儲存。include include using namespace std 乙個int儲存幾位數 const int int num 2 每位數最大值,超過這個要進製 不包括最高位 const int int max 99 ...

列印1到最大的n位數

1.問題描述 輸入數字n,按順序列印出從1刀最大的n位數的十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999.來自 劍指offer 2.分析 對於這個問題,我們需要考慮大數。因此我們在字串上模擬加法運算。3.ntakeover代表進製,isnotoverflow代表有沒有溢位 是不是...