2-12作业菱形部分实现不出来,是我代码打错了,还是思路有问题

2-12作业菱形部分实现不出来,是我代码打错了,还是思路有问题

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<form action="#" method="post">

<input type="text" name="num"> <br>

<button name="btn" value="1">金字塔</button>

<button name="btn" value="2">空心菱形</button>

</form>

</body>

</html>



<!-- 1代表金字塔 -->

<!-- 2代表菱形 -->


<?php

error_reporting(E_ALL&~E_NOTICE);

$btn = $_POST['btn'];

if($btn){


$num = $_POST['num'];

if(is_numeric($num)){


if($num > 0){


   if($btn == 1){    //金字塔

   for ($i=1;$i<=$num;$i++){

                    // 每层的空格数

   for($z=0;$z<$num-$i;$z++){

   echo '&nbsp;';

   }


   // 每层*的个数

   for ($j=0;$j<(2*$i-1);$j++){

   echo "<span>*</span>";

   }


   // 每层的空格数

   for($z=0;$z<($num-$i);$z++){

   echo '&nbsp;';

   }


   echo '<br>';

   }

   }


   if($btn == 2){  //菱形部分

   

   // 上半部

   for($i=1;$i<=$num;$i++){

   if($i == 1){

   for($j=0;$j<($num-1);$i++){

   echo '&nbsp;';

   }

   echo "<span>*</span>";

   for($j=0;$j<$num-1;$i++){

   echo '&nbsp;';

   }

   echo "<br>";

   continue;

   }

   if($i == 8){

   continue;

   }

   for($j=0;$j<($num-$i);$j++){

   echo '&nbsp;';

   }

   echo "<span>*</span>";

   $z = ($i-1);

   for($j=0;$j<($z*2-1);$j++){

   echo "<span>*</span>";

   }

   echo "<span>*</span>";

   for($j=0;$j<($num-$i);$j++){

   echo '&nbsp;';

   }

   echo "<br>";

   }


   // 中间

   echo "<span>*</span>";

   for($j=0;$j<$num-3;$j++){

   echo '&nbsp;';

   }

   echo "<span>*</span>";


   // 下半部

   for($i=1;$i<$num;$i++){

   if($i == 1){

   continue;

   }

   if($i == 8){

   for($j=0;$j<($num-1);$i++){

   echo '&nbsp;';

   }

   echo "<span>*</span>";

   for($j=0;$j<($num-1);$i++){

   echo '&nbsp;';

   }

   echo "<br>";

   continue;

   }

   $z = $i-1;

   for($j=0;$j<($z*2-1);$j++){

   echo '&nbsp;';

   }

   echo "<span>*</span>";

   $k = $num - $i;

   for($j=0;$j<($k*2-1);$j++){

   echo '&nbsp;';

   }

   echo "<span>*</span>";

   for($j=0;$j<($z*2-1);$j++){

   echo '&nbsp;';

   }

   echo "<br>";

   }


   }


   }else{

   echo '请输入大于0的数字';

   }


   }else{

   echo '请输入数字';

   }


  }


  ?>


正在回答

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

1回答

您好,空心菱形的思路是有问题的,空心菱形跟金子塔的思路类似,上半部分就是一个金子塔,只是把实心的金字塔中间的*都用空格代替,下半部分是一个倒着的金字塔,上下两个金字塔公用一条底边,你的金子思路没什么问题,不过只需要先输出每行前面的空格,再输出每行的*就可以了,后面每行的空格输出是多余的。如下:

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

空心菱形的输出上部分,先输出一个空心金子塔:金子塔每一行的第一个和最后一个输出*,其他的都是空格,这样就得到了空心菱形的上半部分

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

空心菱形的下半部分,一个倒着的空心金子塔,只不过行数少了一行,因为上下两半部分共用一条底边,因此总共有$num-1行,从$num-1开始,倒序循环,参考如下:

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

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

  • yjw123 提问者 #1
    非常感谢!
    2018-04-22 22:55:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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