[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

在控制台打印金字塔

题目要求:
    用字符*打印一个金字塔,不限语言。

效果:


实现:
  1. @echo off
  2. set "str=                                           ******************************************"
  3. for /l %%i in (1,1,38) do (
  4. call,echo,%%str:~%%i,%%i%%
  5. )
  6. set/p=
复制代码
欢迎帖码,语言不限。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

我要来答,给我3分钟。

TOP

  1. >>> print(''.join([('*'*r).center(17,'-')+"\n" for r in range(1,18,2)]))
  2. --------*--------
  3. -------***-------
  4. ------*****------
  5. -----*******-----
  6. ----*********----
  7. ---***********---
  8. --*************--
  9. -***************-
  10. *****************
复制代码
1

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

ps
  1. $n=9;1..$n|%{' '*($n-$_)+'*'*(2*$_-1)}
复制代码
2

评分人数

TOP

  1. @echo off & setlocal EnableDelayedExpansion
  2. set max=78
  3. for /l %%$ in (1 1 10) do (
  4.     set a=!a!**
  5.     call :zhong !a!
  6. )
  7. pause
  8. :zhong
  9. set s=%1
  10. for /l %%# in (1,2,!max!) do if "!s:~%max%,1!" == "" set "s= !s! "
  11. set s=!s:~1,%max%!& echo;!s!
  12. exit /b
复制代码
1

评分人数

TOP

仅支持中文效率极低:http://www.bathome.net/thread-43049-1-1.html
2

评分人数

TOP

这个贴应该发到出题区。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 老刘1号 于 2017-3-18 18:25 编辑

受win7CMD特性限制,只支持XP系统。
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. ::CODER BY Old.Liu POWERD BY iBAT
  4. set /p long=Input:
  5. set /a long=long/2
  6. set /a long=long*2+1
  7. set /a half=long/2
  8. set /a i=1
  9. for /l %%a in (1 1 !half!) do set/p= <nul
  10. for /l %%a in (1 1 !i!) do set/p=*<nul
  11. echo.
  12. if !long! == 1 goto end
  13. :loop
  14. set /a i+=2
  15. set /a half-=1
  16. for /l %%a in (1 1 !half!) do set/p= <nul
  17. for /l %%a in (1 1 !i!) do set/p=*<nul
  18. echo.
  19. if "!i!" equ "!long!" goto end
  20. goto loop
  21. :end
  22. pause
复制代码
1

评分人数

    • happy886rr: 左边怎么没空格,不兼容win7技术 + 1

TOP

回复 7# codegay

出题区权限不够,挑战区这题又太简单。

TOP

回复 9# happy886rr

继续搞点这种题目啊,趣味性十足。

TOP

被截图蒙蔽了,实际上并没有居中的要求?
那么可以减几行
  1. @echo off&setlocal enabledelayedexpansion
  2. set "kong="
  3. for /l %%a in (1,1,17) do set "kong=!kong! "
  4. set "s=*"
  5. for /l %%a in (1,1,17) do (
  6.    echo !kong!!s!
  7.    set "kong=!kong:~1!"
  8.    set "s=!s!**!
  9. )
  10. pause
复制代码

TOP

嗯嗯,还可以再少几行
  1. @set s=                 *
  2. :r
  3. @echo;%s%&if "%s:~0,1%"==" " set s=%s:~1%%s:~-1%%s:~-1%&goto :r
  4. @pause
复制代码
1

评分人数

TOP

这样判断的话,又可以再少几个字
  1. @set s=                 *
  2. :r
  3. @echo(%s%&if %s:~,1%*==* set s=%s:~1%**&goto:r
  4. @pause
复制代码

TOP

  • my $s="          *          \n";
  • do { print $s } while ( $s=~s/ (\*+) /*$1*/ );
1

评分人数

TOP

用goto取代if,又能减少几个字节。
  1. @set s=                 O
  2. :O
  3. @echo;%s%&set s=%s:~1%OO&goto%s:~,2%O
  4. :OO
  5. pause
复制代码

TOP

返回列表