題目:輸入數字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...