好的,这并不是一个纯粹的fizzbuzz问题,而是一个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'是一个整数。我的问题是,有没有什么类型转换可以将'i'转换成一个字符串?
编辑:我应该提到,我真正想问的是是否可以使用单个打印语句完成这个fizzbuzz测试。除了好奇是否可以完成之外,没有特别的原因想要它成为单个打印语句。
编辑2:问题已解决,以下是我的实现:
#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);
}
printf
分开并使用if
,这样做更容易理解,同时也减少了混淆。 - Spikatrix