列印1到最大的n位數

2021-10-02 16:28:04 字數 1225 閱讀 5086

**如下,我們在這裡採用大數的運算,即用字串模擬實現,如果是n位數,那麼我們設定乙個n+1位的字串,最後一位為『0』,首先將內部每一位都置為0,然後計算,如果我們得出最後一位++小於等於9,則結束這次迴圈,如果else,則把這個位數是第一位,需要進製,那麼結束全部,已經到了最大的n位數了,否則,前一位加1,takeover表示進製,然後我們原本的那位就是減去10,註明,加減『0』表示的是由整型變成字串型,或者反過來。

#include

#include

using namespace std;

bool increment(char *number) {

int length = strlen(number);

bool is_overflow = false;

int takeover = 0;

for (int i = length - 1; i >= 0; --i) {

int num = number[i] - '0' + takeover;

if (i == length - 1)

++num;

if (num <= 9) {

number[i] = num + '0';

break;

else {

if (i == 0)

is_overflow = true;

else {

takeover = 1;

num -= 10;

number[i] = '0' + num;

return is_overflow;

void print_num(char *number) {

int length = strlen(number);

for (int i = 0; i < length; ++i) {

printf("%c", number[i]);

printf("\n");

int main() {

int n;

cin >> n;

char *number = new char[n + 1];

memset(number, '0', n);

number[n] = '\0';

while (!increment(number)) {

print_num(number);

delete number;

system("pause");

return 0;

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