題目:輸入數字n,按順序列印出1到最大的n位十進位制數。比如輸入3,則列印出1、2、3一直到最大的3位數即999。
在不考慮大數的情況下,直接迴圈列印直到最大的數。
在考慮大數的情況下:
1.開闢n+1個空間的char型陣列來儲存數字,最後一位賦值為『\0』,並且數字最高位對應陣列的0下標;
2.構建函式bool increment(char * number)實現數字的加1操作並且判斷是否溢位;
3.迴圈呼叫increment函式,溢位則終止迴圈,否則呼叫print函式列印數字。
**如下:
void printtomax(int實現加一操作的increment函式:1.分別用乙個標誌位(isoverflow)來控制是否溢位,另乙個標誌位(overstack)來控制是否有進製n)
delete
number;
}catch
(exception e)
}
2.給數字最低位加1之後,判斷它的值是否大於10:
如果大於10,自己-=10,高一位+1,並繼續判斷高一位和10的大小,依次類推(注意判斷當前位是否是最高位,是則溢位)
如果小於10,跳出迴圈函式返回true
**如下:
//列印字元陣列中數字的函式的實現(print):注意:陣列前面是高位,後面是低位,為了區分前面的0還是數字本身的0(例如5位陣列00101,前兩個0不必列印,第三個0需要列印),需要這是乙個標誌位(beginprint)來區分進行加1操作並判斷是否溢位
bool increment(char *number)
//判斷加一之後是否需要進製
if(digit>=10
)
//沒有溢位時候,進製標誌賦值1,當前位-=10
else
}//加1之後不需要進製,則直接跳出迴圈
else
}return
isoverflow;
}
**如下:
//測試**及執行結果:列印number中存的數字
void print(char *number)
cout
<
}
列印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代表有沒有溢位 是不是...