JS打印各种形状:星星金字塔_完整菱形_三角形_思路算法详解_附源代码

Javascript打印金字塔,倒立金字塔,

空心金字塔,菱形,空心菱形等

打印直角三角形

    *            1
    **           2
    ***          3
    ****         4
    通过图形,可以得出规律,第i行时,打印的星星为i个
  document.write("正右半边
"
); for(i=1;i<=n;i++){//n代表行数 for(j=1;j<=i;j++){ document.write("*");//打印每行星星 } document.write("
"
); }
   左半边    空格     星号

       *        4-1       1
      **        4-2       2
     ***        4-3       3
    ****        4-4       4
    n代表的是n行 第i行,空格n-i,星号i 
document.write("正左半边
"
); for (i=1; i <= n; i++) { //n代表行数 for(j=1;j<=n-i;j++){ document.write(" ");//打印每行空格 } for(k=1;k<=i;k++){ document.write("*");//打印每行星星 } document.write("
"
); }
    /金字塔       空格         星星

        *           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
    n代表的是n行  第i行,空格n-i,星星2*i-1
  document.write("正金字塔
"
); for(i=1;i<=n;i++){ //n代表行数 for(j=1;j<=n-i;j++){ document.write(" "); } for(k=1;k<=2*i-1;k++){ document.write("*") } document.write("
"
) }
    倒右边   星号

    ****         4
    ***          3
    **           2
    *            1
   n代表的是n行 第i行,空格n-i,星星n-i+1   
document.write("倒右半边
"
); for (var i = 1; i<=n; i++) { //n代表行数 for(j=1;j<=n-i+1;j++){ document.write("*"); } document.write("
"
); }
    倒左半边     空格         星星

    ****        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
    n代表的是n行 第i行,空格i-1;星星n-i+1  
 document.write("倒左半边
"
); for(i=1;i<=n;i++){ //n代表行数 for(j=1;j<=i-1;j++){ document.write(" ");//打印每行空格 } for(k=1;k<=n-i+1;k++){ document.write("*");//打印每行星星 } document.write("
"
); }
    /*倒金字塔        空格              星星

    *******        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("倒金字塔
"
); for(i=1;i<=n;i++){ //n代表行数 for(j=1;j<=i-1;j++){ document.write(" "); } for(k=1;k<=2*(n-i+1)-1;k++){ document.write("*"); } document.write("
"
); }
    /*菱形           
       *
      ***
     *****
    *******            
     *****            
      ***            
       *            
    思路:先打印上半部分,再打印下半部分*/
    document.write("菱形
"); //打印菱形上半部分思路
  for(i=1;i<=n;i++){ //n代表行数
        for(j=1;j<=n-i;j++){
            document.write(" ");
        }
        for(k=1;k<=2*i-1;k++){
            document.write("*");
        }
        document.write("
"
); }
    //打印菱形下半部分思路
 for(i=1;i<=n;i++){ //n代表行数
        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("
"
); }
    空心正三角形
        *
       * *
      *   *
     *******
     思路:边上的打印星星,其他的打印空格,最后一行打印星星 
document.write("空心正三角形
"
); for(i=1;i<=n;i++){ //n代表行数 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("
"
); }
    空心倒三角形

     *******
      *   *
       * *
        *
     思路:边上的第一行的星星以及两条夹角边的星星,其他的打印空格,第一行打印星星
 document.write("空心倒三角形
"
); for(i=1;i<=n;i++){ //n代表行数 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("
"
); }
    空心菱形

        *
       * *
      *   *
     *     *
      *   *
       * *
        *
     思路:和打印菱形一样,先打印上半部分,再打印下半部分 
    document.write("空心菱形
"); //上半部分实行
 for(i=1;i<=n;i++){ //n代表行数
        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("
"
); }
    // 下半部分实现
for(i=1;i<=n;i++){ //n代表行数
        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("
"
); }

你可能感兴趣的:(JS打印各种形状:星星金字塔_完整菱形_三角形_思路算法详解_附源代码)