字串 列印1到最大的n位數

2021-07-11 23:02:46 字數 961 閱讀 4881

題目描述:

輸入位數n,要求列印出從1到最大的n位數。舉例來說,若輸入3,則列印1到 999 .

思路:

首先,不能簡單的使用int 或者 long 等型別來完成此題,因為要考慮大數問題,所以需要使用字串來模擬。方法是使用乙個長為 n+1 的陣列number[n+1]來實現,初始時把前n位的值置為 『0』 ,最後一位為 『\0』 ,然後每次取出第 n-1 位的字元(從0開始),將其轉換為整數並加一,考察其結果 res ,若res != 10,則直接將res轉為字元並存回number[n-1];若res == 10,則從第n-2位開始向第0位查詢,尋找第乙個不為 『9』 的位,將其加一,並把比它高的位全部置為 『0』。當所有位上的字元都是』9』時,程式結束.

#include 

#include

#include

#include

void print1tomax(int n);

void print1tomaxn(char *number);

int main()

void print1tomax(int n)

void print1tomaxn(char *number)

if(highbit < 0) //溢位,表示已到最大數,可以結束迴圈

break;

else

for(notzero = 0; notzero < len; notzero++) //列印時,從第乙個不為'0'的為開始

while(notzero < len)

printf("%c", number[notzero++]);

printf("\n");

}else

while(notzero < len)

printf("%c", number[notzero++]);

printf("\n");}}

}

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