//一、 画一个直角三角形 // 第几行 *号数 // * 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,实参取值必须是奇数!又菱形固有原理决定