<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>金字塔-菱形-空心</title>
    <script>
        var n=window.prompt("请输入行数");
        /* 右半边    星号
        *            1
        **           2
        ***          3
        ****         4
        第i行,空格无,星号i */
        document.write("正右半边<br>");
        for(i=1;i<=n;i++){//行数
            for(j=1;j<=i;j++){
                document.write("*");//打印每行星号
            }
            document.write("<br />");
        }
        /* 左半边    空格     星号
           *        4-1       1
          **        4-2       2
         ***        4-3       3
        ****        4-4       4
        第i行,空格n-i,星号i */
        document.write("正左半边<br>");
        for (i=1; i <= n; i++) {
            for(j=1;j<=n-i;j++){
                document.write(" ");//打印每行空格
            }
            for(k=1;k<=i;k++){
                document.write("*");//打印每行星号
            }
            document.write("<br/>");
        } 
        /*金字塔       空格         星号
            *        3=4-1        1=2*1-1
           ***       2=4-2        3=2*2-1
          *****      1=4-1        5=2*3-1
         *******     0=4-4        7=2*4-1
         第i行,空格n-i,星号2*i-1 */
        document.write("正金字塔<br/>");
        for(i=1;i<=n;i++){
            for(j=1;j<=n-i;j++){
                document.write(" ");
            }
            for(k=1;k<=2*i-1;k++){
                document.write("*")
            }
            document.write("<br/>")
        }
        /*倒右边   星号
        ****         4
        ***          3
        **           2
        *            1
        第i行,空格n-i,星号n-i+1 */
        document.write("倒右半边<br/>");
        for (var i = 1; i<=n; i++) {
            for(j=1;j<=n-i+1;j++){
                document.write("*");
            }
            document.write("<br/>");
        }
        /*倒左半边     空格         星号
        ****        0=4-4=1-1     4=4-1+1
         ***        1=4-3=2-1     3=4-2+1
          **        2=4-2=3-1     2=4-3+1
           *        3=4-1=4-1     1=4-4+1
        第i行,空格i-1;星号n-i+1 */
        document.write("倒左半边<br/>");
        for(i=1;i<=n;i++){
            for(j=1;j<=i-1;j++){
                document.write(" ");//打印每行空格
            }
            for(k=1;k<=n-i+1;k++){
                document.write("*");//打印每行星号
            }
            document.write("<br/>");
        }
        /*倒金字塔        空格              星号
        *******        0=4-4=1-1        7=2*4-1
         *****         1=4-3=2-1        5=2*3-1
          ***          2=4-2=3-1        3=2*2-1
           *           3=4-1=4-1        1=2*1-1
        第i行,空格i-1;星号2*(n-i+1)-1  */
        document.write("倒金字塔<br/>");
        for(i=1;i<=n;i++){
            for(j=1;j<=i-1;j++){
                document.write(" ");
            }
            for(k=1;k<=2*(n-i+1)-1;k++){
                document.write("*");
            }
            document.write("<br/>");
        }
        /*菱形           
           *
          ***
         *****
        *******            
         *****            
          ***            
           *            
        思路:先打印上半部分,再打印下半部分*/
        document.write("菱形<br/>");
        //打印菱形上半部分
        for(i=1;i<=n;i++){
            for(j=1;j<=n-i;j++){
                document.write(" ");
            }
            for(k=1;k<=2*i-1;k++){
                document.write("*");
            }
            document.write("<br/>");
        }
        //打印菱形下半部分
        for(i=1;i<=n;i++){
            for(j=1;j<=i;j++){//要去掉下半部分的最上一行,第二行变为第一行,每行最前面的空格加一个,所以j<=i,而不是j<=j-1;
                document.write(" ");
            }
            for(k=1;k<=2*(n-i)-1;k++){//第一行为原来第二行,星号个数也随之变化;
                document.write("*");
            }
            document.write("<br/>");
        }
        /*空心正三角形
            *
           * *
          *   *
         *******
         思路:边上的打印星号,其他的打印空格,最后一行打印星号 */
        document.write("空心正三角形<br/>");
        for(i=1;i<=n;i++){
            for(j=1;j<=n-i;j++){
                document.write(" ");
            }
            for(k=1;k<=2*i-1;k++){
                if(i==n){//最后一行星号全打印出来
                    document.write("*")
                }
                else if(k==1||k==2*i-1){//打印两边上的星号
                    document.write("*")
                }
                else{
                    document.write(" ");//打印空心
                }
            }
            document.write("<br/>");
        }
        /*空心倒三角形
    
         *******
          *   *
           * *
            *
         思路:边上的打印星号,其他的打印空格,第一行打印星号 */
        document.write("空心倒三角形<br/>");
        for(i=1;i<=n;i++){
            for(j=1;j<=i-1;j++){
                document.write(" ");
            }
            for(k=1;k<=2*(n-i)+1;k++){
                if (i==1) {//打印第一行星号
                    document.write("*");
                }else if(k==1||k==2*(n-i)+1){//打印两边上的星号
                    document.write("*");
                }else{
                    document.write(" ");//打印空心
                }        
            }
            document.write("<br/>");
        }
        /*空心菱形
    
            *
           * *
          *   *
           * *
            *
         思路:和打印菱形一样,先打印上半部分,再打印下半部分 */
        document.write("空心菱形<br/>");
        //上半部分
        for(i=1;i<=n;i++){
            for(j=1;j<=n-i;j++){
                document.write(" ");
            }
            for(k=1;k<=2*i-1;k++){
                if (k==1||k==2*i-1) {
                    document.write("*");//打印边上星号
                }else{
                    document.write(" ")//打印空心空格
                }
            }
            document.write("<br/>");
        }
        // 下半部分
        for(i=1;i<=n;i++){
            for(j=1;j<=i;j++){//每行最前面的空格
                document.write(" ");
            }
            for(k=1;k<=2*(n-i)-1;k++){
                if (k==1||k==2*(n-i)-1) {
                    document.write("*");
                }else{
                    document.write(" ");
                }    
            }
            document.write("<br/>");
        }
    </script>
</head>
<body>
    
</body>
</html>
Javascript打印金字塔,倒立金字塔,空心金字塔,菱形,空心菱形等
原文:http://www.cnblogs.com/web-HCJ/p/4648645.html