打印✳图形一般都是通过控制行列内容发生对应的变化形成相对应的图形的
打印菱形:首先我们要知道,菱形的组成部分,分别有一个正的等腰三角形和倒的等腰三角形构成,我们一般打印的直角三角形都是不用在每行的'*'之前打印空格的,但是打印正的等边三角形是需要在“*”之前打印规律的空格的,效果图如下:
// 1 * // 2 * // 3 *
// ** // *** // **
// *** // ***** // ****
// **** // ******* // ******
// ***** // ********* // ********
// ****** // *********** // **********
// 4 * // 5 * // 6 *
// *** // *** // ***
// ***** // ***** // *****
// ******* // ******* // *******
// ********* // ***** // *********
// *********** // *** // ***********
// *
//如上图第一种情况,给出两个for循环即可解决,一个循环嵌套在另一个循环中,
//外循环打印行,内循环打印每行所满足条件需要打印的列内容,通俗讲就是打印星星的具体个数
//代码如下:
for(var i=0;i<6;i++){
//在外循环层定义行
var line = ''
//内层循环控制每行与每列之间的数量关系,由上图可知,行数每增加一行,对应的"*"也加一个
//所以在这里行与列的关系显而易见,在i为0时,也就是行数打印为第一行时,此时需要打印一个"*",因此在内循环中,i进入的第一次就需要满足打印"*"的条件,因此迭代条件为j<i+1,谈若此时i不+1,则第一行则不会打印"*"
for(j=0;j<i+1;j++){
line += '*'
}
console.log(line);//在外层循环输出行line,即可得到对应的行数以及之前循环累加的每行的"*"数量
}
//上图第二种情况与第一种情况唯一的不同就在于行数与每列对应的"*"数量的关系
//由图可知,我们现在得到的是一个奇数列,按照奇数列打印行的规律,同样的我们还是现针对现有行数把
//当前的行数打印出来
for(var i=0;i<6;i++){
var line = ''
//此时我们可以得到的行数与对应的每列"*"的数量关系是第一行打印一个*,第二行打印三个*.....
for(var j=0;j<2*i+1;j++){
line += '*'
}
console.log(line);
}
//上图第三种情况为第一行打印一个,其余行数为偶数列,我们可以把第一行单独列出来
//打印第一行无规律的
for (var m = 0; m < 1; m++) {
var line = '*'
console.log(line);
}
//以下为有规律的序列
for(var i=1;i<=6;i++){
var line = ''
for(j=0;j<2*i;j++){
line += '*'
}
console.log(line)
}
//上图第四种情况是一个等腰三角形,就意味着不到最后一行,前面的每一行肯定都需要加空格,所以
//我们还需去循环一个打印空格的列,其他的和图二的无差异
for(var i=0;i<6;i++){
var line = ''
//准备一个循环打印空格的,由上图我们可以观察出来,每行递进空格对应-1,规律为5 4 3 2 1 0
//其实这种规律只是跟我们打印图一*的情况相反,由此可以得出打印空格的循环
for(k=0;k<5-i;k++){//这里用5-i的原因是最后一行并不需要打印空格,空格数量为0,所以可以忽
//略掉最后一行
line += ' '
}
for(var j=0;j<2*i+1;j++){
line +='*'
}
console.log(line)
}
//上图第五种情况为一个菱形,无非就是要求我们打一个正的等腰三角形,一个倒的等腰三角形
//因此我们需要把菱形拆分成两个部分,中间*数量最多的那一行无论你是划分给上半部分或者是下半部分
//都可以,这里我们按照划分给上半部分来解决这个问题
//首先先将上半部分的等腰三角形部分打印出来
//这种情况和图四的情况是一样的,直接copy图4的代码
//打印上半部分
for(var i=0;i<4;i++){
var line = ''
//准备一个循环打印空格的,由上图我们可以观察出来,每行递进空格对应-1,规律为5 4 3 2 1 0
//其实这种规律只是跟我们打印图一*的情况相反,由此可以得出打印空格的循环
for(k=0;k<3-i;k++){//这里用5-i的原因是最后一行并不需要打印空格,空格数量为0,所以可以忽
//略掉最后一行
line += ' '
}
for(var j=0;j<2*i+1;j++){
line +='*'
}
console.log(line)
}
//打印下半部分
for(var i=1;i<=3;i++){//这里从1开始是因为需要满足在第一行就开始打印一个空格的条件,初始值做了调整必定会影响下面的列*个数打印,所以注意留意下面列内容*打印的循环进入跳出的条件
var line = ''
//打印空格的循环,此时的空格规律是1 2 3
for(var k=0;k<i;k++){
line += ' '
}
for(var j=0;j<8-(2*i+1);j++){
line += '*'
}
console.log(line)
}
//上图第六种情况则是先打印空格,空格为降序规律为10 8 6 4 2 0,每列*为升序,规律为1 3 5 7...
//外层循环打印行
for(var i=1;i<=6;i++){//此处i初始值从1开始是因为要配合下面打印空格的条件,因为空格打出的是偶数列,所以括号里面改成对应的2*i,再用当前行数*2去减这个(2*i),就得到对应的空格打印的循环进入跳出的限制条件
//定义一个行
var line = ''
//打印每行空格
for(var k=0;k<12-(2*i);k++){
line += ' '
}
//打印列内容
for(var j=0;j<2*i-1;j++){
line += '*'
}
console.log(line)
}
本文介绍了如何利用JavaScript打印菱形图形。菱形由一个正等腰三角形和一个倒置的等腰三角形组成。关键在于控制行的空格和星号的排列,以形成所需的图形。
2388

被折叠的 条评论
为什么被折叠?



