2-12编程问题。
以下为我写的代码,请问怎么修改呢?以及帮我看下我的思路是否正确。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="#" method="post"> <input type="text" name="num" id="" placeholder="请输入打印的行数"> <br/> <input type="submit" name="b1" value="金字塔"> <input type="submit" name="b2" value="空心菱形"> </form> <?php header('content-type:text/html;charset=utf-8'); error_reporting(E_ALL&~E_NOTICE); //判断用户是否点击按钮 $i=$_POST['b1']; $k=$_POST['b2']; if ($i||$k) { //接收打印行数的数据 $hs = $_POST['num']; //判断输入的值是否为数值 if (is_numeric($hs) && $hs >= 0) { //接收金字塔的数据 for ($a = 1; $a <= $hs; $a++) { for ($b = $hs; $b > $a; $b--) { echo '<span style="color:#FFF">*</span>'; } for ($c = 1; $c <= 2 * $hs - 1; $c++) { echo '*'; } echo '</br>'; } //接收空心菱形的数据 //空心菱形的上部分 for ($a = 1; $a <= $hs; $a++) { for ($c = 1; $c <= $hs - $a; $c++) { echo ' '; } for ($b = 1; $b <= 2 * $a - 1; $b++) { if ($b == 1 || $b == 2 * $a - 1) { echo '*'; } else { echo ' '; } } echo '</br>'; } //空心菱形的下部分 for ($a = $hs - 1; $a >= 1; $a--) { for ($b = $hs; $b > $d; $b--) { echo ' '; } for ($c = 1; $c <= 2 * $a - 1; $c++) { if ($c == 1 || $c <= 2 * $a - 1) { echo '*'; } else { echo ' '; } echo '</br>'; } } } else { echo '层数请为正整数'; } } ?> </body> </html>
0
收起
正在回答 回答被采纳积分+1
1回答
imooc_澈
2018-09-21 18:47:27
你好,首先,关于金字塔和空心菱形的显示判断,目前不管我点击的是金字塔还是空心菱形,金字塔和空心菱形的代码都会执行,形成如下场景:
先把这两个判断分开,点击金字塔,就只显示金字塔,点击空心菱形就只显示空心菱形,如下:
空心菱形的判断就用if($k)即可。可以看到上图还有个红框标识的$a,循环输出*的时候,这里的变量应该是$a,而不是$hs,$hs的话就会出现前面那个图的样子,每一行星一样多。
其次,空心菱形的下半部分实现问题:
1 换行问题,换行位置写错了
2 循环输出规律问题,下半部分比上半部分少一行,但他们共用一条底边,每行的空格数和星的数量输出规律其实还是一样的,只是行计数倒过来了,修正如图:
如果解决了你的问题,请采纳,祝学习愉快~
PHP小白零基础入门
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星