1

当我们写 fizzbuzz 脚本时,为什么要测试它是否等于 0?还是我误会了?

示例:$i % 3 == 0

<?php
for ($i=1; $i<=100; $i++) {
    if ($i%3==0 && $i%5==0) {
        echo 'FizzBuzz';
    }else if($i%3==0){
        echo 'Fizz';
    }else if($i%5==0){
        echo 'Buzz';
    }else{
        echo $i;
    }
    echo "\n";
}
4

3 回答 3

3

如果一个数能被 3 整除,程序 fizzbuzz 打印“fizz”,如果一个数能被 5 整除,则打印“buzz”,如果一个数能被两者整除,则打印“fizzbuzz”。

您的程序不检查数字是否等于 0,而是使用modulo运算符检查余数是否为 0。

$i%3==0表示数字可以被 3 整除

$i%5==0表示数字可以被 5 整除

$i%5==0 && $i%3==0表示该数字可以被两者整除

于 2014-11-16T20:23:19.627 回答
0
<?php
array_map(function($l) {
  echo $l . PHP_EOL;
}, array_map(function($i) {
  $is_fizz = ($i % 3) === 0;
  $is_buzz = ($i % 5) === 0;
  return (!$is_fizz && !$is_buzz) ? $i : 
    ($is_fizz ? 'Fizz' : '') . ($is_buzz ? 'Buzz' : '');
}, range(1 , 100)));
于 2019-09-25T18:09:05.843 回答
0

更简洁但更难阅读的解决方案:

for ($i=1;$i<=100;$i++) { 
    print ( (fmod(($i/3),1)  ?  '' : "fizz") . (fmod(($i/5),1)  ?  '' : "buzz")  ?:  ("$i") ) ."\n"; 
}
于 2020-03-03T17:54:32.590 回答