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