中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 再给新手出题(老手们请不要解题)
作者:
标题: 再给新手出题(老手们请不要解题) 上一主题 | 下一主题
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『楼 主』:  再给新手出题(老手们请不要解题)

问题很简单,通过批处理输出如下:
┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
┃1a  ┃1b  ┃1c  ┃1d  ┃1e  ┃1f  ┃1g  ┃1h  ┃1i  ┃1   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃2a  ┃2b  ┃2c  ┃2d  ┃2e  ┃2f  ┃2g  ┃2h  ┃2i  ┃2   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃3a  ┃3b  ┃3c  ┃3d  ┃3e  ┃3f  ┃3g  ┃3h  ┃3i  ┃3   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃4a  ┃4b  ┃4c  ┃4d  ┃4e  ┃4f  ┃4g  ┃4h  ┃4i  ┃4   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃5a  ┃5b  ┃5c  ┃5d  ┃5e  ┃5f  ┃5g  ┃5h  ┃5i  ┃5   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃6a  ┃6b  ┃6c  ┃6d  ┃6e  ┃6f  ┃6g  ┃6h  ┃6i  ┃6   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃7a  ┃7b  ┃7c  ┃7d  ┃7e  ┃7f  ┃7g  ┃7h  ┃7i  ┃7   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃8a  ┃8b  ┃8c  ┃8d  ┃8e  ┃8f  ┃8g  ┃8h  ┃8i  ┃8   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃9a  ┃9b  ┃9c  ┃9d  ┃9e  ┃9f  ┃9g  ┃9h  ┃9i  ┃9   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃ a  ┃ b  ┃ c  ┃ d  ┃ e  ┃ f  ┃ g  ┃ h  ┃ i  ┃    ┃
┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛
要求:不能一行行地echo或set /p(题目不难)
ps:论坛页面怎连这个也对不齐啊!

[ Last edited by zw19750516 on 2008-7-12 at 04:21 PM ]



批处理之家新域名:www.bathome.net
2008-7-12 15:43
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 2 楼』:  

上次的题目太难了,想了一晚上也没成功。
不过这次的我也写得不好。

另:对齐可用全角的空格,好像也只有在代码中效果较好,在这个表格中效果不佳。
@echo off
setlocal enableDelayedExpansion
set num=123456789
set ala=abcdefghi
for /l %%i in (0 1 9) do (
 if %%i equ 0 (
  echo ┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
 ) else (
  echo=
  echo ┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
 )
 for /l %%j in (0 1 8) do (
  if %%i equ 9 (
   set/p=┃ !ala:~%%j,1! <nul
  ) else (
   set/p=┃!num:~%%i,1!!ala:~%%j,1! <nul
  )
 )
 if %%i equ 9 (
  set/p=┃!num:~%%i,1!  ┃<nul
 ) else (
  set/p=┃!num:~%%i,1!  ┃<nul
 )
)
echo=
echo ┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛
pause>nul
题目怎么变了?晕,刚写好。

====
改好了。自我感觉,代码太繁。

[ Last edited by wxcute on 2008-7-12 at 05:08 PM ]

   此帖被 +3 点积分     点击查看详情   
评分人:【 bat-zw 分数: +3  时间:2008-7-12 17:06




┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 16:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  



  Quote:
题目怎么变了?晕,刚写好。

我是想加一点点难度,兄弟继续。



批处理之家新域名:www.bathome.net
2008-7-12 17:07
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 4 楼』:  

改好了,在2楼。好像顺便还升了一级。

[ Last edited by wxcute on 2008-7-12 at 05:12 PM ]

   此帖被 +5 点积分      点击查看详情   
评分人:【 bat-zw 分数: +5  时间:2008-7-12 17:24




┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 17:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  

建议兄弟把set ala=abcdefghi改成set "ala=abcdefghi "就可以减少代码中的if %%i equ 9这个判断语句。



批处理之家新域名:www.bathome.net
2008-7-12 17:22
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 6 楼』:  

楼上有道理,不过好像不行阿。最后一行会对不齐。



┌───────┐
├→学习→实践→┤
└───────┘
2008-7-12 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 7 楼』:  

新人,做出来加分不·?^_^



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-12 17:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lpk130
初级用户





积分 80
发帖 30
注册 2007-4-19
状态 离线
『第 8 楼』:  


@echo off
setlocal enableDelayedExpansion
set "num= 123456789 "
set "ala=abcdefghi "
for /l %%i in (0,1,10) do (
    if %%i equ 0 (
        echo ┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
    ) else (
        for /l %%j in (0,1,9) do (
            set/p=┃!num:~%%i,1!!ala:~%%j,1!  <nul
        )
        set/p=┃<nul
        echo=
        if %%i neq 10 (
            echo ┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
        ) else (
            echo ┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛
        )
    )
)
pause>nul
按wxcute的思路改写的

[ Last edited by lpk130 on 2008-7-13 at 07:25 AM ]

   此帖被 +5 点积分      点击查看详情   
评分人:【 bat-zw 分数: +5  时间:2008-7-13 09:30


2008-7-13 07:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by lpk130 at 2008-7-13 07:14:
[code]
@echo off
setlocal enableDelayedExpansion
set "num= 123456789 "
set "ala=abcdefghi "
for /l %%i in (0,1,10) do (
    if %%i equ 0 (
        echo ┏━━┳━━ ...

改得好,加分。



批处理之家新域名:www.bathome.net
2008-7-13 09:30
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  

望新人都来踊跃解题,多多开发思路,从各个角度来解题,本人将会一一视情况加分的(每天的加分有上限,但本人一定会补上的)。

[ Last edited by zw19750516 on 2008-7-13 at 02:32 PM ]



批处理之家新域名:www.bathome.net
2008-7-13 10:28
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:  先给个本人的解:


@echo off&setlocal enabledelayedexpansion
set "code= abcdefghi "&set "s=┃"
echo ┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
for /l %%a in (1,1,9) do (
    for /l %%i in (1,1,10) do set /p=%s%!code:~%%i,1!%%a  <nul
    set /p=%s%<nul&echo.&echo ┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
)
for /l %%i in (1,1,11) do set /p=%s%!code:~%%i,1!   <nul
echo.&echo ┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛
pause>nul
[ Last edited by zw19750516 on 2008-7-13 at 02:34 PM ]



批处理之家新域名:www.bathome.net
2008-7-13 11:14
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 12 楼』:  

11 楼你还是用了for啊? 很想知道不用for是怎样的、还可以大大缩短代码。?



致精致简!
2008-7-13 11:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by 26933062 at 2008-7-13 11:16:
11 楼你还是用了for啊? 很想知道不用for是怎样的、还可以大大缩短代码。?

是我说错了,已改正。



批处理之家新域名:www.bathome.net
2008-7-13 14:33
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 14 楼』:  

对齐输出有办法了。编辑帖子时用宋体字就行,不能做为代码就是了。不完美的地方就是行与行之间有空隙。

┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
┃1a  ┃1b  ┃1c  ┃1d  ┃1e  ┃1f  ┃1g  ┃1h  ┃1i  ┃1   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃2a  ┃2b  ┃2c  ┃2d  ┃2e  ┃2f  ┃2g  ┃2h  ┃2i  ┃2   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃3a  ┃3b  ┃3c  ┃3d  ┃3e  ┃3f  ┃3g  ┃3h  ┃3i  ┃3   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃4a  ┃4b  ┃4c  ┃4d  ┃4e  ┃4f  ┃4g  ┃4h  ┃4i  ┃4   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃5a  ┃5b  ┃5c  ┃5d  ┃5e  ┃5f  ┃5g  ┃5h  ┃5i  ┃5   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃6a  ┃6b  ┃6c  ┃6d  ┃6e  ┃6f  ┃6g  ┃6h  ┃6i  ┃6   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃7a  ┃7b  ┃7c  ┃7d  ┃7e  ┃7f  ┃7g  ┃7h  ┃7i  ┃7   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃8a  ┃8b  ┃8c  ┃8d  ┃8e  ┃8f  ┃8g  ┃8h  ┃8i  ┃8   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃9a  ┃9b  ┃9c  ┃9d  ┃9e  ┃9f  ┃9g  ┃9h  ┃9i  ┃9   ┃
┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
┃ a  ┃ b  ┃ c  ┃ d  ┃ e  ┃ f  ┃ g  ┃ h  ┃ i  ┃    ┃
┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛


[ Last edited by wxcute on 2008-7-13 at 07:52 PM ]



┌───────┐
├→学习→实践→┤
└───────┘
2008-7-13 18:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qianmo717
初级用户





积分 68
发帖 32
注册 2007-12-9
状态 离线
『第 15 楼』:  

@echo off&setlocal enabledelayedexpansion
echo ┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
for /l %%a in (1,1,10) do (
    for %%i in (a b c d e f g h i) do (
        if %%a==10 (
        set /p=┃  %%i <nul
        ) else (
        set /p=┃ %%i%%a <nul
        )
    )
    if %%a==10 goto 1  
    set /p=┃  %%a<nul
    set /p= ┃<nul&echo.&echo ┣━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━╋━━┫
)
:1
set /p=┃    ┃<nul
echo.&echo ┗━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┻━━┛
pause>nul
根据11楼改

2008-7-13 20:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: