//一、 畫一個直角三角形 // 第幾行 *號數 // * 1 1 // ** 2 2 // *** 3 3 // **** 4 4 // ***** 5 5 // 規律:行數 = *號數 function left(n){ // right為函數名,n為形式參數,用於接收實體參數。 for(var ...
//一、 畫一個直角三角形 // 第幾行 *號數 // * 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,實參取值必須是奇數!又菱形固有原理決定