【发布时间】:2015-06-16 23:03:26
【问题描述】:
好的,这确实不是一个 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' 是一个 int。 我的问题是,我可以应用任何类型的转换来将“i”转换为字符串吗?
编辑:我应该提一下,我真正要问的是这个 fizzbuzz 测试是否可以使用单个 print 语句来完成。没有什么特别的原因我希望它是一个单独的打印语句,除了好奇它是否可以完成。
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);
}
【问题讨论】:
-
为什么不直接使用
%d? -
那我该如何打印字符串呢?
-
将
printfs 分开并使用ifs。这样更容易,也减少了混乱。 -
三元运算符 = 面试失败。
-
对我来说听起来更像codegolf.stackexchange.com ...