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 ' ';
}
// 每层*的个数
for ($j=0;$j<(2*$i-1);$j++){
echo "<span>*</span>";
}
// 每层的空格数
for($z=0;$z<($num-$i);$z++){
echo ' ';
}
echo '<br>';
}
}
if($btn == 2){ //菱形部分
// 上半部
for($i=1;$i<=$num;$i++){
if($i == 1){
for($j=0;$j<($num-1);$i++){
echo ' ';
}
echo "<span>*</span>";
for($j=0;$j<$num-1;$i++){
echo ' ';
}
echo "<br>";
continue;
}
if($i == 8){
continue;
}
for($j=0;$j<($num-$i);$j++){
echo ' ';
}
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 ' ';
}
echo "<br>";
}
// 中间
echo "<span>*</span>";
for($j=0;$j<$num-3;$j++){
echo ' ';
}
echo "<span>*</span>";
// 下半部
for($i=1;$i<$num;$i++){
if($i == 1){
continue;
}
if($i == 8){
for($j=0;$j<($num-1);$i++){
echo ' ';
}
echo "<span>*</span>";
for($j=0;$j<($num-1);$i++){
echo ' ';
}
echo "<br>";
continue;
}
$z = $i-1;
for($j=0;$j<($z*2-1);$j++){
echo ' ';
}
echo "<span>*</span>";
$k = $num - $i;
for($j=0;$j<($k*2-1);$j++){
echo ' ';
}
echo "<span>*</span>";
for($j=0;$j<($z*2-1);$j++){
echo ' ';
}
echo "<br>";
}
}
}else{
echo '请输入大于0的数字';
}
}else{
echo '请输入数字';
}
}
?>
正在回答
您好,空心菱形的思路是有问题的,空心菱形跟金子塔的思路类似,上半部分就是一个金子塔,只是把实心的金字塔中间的*都用空格代替,下半部分是一个倒着的金字塔,上下两个金字塔公用一条底边,你的金子思路没什么问题,不过只需要先输出每行前面的空格,再输出每行的*就可以了,后面每行的空格输出是多余的。如下:
空心菱形的输出上部分,先输出一个空心金子塔:金子塔每一行的第一个和最后一个输出*,其他的都是空格,这样就得到了空心菱形的上半部分
空心菱形的下半部分,一个倒着的空心金子塔,只不过行数少了一行,因为上下两半部分共用一条底边,因此总共有$num-1行,从$num-1开始,倒序循环,参考如下:
如果解决了你的问题,请采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星