12 列印1到最大的N為數字。

2022-05-03 06:36:08 字數 890 閱讀 3248

/*

題目: 列印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 把問題轉換成數字排列的問題,利用遞迴實...