12 列印 1 到最大的 n 位數

2021-07-03 15:36:27 字數 1142 閱讀 3318

題目:輸入數字 n,按順序列印出從 1 到 最大的 n 位十進位制數。比如輸入 3 ,則列印出 1、2 、3 一直到最大的3位數即 999。

解析:

容易知道不能用 int 等數字型別表示(大數問題)

關鍵點:

1. 如何用字串表示n位數?

2. 如何實現字串數的自增操作?

3. 如何列印乙個字串數?

- 申請長度是n+1的字元陣列number。 number[0] 是最高位, number[n-1]最低位, number[n] = 『\0』

- 首先把字串中的每乙個數字都初始化為』0』 (注意是字元』0』,不是0),然後每一次為字串表示的數字加 1.

- 自增操作時,通過最高位是否會產生進製來判斷是否到達最大數。

- 列印字串數時,應該省略掉高位的無效0

#include 

#include

using

namespace

std;

bool increment(char* number, int n);

void printnum(char* number, int n);

void print1tomaxofndigits(int n)

delete number;

}bool increment(char* number, int n)

else

}return

true;

}void printnum(char* number, int n)

int main()

我們把每位數字都從 0~9 排列一遍就能得到所有的十進位制數,只是列印時省略掉高位無效 0

通過遞迴實現,從最高位開始,每一位都可能是0~9中的乙個數,針對每一種可能設定下一位。遞迴結束條件是當我們設定了數字的最後一位。

void print1tomaxofndigits2(int n) 

void print1tomaxofndigits2recurisively(char* number, int len, int

index)

for (int i = 0; i < 10; i++)

}

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

面試題12 列印1到最大的n位數

題目 輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數即999.題目陷阱 大數問題 在字串上模擬數字加法的解法 void print1tomaxofndigits int n delete number 如何在每一次增加1之後快速判斷是不是到了最大...