列印1到最大的n位數

2022-09-08 08:45:11 字數 1335 閱讀 4045

題目:輸入數字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

n)

delete

number;

}catch

(exception e)

}

實現加一操作的increment函式:1.分別用乙個標誌位(isoverflow)來控制是否溢位,另乙個標誌位(overstack)來控制是否有進製

2.給數字最低位加1之後,判斷它的值是否大於10:

如果大於10,自己-=10,高一位+1,並繼續判斷高一位和10的大小,依次類推(注意判斷當前位是否是最高位,是則溢位)

如果小於10,跳出迴圈函式返回true

**如下:

//

進行加1操作並判斷是否溢位

bool increment(char *number)

//判斷加一之後是否需要進製

if(digit>=10

)

//沒有溢位時候,進製標誌賦值1,當前位-=10

else

}//加1之後不需要進製,則直接跳出迴圈

else

}return

isoverflow;

}

列印字元陣列中數字的函式的實現(print):注意:陣列前面是高位,後面是低位,為了區分前面的0還是數字本身的0(例如5位陣列00101,前兩個0不必列印,第三個0需要列印),需要這是乙個標誌位(beginprint)來區分

**如下:

//

列印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代表有沒有溢位 是不是...