412. Fizz Buzz [简单]

该文章描述了一个C语言编程问题,即实现FizzBuzz游戏的逻辑。通过for循环和条件判断,为1到n的每个数字生成相应的Fizz、Buzz、FizzBuzz或数字本身的字符串表示,并使用malloc动态分配内存来存储结果字符串数组。
摘要由CSDN通过智能技术生成

题目描述:

给你一个整数 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 (以字符串形式)如果上述条件全不满足。


解题思路:

这题本身很简单,只是没有给存储字符串的空间要自己malloc,而且连字符串空间也要malloc。

利用for循环,根据取余结果,输出不同字符串即可

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
char ** fizzBuzz(int n, int* returnSize){
    *returnSize=n;
    int i=0;
    char *arr=(char*)malloc(sizeof(char)*9*n);//创建能够存储字符的字符串,9是因为最大也就FizzBuzz+'\0'
    char **string=(char**)malloc(sizeof(char*)*n);//创建指向字符串的字符串指针,也就相当于创建了字符串数组
    for(i=0;i<n;i++)
    {
        string[i]=&arr[9*i];//给字符串数组指定空间
    }
    for(i=1;i<=n;i++)
    {
        if(i%3==0&i%5==0)strcpy(string[i-1],"FizzBuzz");
        else if(i%3==0)strcpy(string[i-1],"Fizz");
        else if(i%5==0)strcpy(string[i-1],"Buzz");
        else sprintf(string[i-1],"%d",i);
    }
    return string;
}

涉及到的 strcpy() 字符串拷贝函数 可以参考 《C Primer Plus》 P301

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值