LeetCode412.Fizz Buzz

412.Fizz Buzz

题目描述

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

char ** fizzBuzz(int n, int* returnSize)
{
    char** answer = (char**)malloc(sizeof(char*)*n);
    *returnSize = n;
    for(int i = 1;i < n+1;i++)
    {
        answer[i-1] = (char*)malloc(sizeof(char)*9);
        if(i%3==0 && i%5 ==0)
        {
            answer[i-1] = "FizzBuzz";
        }
        else if(i%3 == 0)
        {
            answer[i-1] = "Fizz";
        }
        else if(i%5 == 0)
        {
            answer[i-1] = "Buzz";
        }
        else
        {
            sprintf(answer[i-1],"%d",i);
        }
    }
    return answer;
}

解题思路

1、定义二级指针answer,并malloc开辟n个(char*)长度的空间;

2、讲二级指针看成是一个数组,每个成员的空间为9个字节

3、sprintf(answer[i-1],“%d”,i);,把i的值传到answer指针中

补充知识

sprintf是一个常见的格式化字符串函数,用于将格式化的数据写入字符串中。它的语法如下:

int sprintf(char *str, const char *format, ...);

这个函数接受一个字符串 str,一个格式化字符串 format,以及一系列要被格式化插入的参数。函数将根据指定的格式将数据写入到字符串str 中,并返回写入的字符数(不包括结尾的空字符)。

下面是一个示例,演示了如何使用 sprintf:

#include <stdio.h>

int main() {
    char buffer[100];
    int num = 42;
    float pi = 3.14159;

    sprintf(buffer, "The number is %d and the value of pi is %.2f", num, pi);
    printf("Formatted string: %s\n", buffer);

    return 0;
}

输出:

Formatted string: The number is 42 and the value of pi is 3.14

在上面的示例中,我们使用 sprintf 将整数 num 和浮点数 pi 格式化插入到字符串 buffer 中。格式化字符串 “The number is %d and the value of pi is %.2f” 定义了如何插入这些值。%d 是一个占位符,用于插入整数值,%.2f 是一个占位符,用于插入浮点数值(保留两位小数)。

需要注意的是,在使用 sprintf 时,确保目标字符串 str 能够容纳足够的空间,以避免发生缓冲区溢出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值