中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 04:43
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 再给新手出题(老手们请不要解题)
楼 主 再给新手出题(老手们请不要解题) 发表于 2008-07-12 15:43 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
问题很简单,通过批处理输出如下:

┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
┃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
2 发表于 2008-07-12 16:57 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
上次的题目太难了,想了一晚上也没成功。
不过这次的我也写得不好。

另:对齐可用全角的空格,好像也只有在代码中效果较好,在这个表格中效果不佳。

@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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +3 2008-07-12 17:06
┌───────┐
├→学习→实践→┤
└───────┘
3 发表于 2008-07-12 17:07 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
题目怎么变了?晕,刚写好。

我是想加一点点难度,兄弟继续。
批处理之家新域名:www.bathome.net
4 发表于 2008-07-12 17:10 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
改好了,在2楼。好像顺便还升了一级。

[ Last edited by wxcute on 2008-7-12 at 05:12 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +5 2008-07-12 17:24
┌───────┐
├→学习→实践→┤
└───────┘
5 发表于 2008-07-12 17:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
建议兄弟把set ala=abcdefghi改成set "ala=abcdefghi "就可以减少代码中的if %%i equ 9这个判断语句。
批处理之家新域名:www.bathome.net
6 发表于 2008-07-12 17:40 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
楼上有道理,不过好像不行阿。最后一行会对不齐。
┌───────┐
├→学习→实践→┤
└───────┘
7 发表于 2008-07-12 17:43 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
新人,做出来加分不·?^_^
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
8 发表于 2008-07-13 07:14 ·  中国 广东 深圳 电信
初级用户
积分 80
发帖 30
注册 2007-04-19 23:21
UID 85763
性别 男
状态 离线

@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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +5 2008-07-13 09:30
9 发表于 2008-07-13 09:30 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
Originally posted by lpk130 at 2008-7-13 07:14:

@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
10 发表于 2008-07-13 10:28 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
望新人都来踊跃解题,多多开发思路,从各个角度来解题,本人将会一一视情况加分的(每天的加分有上限,但本人一定会补上的)。

[ Last edited by zw19750516 on 2008-7-13 at 02:32 PM ]
批处理之家新域名:www.bathome.net
11 先给个本人的解: 发表于 2008-07-13 11:14 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线

@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
12 发表于 2008-07-13 11:16 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
11 楼你还是用了for啊? 很想知道不用for是怎样的、还可以大大缩短代码。?
致精致简!
13 发表于 2008-07-13 14:33 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
Originally posted by 26933062 at 2008-7-13 11:16:
11 楼你还是用了for啊? 很想知道不用for是怎样的、还可以大大缩短代码。?

是我说错了,已改正。
批处理之家新域名:www.bathome.net
14 发表于 2008-07-13 18:44 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
对齐输出有办法了。编辑帖子时用宋体字就行,不能做为代码就是了。不完美的地方就是行与行之间有空隙。

┏━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┳━━┓
┃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 ]
┌───────┐
├→学习→实践→┤
└───────┘
15 发表于 2008-07-13 20:37 ·  中国 吉林 长春 联通
初级用户
积分 68
发帖 32
注册 2007-12-09 17:16
UID 105152
性别 男
状态 离线
@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楼改
论坛跳转: