我对FizzBuzz问题的小小思考

来源:互联网 发布:淘宝助理5.6.9.0 编辑:程序博客网 时间:2024/05/21 06:15


援引http://news.csdn.net/n/20070305/101739.html的文章,举个“FizzBuzz”问题的例子:


写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。


#include <stdio.h>#include <stdlib.h>int main(){    int i;    int Step3 = 1, Step5 =1;/*步长计数*/    int FizzStat = 0, BuzzStat = 0, FizzBuzzStat = 0;    for(i=1; i<=100; i++)    {        if( (3==Step3) && (5==Step5) )        {            printf("%d: FizzBuzz\n", i);            Step3 = 1;            Step5 = 1;            FizzStat++;            BuzzStat++;            FizzBuzzStat++;        }        else if( 3==Step3 )        {            printf("%d: Fizz\n", i);            Step3 = 1;            Step5 ++;            FizzStat++;        }        else if( 5==Step5 )        {            printf("%d: Buzz\n", i);            Step3 ++;            Step5 = 1;            BuzzStat++;        }        else        {            printf("%d: not Fizz Buzz\n", i);            Step3++;            Step5++;        }    }    printf("total Fizz = %d, total Buzz = %d, total FizzBuzz = %d\n", FizzStat, BuzzStat, FizzBuzzStat);    return 0;}


使用步长计数代替了对每个数的多次求余操作,程序的统计结果:total Fizz = 33, total Buzz = 20, total FizzBuzz = 6。


今天偶然看到了”FizzBuzz“问题,上面是我的一点小小思考,欢迎大家交流探讨。