660
社区成员




for (var i = 1; i < 101; i++) {
var outp = i;
if (i % 3 === 0) {
outp = "Fizz";
}
if (i % 5 === 0) {
if (outp === "Fizz") {
outp = "Fizz-Buzz";
} else {
outp = "Buzz";
}
}
console.log(outp);
}
<?php
for($i=1;$i<=100;$i++)
{
if($i%3==0 && $i%5==0){
echo "Fizz-Buzz"."<br>";
}elseif($i%3==0){
echo "Fizz"."<br>";
}elseif($i%5==0){
echo "Bizz"."<br>";
}else{ echo $i."<br>";
}
}
?>
我承认用了半个小时!
for (int i = 1; i <= 100; i++)
{
if (i % (3 * 5) == 0)
{
Console.WriteLine("Fizz-Buzz");
}
else if (i % 3 == 0)
{
Console.WriteLine("Fizz");
}
else if (i % 5 == 0)
{
Console.WriteLine("Buzz");
}
}
于是,我着手设计了一些问题,专门用于甄别这类开发人员。最终,借鉴一个英国学校里小孩子经常玩的游戏(也许是被逼着去玩的),我把这些问题归类称作为"Fizz-Buzz"问题。一个典型的"Fizz-Buzz"问题如下:
编写一个程序把1~100的数字打印出来。不过,要把3的倍数打成"Fizz"(而不要打数字),把5的倍数打成"Buzz"。而如果一个数既是3的倍数。又是5的倍数时,那就打成"Fizz-Buzz"。
大部分优秀的程序员都应该能在纸上轻易地把这个程序写出来,也就几分钟的事情。但你想知道一个令人震惊的事实吗?多数计算机科学专业的毕业生不会做这道题。我还见过一个自称是高级程序员的人做这道题,他居然花了10~15分钟。
Dan Kegel在招聘初级程序员的时候,也经历了类似的事情:
令人惊讶的是,有相当一部分的应聘者(包括那些获得计算机科学专业的硕士或博士学位的人),当他们被要求完成一个基本的编程任务时,他们都通不过,因此面试失败。举例来说,我曾经碰到过一些毕业生,他们居然回答不出"写一个从1数到10的循环"或者"在16进制里F后面的数是什么"之类的问题。如果务实一点,我在面试中也碰到过很多应聘者,他们不会用递归去解决一个实际的问题。但这些都是基本的技能。如果他们不会,只能说明他们很可能根本就没写过程序。
原书中的部分章节....
请自测的同学,写了代码后,标注时间呀 嘿嘿
//编写一个程序把1~100的数字打印出来。不过,要把3的倍数打成"Fizz"(而不要打数字),把5的倍数打成"Buzz"。而如果一个数既是3的倍数。又是5的倍数时,
//那就打成"Fizz-Buzz"。据作者说,这个题目好多计算机科学专业的博士都不能现场写出来,更有多年经验自称高级程序员的也不能在几分钟内写出来... 好多要耗时 10分钟以上。。。
for (int i = 1; i <= 100; i++)
{
if (i % 15 == 0)
{
Console.WriteLine(i+":Fizz-Buzz");
}
else if (i % 5 == 0)
{
Console.WriteLine(i+":Buzz");
}
else if (i % 3 == 0)
{
Console.WriteLine(i+":Fizz");
}
}
Console.ReadKey();