<!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>