首页 > 技术文章 > FizzBuzz问题

91Kesson 2014-04-23 16:31 原文

故事:

  Reginald Braithwaite认为,很多人和他一样遇到了这样的问题:”当一个人遇到200个申请编程工作的人中有199个完全不能写代码的时候,你就会和他一样感到困惑。
我重申一下:他们什么代码都写不出来。”
  刚才所提到的人就是Imran,他直接拒绝了很多不能写出简单程序的程序员:
  “在一些公平的考验之后,我发现那些因为代码而抓狂的人不是为了庞大的项目,而是在细小的地方就缠不休。所以我开始研究这些问题,收集这些编程人员的特点和归结成一类问题,取名为“FizzBuzz 问题”。 FizzBuzz问题是一种英国学校学生经常玩的游戏:

问题:

  从1数到100,如果遇见了3的倍数要说Fizz,5的倍数到说Buzz,如果即是3的倍数又是5的倍数要说FizzBuzz。

解决方案:

1、应用语法:if...else...

void FizzBuzz1()
{
    for (int i =1; i<=100; i++)
    {
        if ( i % 15 == 0)
        {
            printf("FizzBuzz\n");
        } 
        else if ( i % 5 == 0)
        {
            printf("Buzz\n");
        } 
        else if( i % 3 == 0)
        {
            printf("Fizz ");
        }
        else
        {
            printf("%d ", i);
        }
    }
}
View Code


2、应用语法: i > j ? i : j

 

void FizzBuzz()
{
    int idx = 0;
    while(idx < 100)
    {
        idx/5%3 == 0 ? printf("%d %d Fizz %d Buzz\n", 1+idx, 2+idx, 4+idx)
            : (idx/5%3 == 1) ? printf("Fizz %d %d Fizz Buzz\n", 2+idx, 3+idx) 
            : printf("%d Fizz %d %d FizzBuzz\n", 1+idx, 3+idx, 4+idx);
        idx += 5;
    }
}

 

推荐阅读