劍指offer 列印1到最大的n位數

2021-08-26 14:59:41 字數 902 閱讀 3628

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

思路:這道題一看就是乙個大數問題。對於解決這個大數的問題,可以用到字串或者陣列都可以。

字串解法:

對於乙個字串的話,

首先要考慮申請空間的時候,要申請n+1個因為最後還有乙個』\0』

進行加法時從最後一位進行加法

判斷是否溢位,可採用看是否到第一位了並要進製了

**:

bool increment(char** ps)

//判斷是否溢位或者是進製

if (num >= 10)

else

}else

}return isoverflow;

}void printstr(char* str)

if (isbeginning)

}printf(" ");

}void print1tomaxndights(int n)

char* str = (char*)malloc(sizeof(char) * (n + 1));

if (str == null)

memset(str, '0', n);

str[n] = '\0';

while (!increment(&str))

free(str);

str = null;

printf("\n");

}int main()

陣列:對於陣列和字串差不多,只是將動態申請空間變成了整形的指標即可,後面就只需要整型了。

劍指offer 列印1到最大n位數

面試題12 題目 輸入數字n,按照順序答應出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的三位數即999。對於這道題進行時,咱們會進行一些分析,當你輸入3時,最大的三位數是999,這就是說這個最大的數是9 10 n 1 9 10 n 2 9 10 0。所以在這我想學習c語言的初...

劍指offer 列印1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999.1 這是乙個典型的大數加法問題,當面試官不允許使用biginteger實現大數加法的時候,通常是使用字串或者陣列實現其功能。2 在大數的加法中,我們需要注意的問題是對變數number不斷遞...

劍指offer 列印1到最大的n位數

輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。1到最大的n位十進位制數,其實就是n位數字的全排列 需要考慮long long不能存放的數字,只能用高精度的思想,也就是用陣列存放數字 符合正常的互動方式,也就是從第乙個非0的位置開始輸出 i...