close

Write a program that outputs the string representation of numbers from 1 to n.

But for multiples of three it should ouput "Fizz" instead of the number and for the multiples of five output "Buzz". For numbers which are multiples of both three and five output 'FizzBuzz"

這也是很簡單的題目,判斷三的倍數、五的倍數、三或五的公倍數

但我卻有用google找一些資料,原因是下面這句話

return an array of size *returnSzie

note: the returned array must be malloced, assume caller calls free()

以及他的回傳格式,讓我很模糊

Return:
[
    "1",
    "2",
    "Fizz",
    "4",
    "Buzz",
    "Fizz",
    "7",
    "8",
    "Fizz",
    "Buzz",
    "11",
    "Fizz",
    "13",
    "14",
    "FizzBuzz"
]

我要回傳一個陣列,但我並不清楚回傳的格式

先弄清楚第一句話,因為C語言在回傳陣列時,其實是傳記憶體位址,因此必須要加上陣列的大小。所以在回傳前,必須assign returnSzie的大小。

再來是我一直沒弄得很清楚的記憶體配置,malloc, calloc, free。

我在網路上看到有人使用calloc,我就如法泡製。

先分配記憶體給我的陣列(字串陣列)

char **result = (char **)calloc(1, n*sizeof(char **))

我分配一份n個char**的空間

接著分配給一維陣列(字串)

for(i=0; i<n; i++)

  result[i]=(char *)calloc(1, 16*sizeof(char *))

這邊是分配一份16個char大小的空間來存字串

弄懂了這個後,就容易了。

回傳格式其實只是看起來嚇人,就只是把字串放進去就好。

因為照我從簡單的開始解,要解完全部easy的題目好像有點久,所以我今天就再解一題,為了記錄還延後了買飯的時間XD

知道了這個回傳的格式,之後會更順利~

去買飯 GOGO

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Davis 的頭像
    Davis

    Epoch

    Davis 發表在 痞客邦 留言(0) 人氣()