题目:
给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:
answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
answer[i] == "Fizz" 如果 i 是 3 的倍数。
answer[i] == "Buzz" 如果 i 是 5 的倍数。
answer[i] == i (以字符串形式)如果上述条件全不满足。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/fizz-buzz
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
上代码:
char ** fizzBuzz(int n, int* returnSize){
*returnSize=n;
int i=0;
//创建指向字符串的字符串指针
char **arr=(char**)malloc(sizeof(char*)*n);
for(i=1;i<=n;i++)
{
arr[i - 1]=(char*)malloc(sizeof(char )*9);//创建能够存储字符的字符串
if(i%15==0){ //同时满足既是3的倍数又是5的倍数的数是15的倍数
arr[i - 1] = "FizzBuzz";
}
else if(i%3==0){
arr[i - 1] = "Fizz";
}
else if(i%5==0){
arr[i - 1] = "Buzz";
}
else { sprintf(arr[i - 1],"%d",i);
}
}
return arr;
}
fizzBuzz的调用及空间释放:
#include <stdio.h>
#include <stdlib.h> //malloc()函数和free()的头文件
int main()
{
int *retSize;
char ** str = fizzBuzz(15, &retSize);
for(int i = 0;i < retSize; i++ ){
puts(str[i]);
}
free(str); //释放空间,防止内存泄漏
//free只是清空堆空间,必须将指针指向NULL,不然会变成悬空指针。
str = NULL;
system("pause"); //暂停
system("cls"); //清屏
return 0;
}