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