切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
php 打印菱形[复制链接]
发表于 2012-12-19 23:59:31 | 显示全部楼层 |!read_mode!
这是在一个群里一个网友去面试的一道题

菱形形状如下:


*
***
*****
***
*

我也写了写  代码如下  很简单

<?php
        for($i=0;$i<3;$i++){
                for($j=0;$j<=$i*2;$j++){
                        echo "*";
                }
                echo "<br>";
        }
        for($i=0;$i<2;$i++){
                for($j=2;$j>=$i*2;$j--){
                        echo "*";
                }
                echo "<br>";
        }


发表于 2012-12-20 00:11:17 | 显示全部楼层
哈哈 不错 打印各种图形挺能锻炼思维能力的,但是别长时间玩,容易头疼 哈哈
发表于 2012-12-20 00:14:16 | 显示全部楼层
抚菊深思 发表于 2012-12-20 00:11
哈哈 不错 打印各种图形挺能锻炼思维能力的,但是别长时间玩,容易头疼 哈哈

可不是咋地 当初学 老谭的那本 绿皮书的时候 没少头疼  :lol
发表于 2012-12-20 04:12:41 | 显示全部楼层
面试题   怎么感觉都是题目看似简单  
但回答  却很需要智慧啊  我表示没完全看明白
可以详解么
$j<=$i*2  这个是啥意思
发表于 2012-12-20 19:23:35 | 显示全部楼层
最后的入侵 发表于 2012-12-20 04:12
面试题   怎么感觉都是题目看似简单  
但回答  却很需要智慧啊  我表示没完全看明白
可以详解么

这个 你可以先分析一下  

通过观察  发现 这个菱形  前三行  的变化规律为 (以i代表行数的索引   j代表列数的索引)

i:0 1 2

j:0 2 4

那么 j与i的关系为
j=2*i

最后两行  为一个递减的规律   这个菱形 再通过以上的方式找不出规律  可以这样想

首先最外层控制 行数的循环 要循环两次  

递减的第一列有 3个  *    所以j的最大值设为2  

最后一行 有一个 *   第一次循环下来 j=2  j自减后 还要执行最后一次 输出   循环结束的条件为 j>=i*2;  


发表于 2012-12-20 22:57:08 | 显示全部楼层
楼主有没有考虑代码的重用性,以及如果要打印空心的呢?

代码区

GMT+8, 2020-9-23 13:17

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部