//1、 畫一個直角三角形
// 第幾行 *號數
// * 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行*,實體參數!
// 2、畫一個直角三角形
// * 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);
// 3、畫一個等腰三角形
// 行數
// 鋒 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個字符寬度)
// 此處用的 至關於一個漢字寬度
// 4、畫一個菱形方案一
// 行數
// 鋒 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,實參取值必須是奇數!又菱形固有原理決定