2-13作业,请老师查阅
来源:2-13 作业题
Vcooli
2019-08-18 18:35:44
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图形作业</title>
</head>
<body>
<form action="#" method="post">
<input type="text" id="" name="scanf" placeholder="请输入要打印的行数"/>
<br/>
<input type="submit" value="金字塔" name="king"/>
<input type="submit" value="空心菱形" name="ling"/>
</form>
<?php
//判断是否有_POST数据
error_reporting(E_ALL&~E_NOTICE);
if($_POST){
$king=$_POST['king'];//用户点击金字塔按钮
$ling=$_POST['ling'];//用户点击空心菱形按钮
$scanf=$_POST['scanf'];//用户输入的值
if (is_numeric($scanf) && ($scanf>0)){//判断用户输入的值必须为大于0的正数
floor($scanf);//把浮点型取整
}else{
exit('非法数值,请重新输入');
}
if ($king){
$tr=1;//打印行数
while ($tr<=$scanf){
$null=1;//打印的空白
while ($null<=$scanf-$tr){
echo "<span style=\"color:white\">*</span>";
$null++;
}
$star=1;//每行打印的星星的数量
while($star<=$tr*2-1){
echo '*';
$star++;
}
$tr++;
echo '<br/>';
}
}
elseif($ling){
$tr=1;//行数
while($tr<=$scanf){
$null=1;//空白数量
while($null<=$scanf-$tr){
echo "<span style=\"color:white\">*</span>";
$null++;
}
$star=1;//星星位置
while($star<=$tr*2-1){
if ($star==1||$star==2*$tr-1){//根据位置显示'*'
echo '*';
}else{
echo "<span style=\"color:white\">*</span>";
}
$star++;
}
$tr++;
echo '<br/>';
}
//菱形下半部分
$tr=$scanf-1;
while($tr>=1){
$null=1;
while($null<=$scanf-$tr){
echo "<span style=\"color:white\">*</span>";
$null++;
}
$star=$tr*2-1;
while($star>=1){
if($star==1||$star==$tr*2-1){
echo '*';
}else{
echo "<span style=\"color:white\">*</span>";
}
$star--;
}
$tr--;
echo '<br/>';
}
}
}
?>
</body>
</html>
1回答
同学你好,在一般测试代码时,是不会使用错误抑制符的,所以关闭抑制符后报错,如图所示:

错误原因:由于程序第一次运行,并未接收到post值则开始定义变量造成的。
解决方法:使用isset()或者empty()检测是否有post数据,存在数据再执行金字塔或者空心菱形的操作。可以进行修改,代码如下:
<?php
//判断是否有_POST数据
if($_POST){
$scanf=$_POST['scanf'];//用户输入的值
if (is_numeric($scanf) && ($scanf>0)){//判断用户输入的值必须为大于0的正数
floor($scanf);//把浮点型取整
}else{
exit('非法数值,请重新输入');
}
if (isset($_POST['king'])){
$tr=1;//打印行数
while ($tr<=$scanf){
$null=1;//打印的空白
while ($null<=$scanf-$tr){
echo "<span style=\"color:white\">*</span>";
$null++;
}
$star=1;//每行打印的星星的数量
while($star<=$tr*2-1){
echo '*';
$star++;
}
$tr++;
echo '<br/>';
}
}elseif(isset($_POST['ling'])){
$tr=1;//行数
while($tr<=$scanf){
$null=1;//空白数量
while($null<=$scanf-$tr){
echo "<span style=\"color:white\">*</span>";
$null++;
}
$star=1;//星星位置
while($star<=$tr*2-1){
if ($star==1||$star==2*$tr-1){//根据位置显示'*'
echo '*';
}else{
echo "<span style=\"color:white\">*</span>";
}
$star++;
}
$tr++;
echo '<br/>';
}
//菱形下半部分
$tr=$scanf-1;
while($tr>=1){
$null=1;
while($null<=$scanf-$tr){
echo "<span style=\"color:white\">*</span>";
$null++;
}
$star=$tr*2-1;
while($star>=1){
if($star==1||$star==$tr*2-1){
echo '*';
}else{
echo "<span style=\"color:white\">*</span>";
}
$star--;
}
$tr--;
echo '<br/>';
}
}
}
?>注:同学可以上传作业哦!祝学习愉快!
相似问题