列印從1到最大的n位數

2022-04-04 08:27:46 字數 747 閱讀 8227

面試題:輸入數值n,列印從1到最大的n位數,例如輸入n=3,則從1,2,3,一直列印到999

該題會考查大整數的加法,我之前做大整數運算時,為了圖方便,用整數陣列來表示,但這會浪費空間,這次我用字元陣列來表示,並且存數的時候是按正常順序來訪問

在判斷是否到達上限時,通過判斷最高位是否需要做進製運算來判斷,具體**如下:

#include #include #include #include #include using namespace std;

void print(char *num,int n)

if(sum>=10)

else

}else

}return overflow;

}void printallnum(int n)

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

memset(num, '0', n);

num[n]='\0';

while(!incnum(num,n))

delete num;

}int main()

第二種解法

n位數相當於對做個全排列,在輸出時,把前導的0去掉,就會輸出正確結果

#include #include #include //#include //#include using namespace std;

void printfinal(char *num,int n)

列印從1到最大的n位數

題目 輸入數字n,順序列印從1到最大n位的十進位制數,例如輸入3,列印1到999 includebool increment char number void printnumber char number void printtomaxofndigitsrecursively char numbe...

列印從1到最大的n位數

void print1tomaxofndigits int n 上面的 有個最嚴重的問題 沒有關注n的範圍 當輸入的n很大時,我們求最大的n位數用int或者long long都會溢位。也就是我們需要考慮大數問題。因為數字最大是n位,所以我們需要用乙個長度是n 1的字串 字串最後一位放 0 當實際的數...

列印從1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。思路 首先注意這是個大數問題,n很大的時候c 的int和long long都吃不消,所以數字的儲存要用字串 這裡我模擬了大數相加,只不過每次都是加1 另外要注意列印的問題,cout比較慢...