//一、 畫一個直角三角形
// 第幾行 *號數
// * 1 1
// ** 2 2
// *** 3 3
// **** 4 4
// ***** 5 5
// 規律:行數 = *號數
function left(n){ // right為函數名,n為形式參數,用於接收實體參數。
for(var i = 1; i <= n; i++){ // 聲明i為打印行數
for(var j = 1; j <= i; j++){ //聲明j為一行打印多少個*
document.write("*");
}
document.write("<br>"); //每打印一行就執行一次換行
}
}
left(5); //要求函數打印10行*,實體參數!
// 二、畫一個直角三角形
// * 4 空格 1 *
// ** 3 空格 2 *
// *** 2 空格 3 *
// **** 1 空格 4 *
// ***** 0 空格 5 *
// 規律: 一行 : 空格 + *;
// 空格 = 總行數 - 空格所在行數
// 行數 = *號數
function right(n){
for(var i = 1; i <= n; i++){ // 聲明i為打印行數
for(var k = 1; k <= n - i; k++){ //聲明k為打印空格
document.write(" ");
}
for(var j = 1; j <= i; j++){ //聲明j為一行打印多少個*
document.write("*");
}
document.write("<br>"); //每打印一行就執行一次換行
}
}
right(5);
// 三、畫一個等腰三角形
// 行數
// 鋒 j= 1 空格 4 鋒 1
// 鋒鋒鋒 j= 2 空格 3 鋒 3
// 鋒鋒鋒鋒鋒 j= 3 空格 2 鋒 5
// 鋒鋒鋒鋒鋒鋒鋒 j = 4 空格 1 鋒 7
// 鋒鋒鋒鋒鋒鋒鋒鋒鋒 j = 5 空格 0 鋒 9
// 空格5-j 鋒 2*j-1
// 思路:我們輸出的空格數只算文字左邊的即可!按最大行數-鋒字個數
// 規律: 空格 = 最大行數 - 單個行數; 鋒 = 2 * 單個行數 - 1;
function all(n){
for(var i = 1; i <= n; i++){ // 聲明i為打印行數
for(var k =1; k <= n - i; k++){ //聲明k為打印空格
document.write(" ");
}
for(var f = 1; f <= 2*i - 1; f++){ //聲明f為打印文字
document.write("鋒");
}
document.write("<br>");
}
}
all(5);
// 注意: 不斷行的空白(1個字符寬度)
//   半個空白(1個字符寬度)
//   一個空白(2個字符寬度)
//   窄空白(小於1個字符寬度)
// 此處用的 相當於一個漢字寬度
// 四、畫一個菱形方案一
// 行數
// 鋒 j= 1 空格 4 鋒 1
// 鋒鋒鋒 j= 2 空格 3 鋒 3
// 鋒鋒鋒鋒鋒 j= 3 空格 2 鋒 5
// 鋒鋒鋒鋒鋒鋒鋒 j = 4 空格 1 鋒 7
// 鋒鋒鋒鋒鋒鋒鋒鋒鋒 j = 5 空格 0 鋒 9
// 鋒鋒鋒鋒鋒鋒鋒 空格5-j 鋒 2*j-1
// 鋒鋒鋒鋒鋒
// 鋒鋒鋒
// 鋒
// 思路:做兩個等腰三角形,一個朝上,一個朝下,下面的去掉一行,避免中間重復,因為菱形行數都是奇數
function up(n){
// 上面一個
for(var i = 1; i <= n; i++){ // 聲明i為打印行數
for(var k =1; k <= n - i; k++){ //聲明k為打印空格
document.write(" ");
}
for(var f = 1; f <= 2*i - 1; f++){ //聲明f為打印文字
document.write("鋒");
}
document.write("<br>");
}
// 下面一個
// 重點:首先行數要減一;第二,文字是從多一次減少,所以行數范圍和自增自減要改變!
for(var i = n - 1; i >= 1; i--){ // 聲明i為打印行數
for(var k =1; k <= n - i; k++){ //聲明k為打印空格
document.write(" ");
}
for(var f = 1; f <= 2*i - 1; f++){ //聲明f為打印文字
document.write("鋒");
}
document.write("<br>");
}
}
up(9);
//拓展 做一個空心菱形
// 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒 鋒
// 鋒
function up(n) {
// 上面一個
for (var i = 1; i <= n; i++) { // 聲明i為打印行數
for (var k = 1; k <= n - i; k++) { //聲明k為打印空格
document.write(" ");
}
for (var f = 1; f <= 2 * i - 1; f++) { //聲明f為打印文字
// document.write("鋒");
if (f == 1 || f == 2 * i - 1) { //當文字為第一個或最后一個時打印
document.write("鋒");
} else { //否則這一行其他為空
document.write(" ");
}
}
document.write("<br>");
}
// 下面一個
// 重點:首先行數要減一;第二,文字是從多一次減少,所以行數范圍和自增自減要改變!
for (var i = n - 1; i >= 1; i--) { // 聲明i為打印行數
for (var k = 1; k <= n - i; k++) { //聲明k為打印空格
document.write(" ");
}
for (var f = 1; f <= 2 * i - 1; f++) { //聲明f為打印文字
// document.write("鋒");
if (f == 1 || f == 2 * i - 1) { //當文字為第一個或最后一個時打印
document.write("鋒");
} else { //否則這一行其他為空
document.write(" ");
}
}
document.write("<br>");
}
}
up(9);
// 畫一個菱形方案二
// 思路:我們把菱形看成上下對稱的階梯
//-4 鋒
//-3 鋒鋒鋒
//-2 鋒鋒鋒鋒鋒
//-1 鋒鋒鋒鋒鋒鋒鋒
//0 鋒鋒鋒鋒鋒鋒鋒鋒鋒
//1 鋒鋒鋒鋒鋒鋒鋒
//2 鋒鋒鋒鋒鋒
//3 鋒鋒鋒
//4 鋒
// j=-4 空格 4 鋒 9-2*4=1
// j=-3 空格 3 鋒 9-2*3=3
// j=-2 空格 2 鋒 9-2*2=5
// j=-1 空格 1 鋒 9-2*1=7
// j=0 空格 0 鋒 9-2*0=9
// j=1 空格 1 鋒 9-2*1=7
// j=2 空格 2 鋒 9-2*2=5
// j=3 空格 3 鋒 9-2*3=3
// j=4 空格 4 鋒 9-2*4=1
// 用到到方法: Math.abs(-10) => 10 取絕對值
function center(n) {
var mid = parseInt((n - 1) / 2); // => 4 聲明一個對稱范圍
for(var i = -mid; i <= mid; i++){ //聲明行數為-4
for(var k = 1; k <= Math.abs(i); k++){ //聲明k為空格數,小於等於行數的絕對值
document.write(" ");
}
for(var f = 1; f <= n - 2 * Math.abs(i); f++){
// 聲明f為文字數,取值范圍為:總行數 - 2 * 單行行數的絕對值
document.write("鋒");
}
document.write("<br>");
}
}
center(9);
// 此處有個小bug,實參取值必須是奇數!又菱形固有原理決定