PHP学习作业一 流程控制和循环

2018年5月6日21:37:47 16

PHP学习作业一 流程控制和循环

自从在慕课上买了PHP的入门课程,基本上很少时间来看,刚好最近把第一大章节看完了,也有一个作业,就自己写了一下,做个记录。

作业内容

任务描述

一、语言和环境

实现语言:php语言

环境要求及开发工具:wamp,phpstudy或其它集成开发环境,sublime,phpstorm或其它编辑器

二、程序整体要求

1、思路清晰,依据思路写出的实现代码需层次分明,整洁易懂

2、功能实现应逻辑严谨,判断充分合理

3、代码格式及命名要规范整齐,可读性强

4、要求程序运行效果与提供的页面效果图,结构保持一致,文字大小,颜色不做统一要求

5、将作业形成压缩文件并提交

三、思路分析:

步骤一:在这个PHP文件中混编html代码,实现输入行数的input框以及“金字塔”和“空心菱形”的button按钮。

注意:

button按钮需设置value值,方便区分页面点击button按钮出现对应的图案。

form表单的提交地址是当前页面。

 

步骤二:金字塔实现步骤:

1、在PHP部分,首先接受表单POST方式的传参,判断参数是否是金字塔,如果是金字塔参数,那么就执行实现金字塔的循环。

2、实现每行相对前一行多2个*的规律。

首先,接受页面传过来的层数n,循环n,在这个循环中先打印一个由空格组成的倒直角三角形,注意可能有些浏览器对 &nbsp 与 * 的大小解析不相等,所以这里可以输出隐藏样式(style=”color:#FFF;”)的*来保证在浏览器页面呈现的是一个完全的倒三角。

其次,在层循环中打印一个由星号组成的等腰三角形,三角形星星的个数=2*层数-1。

最后,输出换行即可。

 

步骤三:空心菱形实现步骤:

1、在PHP部分,首先接受表单POST方法的传参,判断参数是否是空心菱形,如果是空心菱形参数,那么就执行实现空心菱形的循环。

2、用循环实现一个第一行和最后一行是一颗星星,其余中间每一行是行头,行尾各一颗星星的菱形的形状。

参考实现思路:

实现菱形的上半部分(想象一个空心的无底边三角形)。

首先,接受页面传过来的层数,循环这个层数。

其次,在层数的循环中,先打印一个空的倒直角三角,然后打印一个实心型三角,判断输出行首行尾的星星,中间部分直接打印出空。

最后,给每层打印换行。

 

实现菱形的下半部分(想象成一个空心的无底边的倒三角形)。

首先,在层数的循环中,先打印一个空的倒三角,然后打印一个实心型三角,同样判断输出行首行尾的星星,中间部分直接打印出空。

(注意循环层数的条件的变化)。

其次,给每层打印换行

作业内容

<html lang="zh">
<head>
    <title>PHP第一章节作业 - By QingShanKing</title>
</head>
<body>
<form action="phpwork.php" method="post">
    <input type="text" name="num" placeholder="请输入要打印的行数" style="width: 200px;height: 30px;border-radius: 5px;"><br><br>
    <input type="submit" name="echo_jzt" value="金字塔">&nbsp;&nbsp;
    <input type="submit" name="echo_kxl" value="空心菱形">
</form>
</body>
</html>
<?php
if (isset($_POST[’num’])) {
    $num = $_POST[’num’];
    //判断是否为正整数
    if ($num > 0 && floor($num) == $num) {
        //如果当前为金字塔
        if (isset($_POST[’echo_jzt’])) {
            for ($i = 1; $i <= $num; $i++) {
                for ($n = 1; $n <= $num - $i; $n++) {
                    echo ’&nbsp;’;
                }
                for ($j = 1; $j <= 2 * $i - 1; $j++) {
                    echo ’*’;
                }
                echo ’<br>’;
            }
        }
        //空心菱形
        if (isset($_POST[’echo_kxl’])) {
            for ($i = 1; $i <= $num; $i++) //i表示空心菱形上半部分行数;类似于金字塔行数
            {
                for ($j = 1; $j <= $num - $i; $j++) //j表示每行"*"号前面的空格数
                {
                    echo ’&nbsp;’;
                }
                for ($k = 1; $k <= 2 * $i - 1; $k++) //k表示每行要打印的"*"号
                {
                    if ($k == 1 || $k == 2 * $i - 1) //如果要打印的"*"是第一个或最后一个则打印出来
                    {
                        echo ’*’;
                    } else
                        echo ’&nbsp;’; //如果要打印的"*"不是第一个或最后一个则打印空格
                }
                echo ’<br>’;
            }        //以上打印出来的是空心菱形的上半部分
            for ($i = 1; $i <= $num - 1; $i++)  //空心菱形下半部分的行数为lay-1行;比如上半部分4行,则下半部分为3行才能构成菱形
            {
                for ($j = 1; $j <= $i; $j++) //每行空格数
                {
                    echo ’&nbsp;’;
                }
                for ($k = 1; $k <= 2 * ($num - $i) - 1; $k++) //下半部分每行总的"*"数
                {
                    if ($k == 1 || $k == 2 * ($num - $i) - 1) //如果"*"处在第一和最后一位则打印出来
                    {
                        echo ’*’;
                    } else
                        echo ’&nbsp;’; //如果"*"不是处在第一和最后一位则打印出空格
                }
                echo ’<br>’;
            }
        }
    } else echo ’层数请为正整数!’;
}
weinxin
微信公众号
博客微信公众号,欢迎关注。
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:16   其中:访客  8   博主  8

    • avatar 翡樾 3

      不错,加油

      • avatar 萧瑟 博主

        @翡樾:谢谢。一起努力

        • avatar 西枫里博客 4

          首先呢else后面跟上{ 原因也很简单,在一些特定的软件中,格式化代码,这个简写的会让你非常头痛。
          第二,你这个金字塔似乎有点问题,按照样输出的话,应该是半个金字塔。还要输出另外一半才像,比如你$j <= 2 * $i-1;换成$j <= 4 * $i-1;才更像一个金字塔,当然这样并不是你程序的原意。为了验证一下,我特地拷贝了下你的代码,兼顾简介和效率,你应该这么改下输出*号和空格之前先去定义个div容器,内容居中,然后去掉输出空格的for语句,这样就完成了一个正常的金字塔了。

          • avatar 萧瑟 博主

            @西枫里博客:非常感谢大佬耐心指导和留言,else 这个是从其他语言那边带过来的。这个坏习惯一定要改;相对于作业:我的想法是如何快速的去完成这个作业,而不是如何让这个作业做的更好。最后再一次谢谢大佬的指导,非常感谢。

            • avatar 我爱辅助论坛 0

              坚持更新,做好自己

              • avatar 萧瑟 博主

                @我爱辅助论坛:不忘初心。

                • avatar 老姚 0

                  又见网络工作者的博客。

                  • avatar 萧瑟 博主

                    @老姚:哈哈,兴趣爱好罢了

                    • avatar 陈鑫威博客 0

                      贵站文章不错,主题清晰,颜色上也很好。喜欢贵站的主题风格

                      • avatar 萧瑟 博主

                        @陈鑫威博客:喜欢就常来。

                        • avatar 艾美乐电子 0

                          技术咖,我好多年没写函数了

                          • avatar 萧瑟 博主

                            @艾美乐电子:小菜鸟一个,让各位大佬见笑了。

                            • avatar 芭比 0

                              我最近在学习JAVA,里面也有类似的练习

                              • avatar 萧瑟 博主

                                @芭比:所有的编程语言都很相通的。

                                • avatar 杨小杰 1

                                  很详细呢

                                  • avatar 萧瑟 博主

                                    @杨小杰:学习,也要有些结果。