使用字符串方法在 C 中的 fizzbuzz 中出现错误?

问题描述 投票:0回答:2

因此我尝试使用字符串方法来改进代码来解决各种语言中的 FizzBuzz 挑战。我被困在 C 语言中,因为这里的工作方式不同。 这是我的代码,我遇到错误,任何人都可以向我解释它们并帮助获得正确的代码。

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n;
    char output;
    printf("Enter Range: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        if(i%3==0)
            strcat(output,"Fizz");
        if(i%5==0)
            strcat(output,"Buzz");
        if(output=="\0")
            strcat(output,i);

        printf("\ni");
    }
    printf("\nEnd.\n");
    return 0;
}

谢谢。

c c-strings fizzbuzz
2个回答
0
投票

@阿什维尼·辛格

您的代码中有一些错误,

1) 您将

output
变量声明为 char 数据类型并在 char 中的
Fizz/Buzz
中连接字符串。那么如何将字符串(这是一个字符数组)的值放置在字符
output
中。

2) 您将整数值

i
与字符
output
连接起来,例如
strcat(output,i)
。我们需要首先将整数值
i
转换为 char/string 数据类型,然后与
output
连接。

FizzBuzz 程序的条件是,

1) 如果数字是 3 的倍数,则在结果字符串中添加 Fizz

2) 如果数字是 5 的倍数,则在结果字符串中添加 Buzz

3) 如果数字既不是 3 的倍数也不是 5 的倍数,则在结果字符串中添加数字

代码:

#include<stdio.h>
#include<string.h>
int main()
{
int i,n;
char output[100]=" ";
printf("Enter Range: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    char s[] = {'0' + i, '\0'};
    if(i%3==0)
        strcat(output,"Fizz ");
    else if(i%5==0)
        strcat(output,"Buzz ");
    else
        strcat(strcat(output,s)," ");
}
puts(output);
return 0;
}

输出:

Enter Range: 10                                                                  
 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 

0
投票

我想我已经找到了一个很好的解决方案,我还没有找到许多其他使用字符串的 C 语言 Fizzbuzz 解决方案,所以这里是:

    #include <stdio.h>
    #include <string.h>

    int main() {
      int i, length;
      printf("Length of FizzBuzz: ");
      scanf("%d", &length);
      char output[1000] = " ";
      for (i = 1; i <= length; i++) {
        if (i % 3 == 0) {
          strcat(output, "Fizz");
        }
        if (i % 5 == 0) {
          strcat(output, "Buzz");
        }
        if ((i % 3 != 0) && (i % 5 != 0)) {
          char istr[50];
          sprintf(istr, "%d", i);
          strcat(output, istr);
        }
        strcat(output, " ");
      }
      strcat(output, "\n");
      printf(output);
      return 0;
    }

虽然我没有动态生成输出的大小,但 1000 对于 Fizzbuzz 中通常使用的 100 来说效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.