shell語言列印矩形、三角形、平行四邊形、梯形、菱形、空心菱形等

2020-10-07 12:01:05

shell語言列印三角形、平行四邊形、梯形、菱形等

這是一個循序漸進的過程,請從第一個開始看

1.列印 ***** ;

line="";ch="\x2a"   # "\x2a"表示星號*
for((i=0;i<5;i++));do 
	line=$line$ch
done
echo -e $line

2.列印 5*5矩形
在這裡插入圖片描述

for((j=0;j<5;j++));do
	line="";ch="\x2a"
	for((i=0;i<5;i++));do
		line=$line$ch
	done
	echo -e $line
done

3.四種等腰直角三角形

  1. 直角在左下
    在這裡插入圖片描述

     for((y=0;y<5;y++));do
       line="";ch="\x2a"
       for((x=0;x<=y;x++));do   # 看斜線的座標
         line=$line$ch
       done
       echo -e $line
     done
    
  2. 直角在左上
    在這裡插入圖片描述

     for((y=0;y<5;y++));do
       line="";ch="\x2a"
       for((x=0;x+y<5;x++));do   # 看斜線的座標
         line=$line$ch
       done
       echo -e $line
     done
    
  3. 直角在右上
    在這裡插入圖片描述

     for((y=0;y<5;y++));do
       line="";ch="\x20"   # \x20是空格符
       for((x=0;x<5;x++));do
         if((x==y));then   # 當x=y後,空格由星號替代
           ch="\x2a"
         fi
         line=$line$ch
       done
       echo -e $line
     done
    
  4. 直角在右下
    在這裡插入圖片描述

     for((y=0;y<5;y++));do
       line="";ch="\x20"
       for((x=0;x<5;x++));do
         if((x+y==4));then  #過斜線以後  空格由星號替代
           ch="\x2a"
         fi
         line=$line$ch
       done
       echo -e $line
     done
    

4.等腰三角形
在這裡插入圖片描述

 for((y=0;y<5;y++));do
   line="";ch="\x20"
   for((x=0;x-y<5;x++));do   # 控制右邊界
     if((x+y==4));then		# 控制左邊界
       ch="\x2a"
     fi
     line=$line$ch
   done
   echo -e $line
 done

5.等腰三角形(距左一定距離)
在這裡插入圖片描述

 left=40;right=40  #左邊界頂點位置與右邊界頂點位置
 for((y=0;y<5;y++));do
   line="";ch="\x20"
   for((x=0;x<=right;x++));do
     if((x==left));then
       ch="\x2a"
     fi
     line=$line$ch
   done
   echo -e $line
   ((left--));((right++)) #控制幅度 也可以寫成left-=n;
 done

6.等腰梯形
在這裡插入圖片描述

 left=35;right=45  #等腰三角形左右邊界頂點位置不同則變成了等腰梯形
 for((y=0;y<5;y++));do
   line="";ch="\x20"
   for((x=0;x<=right;x++));do 
     if((x==left));then
       ch="\x2a"
     fi
     line=$line$ch
   done
   echo -e $line
   ((left--));((right++))
 done

7.普通三角形(或普通梯形,只需修改left與right不等)
在這裡插入圖片描述

 left=40;right=40;ldlt=-2;rdlt=4  #ldlt rdlt 可以理解成左右邊界的斜率
 for((y=0;y<5;y++));do
   line="";ch="\x20"
   for((x=0;x<=right;x++));do
     if((x==left));then
       ch="\x2a"
     fi
     line=$line$ch
   done
   echo -e $line
   ((left+=ldlt));((right+=rdlt))
 done

8.平行四邊形
平行四邊形

 left=40;right=50;ldlt=-4;rdlt=-4
 for((y=0;y<5;y++));do
   line="";ch="\x20"
   for((x=0;x<=right;x++));do
     if((x==left));then
       ch="\x2a"
     fi
     line=$line$ch
   done
   echo -e $line
   ((left+=ldlt));((right+=rdlt))
 done

9.菱形
在這裡插入圖片描述

 left=40;right=40;ldlt=-3;rdlt=3;maxy=9
 for((y=0;y<maxy;y++));do
   line="";ch="\x20"
   for((x=0;x<=right;x++));do
     if((x==left));then
       ch="\x2a"
     fi
     line=$line$ch
   done
   echo -e $line
   if((y==maxy/2));then
     ((ldlt*=-1));((rdlt*=-1))
   fi
   ((left+=ldlt));((right+=rdlt))
 done

10.空心菱形
在這裡插入圖片描述

 left=40;right=40;ldlt=-3;rdlt=3;maxy=9
 for((y=0;y<maxy;y++));do
   line="";ch="\x20"
   for((x=0;x<=right;x++));do
     if((x==left||x==right));then
       ch="\x2a"
     else
       ch="\x20"
     fi
     line=$line$ch
   done
   echo -e $line
   if((y==maxy/2));then
     ((ldlt*=-1));((rdlt*=-1))
   fi
   ((left+=ldlt));((right+=rdlt))
 done