LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2398|回复: 19

习题:打印任意边长的正方形

[复制链接]
发表于 2004-6-3 09:30:47 | 显示全部楼层 |阅读模式

  1. /*
  2. * 打印任意边长的正方形,图案形状如下:
  3. *          *
  4. *        * * *
  5. *      * * * * *
  6. *    * * * * * * *
  7. *      * * * * *
  8. *        * * *
  9. *          *
  10. *
  11. */
复制代码
发表于 2004-6-3 10:55:03 | 显示全部楼层

这是正方型吗?

打印出来象是菱形
发表于 2004-6-3 11:32:10 | 显示全部楼层

回复: 习题:打印任意边长的正方形

最初由 seablue 发表

  1. /*
  2. * 打印任意边长的正方形,图案形状如下:
  3. *          *
  4. *        * * *
  5. *      * * * * *
  6. *    * * * * * * *
  7. *      * * * * *
  8. *        * * *
  9. *          *
  10. *
  11. */
复制代码

什么要求? 比如:输入5,就打印边长是5个*的正方形?

  1. * * * * *
  2. * * * * *
  3. * * * * *
  4. * * * * *
  5. * * * * *
复制代码

是这样么? :ask
 楼主| 发表于 2004-6-3 17:10:08 | 显示全部楼层

回复: 这是正方型吗?

最初由 stoneme 发表
打印出来象是菱形

是正方形,可能不同浏览器看的效果不一样。

最初由 javalee 发表
什么要求? 比如:输入5,就打印边长是5个*的正方形?

  1. * * * * *
  2. * * * * *
  3. * * * * *
  4. * * * * *
  5. * * * * *
复制代码

是这样么? :ask


对!但要按照我要求的那个形状摆放
发表于 2004-6-3 17:51:49 | 显示全部楼层
正方形可以搞出来,而菱形比较麻烦的说 :ask

  1. #!/bin/ksh
  2. in=$1
  3. function _do { n=1;while ((n<=$in));do echo -n "* ";((n+=1));done;echo;}
  4. m=1;while ((m<=$1));do _do;((m+=1));done
复制代码

test result:

  1. /home/lee#ksh file 5
  2. * * * * *
  3. * * * * *
  4. * * * * *
  5. * * * * *
  6. * * * * *
复制代码
 楼主| 发表于 2004-6-3 18:11:52 | 显示全部楼层
[linuxer@mydesktop linuxer]$ ksh tt.sh
tt.sh[4]: m<=: unexpected `end of expression'
发表于 2004-6-3 18:24:55 | 显示全部楼层
最初由 seablue 发表
[linuxer@mydesktop linuxer]$ ksh tt.sh
tt.sh[4]: m<=: unexpected `end of expression'

语法格式的问题
发表于 2004-6-3 18:54:51 | 显示全部楼层
c下两个for就行
发表于 2004-6-3 19:00:58 | 显示全部楼层
最初由 pinksnoopy 发表
c下两个for就行

算法是一的样
  1. n=1;while ((n<=$1));do
  2.         m=1;while ((m<=$1));do
  3.                 echo -n "* ";((m+=1))
  4.         done;echo;((n+=1))
  5. done
复制代码

m<=$1要改成$2的话,就可以打印长方形 ;)
发表于 2004-6-4 09:13:29 | 显示全部楼层

这个边长应该是5*根号2


  1. M=5
  2. for (( j=1;j <= M; j=(j + 1) )) ;do
  3.         echo -n "="
  4.         for (( i=M;  i > 0 ;i=(i - 1) )); do
  5.                 if [ $j -lt $i ]
  6.                 then
  7.                         echo -n " "
  8.                 else
  9.                         echo -n "*"
  10.                 fi
  11.         done
  12.         for (( i=1; i < j ; i=(i + 1) ));do
  13.                 echo -n "*"
  14.         done
  15.         echo ""
  16. done
  17. for (( j=( M -1 ); j >=1; j=(j -1) )) ; do
  18.         echo -n "="
  19.         for(( i=M; i > 0 ;i=(i -1 ) )); do
  20.                 if [ $j -lt $i ]
  21.                 then
  22.                         echo -n " "
  23.                 else
  24.                         echo -n "*"
  25.                 fi
  26.         done
  27.         for (( i=1; i< j ; i=(i + 1) )); do
  28.                 echo -n "*"
  29.         done
  30.         echo ""
  31. done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表