LeetCode 412. Fizz Buzz C语言

本文介绍如何使用C语言解决FuzzBuzz问题,重点讲解了二级指针的使用及整型到字符串的转换方法。文章通过具体示例代码演示了如何动态分配内存并填充数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目思路很简单,关键点在于函数返回值要符合题意要求。用C语言有几个要解决的问题。

1.二级指针的初始化和赋值

初始化:二维指针初始化分配空间分成两步操作:
  1. 先分配二维指针的行数
  2. 再分配每行的数据空间

赋值: 

如:引入一数组s[ ][ ],令p=s
p+i是数组s的第i行的首地址 
*(p+i)则是数组s第i行第1列的元素的地址


2.C语言整形转字符串.

一开始想要使用itoa().提示:implicit declaration of function itoa.原因是itoa()并不在C语言标准库里。所以要采用sprintf()


程序:

/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */
char** fizzBuzz(int n, int* returnSize) {
    char **temp;
    int i=0,m=16;
    temp=(char **)malloc( n*sizeof(char *) ); //分配n行
    for(i=0;i<n;i++ )
    {
        temp[i]=(char *)malloc( m*sizeof(char) ); //为每行分配m个数据空间
    }

    for(i=0;i<n;i++)
    {
        if((i+1)%15==0)
        *(temp+i)="FizzBuzz";
        else if((i+1)%3==0)
        *(temp+i)="Fizz";
        else if((i+1)%5==0)
        *(temp+i)="Buzz";
        else
        sprintf(*(temp+i), "%d", i+1);
    }

    *returnSize=n;
    return temp;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值