gpt4 book ai didi

c - C 语言 Fizzbuzz 程序

转载 作者:行者123 更新时间:2023-12-01 20:19:44 25 4
gpt4 key购买 nike

好吧,这确实不是一个杂乱的问题,而是一个 C 问题。

我用 C 语言编写了一些简单的代码,用于根据需要打印出 fizzbuzz。

#include <stdio.h>

int main(void)
{
int n = 30;
int i;
for (i = 1; i<=n; i++)
printf("%s\n", (i % 15) == 0 ? "fizzbuzz" : (i % 5) == 0 ? "buzz" : (i % 3) == 0 ? "fizz" : i);
}

现在,最后一个 else 语句显然不起作用,因为 printf 接受字符串,而“i”是 int。我的问题是,是否可以应用任何类型的转换将“i”转换为字符串?

编辑:我应该提到,我真正要问的是这个 fizzbuzz 测试是否可以使用单个打印语句来完成。除了好奇是否可以完成之外,没有什么特别的原因让我希望它成为一个单一的打印语句。

EDIT2:问题得到解答,这是我的实现:

#include <stdio.h>

int main(void)
{
int i, n=30;
for (i = 1; i<=n; i++)
printf((!(i%3) || !(i%5)) ? "%s\n" : "%d\n", !(i % 15) ? "fizzbuzz" : !(i % 5) ? "buzz" : !(i % 3) ? "fizz" : i);
}

http://codepad.org/DN7yBW99

最佳答案

由于您尝试将所有逻辑放入 printf 调用中,您已将自己逼入绝境。最好先以“慢”的方式写出来,然后再寻找优化的方法。

for (i = 1; i <= n; i++) {
if (i % 15 == 0)
printf("fizzbuzz\n");
else if (i % 5 == 0)
printf("buzz\n");
else if (i % 3 == 0)
printf("fizz\n");
else
printf("%d\n", i);
}

附录:仅用一个 printf 即可完成...

/* The following code is NOT recommended... */

int isFizz = (i % 3 == 0 ) ? 1 : 0;
int isBuzz = (i % 5 == 0 ) ? 1 : 0;
int isFizzBuzz = (isFizz && isBuzz) ? 1 : 0;

printf(
(isFizz || isBuzz) ? "%s\n" : "%d\n",
(
isFizzBuzz ? "fizzbuzz" :
isFizz ? "fizz" :
isBuzz ? "buzz" :
i
)
);

http://codepad.org/LMr5WdIm

关于c - C 语言 Fizzbuzz 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29574784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com