好吧,这真的不像是一个 C 问题那样是一个 Fizzbuzz 问题。
我在 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);
}