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 份
- 解答问题 4928 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星