c語言程式碼比較18bb/16
阿新 • • 發佈:2018-11-11
kata:
比如說:
dig_pow(89, 1) should return 1 since 8¹ + 9² = 89 = 89 * 1 dig_pow(92, 1) should return -1 since there is no k such as 9¹ + 2² equals 92 * k dig_pow(695, 2) should return 2 since 6² + 9³ + 5⁴= 1390 = 695 * 2 dig_pow(46288, 3) should return 51 since 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51
我的程式碼:
正常的使用while (n)迴圈來獲得各位上的數。
別人的程式碼:
亮點在於用了數學方法 常用對數 來求位數;
雖然它或許可以直接用ceil向上取整
別人的程式碼2:
這個避免了使用迴圈來求各位上的數字,而是將其轉存為字串;
這裡介紹一下sprintf函式:
該函式在stdio.h中
用於將資料格式化後存入字元陣列中。
sprintf:存到字元陣列
printf:傳送到console
函式宣告是:
int sprintf(char *str, const char *format, ...)
第一個引數是目標字元陣列,第二個是格式說明,第三個是資料
注意中間的格式說明不一定單是說明符,
也可以是sprintf(str, "Pi 的值 = %f", M_PI);
最後用三目運算子代替if判斷
- ‘0’ 可以認為是將字元0轉成數字0,,實際是減去字元0的ascii碼,因為沒有字元型,都是int儲存,表面形式無所謂