FizzBuzz 问题
刚才在csdn看到一篇文章,名为《独家:怎样用最简单的方法测试出来谁会编程 谁不会编程》,里面讲了一个FizzBuzz问题,说可以通过这个程序的编写来测试谁会编程。http://news.csdn.net/n/20070305/101739.html
“写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。
大多数好的程序员应该可以在几分钟之内在纸上写出这个程序。令人惊讶的是,绝大多数计算机科学与技术的本科生不会。我看到有很多自学的高级程序员写出一个方案要花大于10-15分钟。””(原文引用)。
我,一个计算机本科生花了七,八分钟写了个。感觉不是很好,希望大家有更好的贴出来。
我的代码:
#include "stdio.h "
#include "conio.h "
main()
{
int i;
for(i=1;i <101;i++)
{
if(i%3==0)
{
if(i%5==0)
printf( "FizzBuzz ");
else
printf( "Fizz ");
}
else if(i%5==0)
printf( "Buzz ");
else
;/*Do nothing*/
}
getch();
}
[解决办法]
#include <iostream.h>
int main()
{
char *BZ[] = { "FizzBuzz ", "Fizz ", "Buzz "};
for (int i=1; i <=100; ++i)
{
switch(i%15)
{
case 0:
cout < <BZ[0] < <endl;
break;
default:
switch(i%3)
{
case 0:
cout < <BZ[1] < <endl;
break;
default:
switch (i%5)
{
case 0:
cout < <BZ[2] < <endl;
break;
default:
cout < <i < <endl;
}
}
break;
}
}
return 1;
}
---------------
5分钟搞定
[解决办法]
#include <iostream.h>
int main()
{
char *BZ[] = { "FizzBuzz ", "Fizz ", "Buzz "};
for (int i=1; i <=100; ++i)
{
int m = (i%15==0? 0:(i%3==0? 1:(i%5==0? 2:-1)));
if (m != -1)
{
cout < <BZ[m] < <endl;
}
else
{
cout < <i < <endl;
}
}
return 1;
}
来个简单的
[解决办法]
#include <stdio.h>
void main(void)
{
int i;
for(i = 1; i <= 100; i++) {
if(i % 3 == 0 && i % 5 == 0)
printf( "FizzBuzz\n ");
else if(i % 3 == 0)
printf( "Fizz\n ");
else if(i % 5 == 0)
printf( "Buzz\n ");
else
printf( "%d\n ", i);
}
}