70%的人都会被绕进去的for多重循环

for多重循环

  • 乘法口诀
  • 二、直线
  • 三、矩形
  • 四、靠左直角三角形
  • 五、靠右直角三角
  • 六、靠左倒三角
  • 七、等腰三角形
  • 八、平行四边形
  • 九、直角梯形
  • 十、等腰梯形
  • 十一、菱形

乘法口诀

#!/bin/bash
for ((a=1;a<=9;a++))   输出第一位数
do
   for ((b=1;b<=$a;b++))   输出第二位数,第二位数要小于等于第一位数
   do
   c=$[$a*$b]
   echo -ne "$a*$b=$c\t"
   done
 echo ""
done
#!/bin/bash
for ((a=1;a<=9;a++))
do
  for ((b=1;b<=a;b++))
  do
  echo -ne "$a*$b=$[$a*$b]\t"
  done
 echo ""
done
#!/bin/bash
a=1
while [ $a -le 9 ]
do
   b=1
      while [ $b -le $a ]
      do
      let sum=$a*$b
      echo -ne "$a*$b=$sum\t"
      let b++
      done
let a++
echo ""
done

70%的人都会被绕进去的for多重循环_第1张图片

二、直线

#!/bin/bash
for ((a=1;a<=20;a++))     输出直线循环,循环20次,每次输出一个*  
  do
  echo -n "*"        -n表示不换行,所以输出为直线
  done
echo ""       ""表示换行

在这里插入图片描述

三、矩形

一直上面输出的是直线,矩形即是输出多条直线,然后组合就是一个矩形
所以在直线的for循环外面再套一个循环

#!/bin/bash
for ((b=1;b<=5;b++))        矩形循环(多次循环直线)
  do
    for ((a=1;a<=20;a++))     直线循环(多次循环*),不懂看上一条
      do
      echo -n "*"     -n不换行
      done
    echo ""     “”换行,不换行就是一条很长的直线,因为多条直线连在一起了
   done

70%的人都会被绕进去的for多重循环_第2张图片

四、靠左直角三角形

#!/bin/bash
for ((a=1;a<=10;a++))    输出行数
do
  for ((b=1;b<=a;b++)) 输出直线,因为此处b<=a,所以每行的*数并不一样,不再是一样长的直线了,而是随着a的值不断增大的直线
   do
   echo -n "*"
   done
  echo ""
done

70%的人都会被绕进去的for多重循环_第3张图片

五、靠右直角三角

#!/bin./bash
for ((a=1;a<=10;a++))    输出行数
do
   for ((i=10;i>=a;i--))    输出左侧需要的空格,空格的数量也是根据i>=a来决定,随着a的逐步增加而减少,如果实在不懂,可以带两个数进去检测一下
      do
      echo -n " "
      done
   for ((b=1;b<=a;b++))
      do
      echo -n "*"
      done
 echo ""
done

70%的人都会被绕进去的for多重循环_第4张图片

六、靠左倒三角

#!/bin/bash
for ((a=1;a<=10;a++))   输出行数
do
 for ((b=10;b>=a;b--))   因为是倒三角,所以*的数量应该从多到少,所以是b>=a, 随着a的增大直线中*的数量会变少,因为当不满足b>=a这个条件时,*数会被截断
   do
   echo -n "*"
   done
 echo ""
done

70%的人都会被绕进去的for多重循环_第5张图片

七、等腰三角形

方法一:数学算法,直接输出奇数个*

#!/bin/bash
for ((a=1;a<=10;a++))
 do
  for ((b=10;b>=a;b--))
    do
    echo -n " "
    done
   i=$[($a*2)-1]
  for ((c=1;c<=i;c++))
    do
    echo -n "*"
    done
 echo ""
done

方法二:空格倒三角靠右直角三角再拼靠左直角三角

#!/bin/bash
for ((a=1;a<=10;a++))
   do
     for ((b=10;b>=a;b--))
       do
         echo -n " "
       done
     for ((c=1;c<=a;c++))
       do
         echo -n "*"
       done
     for ((d=2;d<=a;d++))
       do
         echo -n "*"
       done
  echo 
done

方法三:

#!/bin/bash
read -p "获取行号" a
for ((i=1;i<=a;i++))
do
    for((k=$a-$i;k>0;k--))
     do
         echo -n ' '
     done
     for ((h=1;h<=$((2*$i-1));h++))
       do
        echo -n '*'
        done
     echo''
 done

70%的人都会被绕进去的for多重循环_第6张图片

八、平行四边形

#!/ban/bash
for ((a=1;a<=10;a++))    输出行数,多行长度相同的直线按照斜三角形排列方式就变成了平行四边形
   do
   for ((b=10;b>=a;b--))    输出空三角形
     do
     echo -n " "
     done
   for ((c=1;c<=15;c++))    输出直线
     do
     echo -n "*"
     done
  echo
done    

70%的人都会被绕进去的for多重循环_第7张图片

九、直角梯形

方法一:在直角三角形的基础上掐掉头,即去掉前几行,行数有第一层变量a决定,所以修改初始a的值

#!/bin./bash
for ((a=5;a<=10;a++))    输出行数,a=5掐去三角形的头部
do
   for ((i=10;i>=a;i--))    输出空倒三角形
      do
      echo -n " "
      done
   for ((b=1;b<=a;b++))     输出直线
      do
      echo -n "*"
      done
 echo ""
done

70%的人都会被绕进去的for多重循环_第8张图片
方法二:在这里是在空倒三角形的基础上拼靠右直角三角形再拼矩形

#!/bin./bash
for ((a=1;a<=10;a++))     输出行数
do
   for ((b=10;b>=a;b--))     输出空倒三角形
      do
      echo -n " "
      done
   for ((c=1;c<=a;c++))     输出靠右直角三角形
      do
      echo -n "*"
      done
   for ((d=1;d<=4;d++))         输出矩形
      do
      echo -n "*"
      done
  echo
done

70%的人都会被绕进去的for多重循环_第9张图片

方法三:在空倒三角形的基础上输出梯形

for ((a=1;a<=10;a++))
 do
  for ((b=10;b>=a;b--))
   do
   echo -n " "
   done
   for ((c=1;c<=$[$a+5];c++))
   do
   echo -n "*"
   done
  echo
done

70%的人都会被绕进去的for多重循环_第10张图片
相同的方法还可输出另一直角梯形

for ((a=1;a<=10;a++))
 do
   for ((c=1;c<=$[$a+5];c++))
   do
   echo -n "*"
   done
  echo
done

70%的人都会被绕进去的for多重循环_第11张图片

十、等腰梯形

方法一:在等腰三角形的基础上掐掉头

#!/bin/bash
for ((a=5;a<=10;a++))    输出行数,a=5掐掉头
 do
    for ((b=10;b>=a;b--))      输出空倒三角行
    do 
    echo -n " "
    done
  i=$[$a*2-1]
  for ((c=1;c<=i;c++))      输出直线形成等腰三角形
    do
    echo -n "*"
    done
  echo 
done

70%的人都会被绕进去的for多重循环_第12张图片
方法二:空倒三角行+靠右直角三角形+矩形+靠左直角三角形
方法三:直角三角形+直角梯形
在此略

十一、菱形

在这里先输出一个倒等腰三角形

#!/bin/bash
for ((a=1;a<=10;a++))
do
 for ((b=1;b<=a;b++))
  do
  echo -n " "
  done
  i=$[$a*2-1]
 for ((c=19;c>=$i;c--))
 do
 echo -n "*"
 done
echo 
done

70%的人都会被绕进去的for多重循环_第13张图片
方法一:计算法(空倒三角+等腰三角)

#!/bin/bash
for ((a=1;a<=10;a++))     输出行数
do
    for ((b=10;b>=a;b--))     输出空倒三角
        do
        echo -n " "
        done
    i=$[$a*2-1]
    for ((c=1;c<=i;c++))       输出正等腰三角
       do
       echo -n "*"
       done
  echo
done

for ((p=2;p<=10;p++))      输出行数
do
  for ((q=1;q<=p;q++))      输出空正三角
     do
     echo -n " "
     done
 h=$[$p*2-1]
 for ((w=19;w>=$h;w--))       输出倒等角三角
     do
     echo -n "*"
     done
 echo 
done

方法二:拼接法(空倒三角+直角三角)

#!/bin/bash
for ((a=1;a<=10;a++))       输出行数
 do
          	   for ((b=10;b>=a;b--))      输出空倒三角
               do
               echo -n " "
               done
        	   for ((c=1;c<=a;c++))       输出直角三角1
 			   do
               echo -n "*"
               done
   		       for ((d=2;d<=a;d++))       输出直角三角2
               do
  			   echo -n "*"
  			   done
  echo 
done
for ((p=1;p<=10;p++))
 do
   			 for ((q=1;q<=p;q++))       输出空正三角
 		     do
 		     echo -n " "
		     done
             for ((s=10;s>=p;s--))       输出直角三角3
		     do
		     echo -n "*"
		     done
		     for ((w=9;w>=p;w--))        输出直角三角4
		     do
		     echo -n "*"
		     done
 echo
done

70%的人都会被绕进去的for多重循环_第14张图片

你可能感兴趣的:(shell,linux,云计算)