Hello其他程序员。 我对如何在优雅的解决方案中解决这个问题感到有点困惑。 这是我正在研究的一本书的练习,但没有解决方案。 感谢有关如何解决此问题的任何帮助。这是:
编写一个程序,打印1到100之间的数字
对于三个打印“Hello”而不是数字的倍数。 对于五个打印“世界”的倍数。 对于三和五的倍数的数字打印“HelloWorld”。
感谢您的帮助
for ($i=1; $i<=100; $i++){
echo $i;
if(multiple_three($i) && multiple_five($i)) echo 'HelloWorld';
else{
if(multiple_three($i)) echo 'Hello';
if(multiple_five($i)) echo 'World';
}
}
function multiple_three($i)
{
if($i % 3 == 0) return true;
else
return false;
}
function multiple_five($i)
{
if($i % 5 == 0) return true;
else
return false;
}
我提出了这些简单的解决方案,但我仍然没有解决我需要编写单词而不是数字的问题。在此代码中,编号无论如何都是
答案 0 :(得分:0)
您没有按正确的顺序处理测试,而且您总是在没有任何测试的情况下打印该数字。根据您的解释,逻辑应该是这样的:
嗯,代码看起来与上面的解释完全相同
for ($i=1; $i<=100; $i++){
if(multiple_three($i) && multiple_five($i)) {
echo "HelloWorld\n";
} else if (multiple_three($i)) {
echo "Hello\n";
} else if(multiple_five($i)) {
echo "World\n";
} else {
echo $i . "\n";
}
}
我还添加了一些换行符以改善输出。输出如下:
1
2
Hello
4
World
Hello
7
8
Hello
World
11
Hello
13
14
HelloWorld
16
...
在线测试:
http://sandbox.onlinephpfunctions.com/code/5adc36408c3067a93a75c20aa71d2aad510d6eba
编辑(脸颊):嗯,没有明确的if / else就可以完成,就像这样for ($i=1; $i<=100; $i++){
echo ($i%15?$i%5?$i%3?$i:"World":"Hello":"HelloWorld")."\n";
}
但我在这里有一些评论:
:)