javascript打印菱形和镂空菱形

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js菱形</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>
<script type="text/javascript">
   window.οnlοad=function(){
       var rows=window.prompt("请输入行");
            if(rows%2==0){
              rows=Math.floor(parseInt(rows));
            }
            var half=parseInt(rows/2);//正三角形的行数
            var h=half+ 1;  //倒三角形的行数
            var q=h;
            /*菱形*/
            for(var i=0;i<half;i++){  //i表示当前三角形的行数
                for(var k=half;k>=i;k--){
                    document.writeln("<div style='width: 10px;height: 10px;display: inline-block;'></div>")
                }
                for(var j=0;j<2*i+1;j++){ //正三角形的每行*的个数,与当前行i的关系:j=2*i+1(i递增变化)
                    document.writeln("<div style='width: 10px;height: 10px;display: inline-block;'>*</div>")
                }
                document.writeln("<br/>");
            }
            for(;h>0;h--){//h是当前倒三角形的行数
                   for(var m=q;m>=h;m--){
                       document.writeln("<div style='width: 10px;display: inline-block;'></div>");
                   }
                   for(var n=0;n<2*h-1;n++){//倒三角形的每行*的个数,与倒三角形的总行数h的关系:n=2*h-1(h递减变化)
                       document.writeln("<div style='width: 10px;height: 10px;display: inline-block;'>*</div>");
                   }
                   document.writeln("<br/>");
             }
            // 镂空菱形
           for(var i=0;i<half;i++){
               for(var k=half;k>=i;k--){
                   document.writeln("<div style='width: 10px;display: inline-block;'></div>")
               }
               for(var j=0;j<2*i+1;j++){
                   if(j==0||j==2*i){//只打印每行第一个*和最后一个*(因为j<2*i+1;所以j的最大值为2*i)
                       document.writeln("<div style='width: 10px;display: inline-block;'>*</div>");
                   }
                   else {
                       document.writeln("<div style='width: 10px;display: inline-block;'></div>");
                   }
               }
               document.writeln("<br/>");
           }
           var h=half+1;
           for(;h>0;h--){
               for(var m=q;m>=h;m--){
                   document.writeln("<div style='width: 10px;display: inline-block;'></div>");
               }
               for(var n=0;n<2*h-1;n++){
                   if(n==0||n==2*h-2){//只打印每行第一个*和最后一个*(因为n<2*h-1;所以n的最大值为2*h-2)
                       document.writeln("<div style='width: 10px;display: inline-block;'>*</div>");
                   }
                   else {
                       document.writeln("<div style='width: 10px;display: inline-block;'></div>")
                   }

               }
               document.writeln("<br/>");
           }
        }
   /*
    *   测试数据:
    *   rows=13
    *   half=6
    * i,h控制行,j,n控制列。外层循环控制行数,内层循环控制列数
    *  行数(i)    正三角形星号数(j)   倒三角形星号数(n)          空格数
    6     *   0             1                                            7
    5     *   1             3                                            6
    4     *   2             5                                            5
    3     *   3             7                                            4
    2    *   4             9                                            3
    1   *   5            11                                            2
    *   6                                 13                       1
    *   7                                 11                       2
    *   8                                 9                        3
    *   9                                 7                        4
    *   10                                5                        5
    *   11                                3                        6
    *   12                                1                        7
    *  j与行数i的关系: j=2*i+1
    *  n与half的关系:                  n=2*(half+1)-1=2*half+1;(在示例中half+1为倒三角形的行数即h,故n=2*h-1)


    * */
</script>
</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊哈前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值