2-12编程问题。

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 '&nbsp';
 }
 for ($b = 1; $b <= 2 * $a - 1; $b++) {
 if ($b == 1 || $b == 2 * $a - 1) {
 echo '*';
 } else {
 echo '&nbsp';
 }
            }
 echo '</br>';
 }
//空心菱形的下部分
 for ($a = $hs - 1; $a >= 1; $a--) {
 for ($b = $hs; $b > $d; $b--) {
 echo '&nbsp';
 }
 for ($c = 1; $c <= 2 * $a - 1; $c++) {
 if ($c == 1 || $c <= 2 * $a - 1) {
 echo '*';
 } else {
 echo '&nbsp';
 }
 echo '</br>';
 }
        }
    } else {
 echo '层数请为正整数';
 }
}
?>
</body>
</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
imooc_澈 2018-09-21 18:47:27

你好,首先,关于金字塔和空心菱形的显示判断,目前不管我点击的是金字塔还是空心菱形,金字塔和空心菱形的代码都会执行,形成如下场景:


http://img1.sycdn.imooc.com//climg/5ba4ca340001bbbc02490609.jpg


先把这两个判断分开,点击金字塔,就只显示金字塔,点击空心菱形就只显示空心菱形,如下:

http://img1.sycdn.imooc.com//climg/5ba4ca9800018b7805750540.jpg

空心菱形的判断就用if($k)即可。可以看到上图还有个红框标识的$a,循环输出*的时候,这里的变量应该是$a,而不是$hs,$hs的话就会出现前面那个图的样子,每一行星一样多。

其次,空心菱形的下半部分实现问题:

1 换行问题,换行位置写错了

2 循环输出规律问题,下半部分比上半部分少一行,但他们共用一条底边,每行的空格数和星的数量输出规律其实还是一样的,只是行计数倒过来了,修正如图:

http://img1.sycdn.imooc.com//climg/5ba4cbf60001bdcb06150545.jpg

如果解决了你的问题,请采纳,祝学习愉快~

  • 提问者 幻梦若兮 #1
    为什么点击菱形没有反应呢? if ($k){ //判断输入的值是否为数值 if (is_numeric($hs) && $hs >= 0){ for ($a = 1; $a <= $hs; $a++) { for ($c = 1; $c <= $hs - $a; $c++) { echo '&nbsp'; } for ($b = 1; $b <= 2 * $a - 1; $b++) { if ($b == 1 || $b == 2 * $a - 1) { echo '*'; } else { echo '&nbsp'; } } echo '</br>'; } //空心菱形的下部分 for ($a = $hs - 1; $a >= 1; $a--) { for ($b = 1; $b<=$hs-$a; $b++) { echo '<span style="color:#FFF">*</span>'; } for ($c = 1; $c <= 2 * $a - 1; $c++) { if ($c == 1 || $c == 2 * $a - 1) { echo '*'; } else { echo '<span style="color:#FFF">*</span>'; } } echo '</br>'; } }else{ echo '层数为正整数'; } } ?>
    2018-09-21 20:44:44
  • 好帮手慕查理 回复 提问者 幻梦若兮 #2
    您好,问答已回,请查看:http://class.imooc.com/course/qadetail/69697。祝学习愉快!
    2018-09-23 11:35:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师