写一个程序,输出从 1 到 n 数字的字符串表示。
- 如果 n 是3的倍数,输出“Fizz”;
- 如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
“1”,
“2”,
“Fizz”,
“4”,
“Buzz”,
“Fizz”,
“7”,
“8”,
“Fizz”,
“Buzz”,
“11”,
“Fizz”,
“13”,
“14”,
“FizzBuzz”
]
思路:不需要
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
char** fizzBuzz(int n, int* returnSize) {
char **ret = (char **)calloc(n, sizeof(char *));
int i = 1;
for (; i <= n; i++){
if(0 == i % 3 && 0 != i % 5){
ret[i - 1] = (char *)calloc(5,sizeof(char));
snprintf(ret[i - 1], 5, "%s", "Fizz");
}else if(0 != i % 3 && 0 == i % 5){
ret[i - 1] = (char *)calloc(5,sizeof(char));
snprintf(ret[i - 1], 5, "%s", "Buzz");
}else if(0 == i % 3 && 0 == i % 5){
ret[i - 1] = (char *)calloc(9,sizeof(char));
snprintf(ret[i - 1], 9, "%s", "FizzBuzz");
}else{
ret[i - 1] = (char *)calloc(16,sizeof(char));
snprintf(ret[i - 1], 16, "%d", i);
}
ret[i - 1][strlen(ret[i - 1])] = '\0';
}
*returnSize = n;
return ret;
}