中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 11:24
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]文本输出~ 查看 2,997 回复 47
16 发表于 2008-05-07 19:55 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
说你是马甲=。=
17 发表于 2008-05-07 20:40 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by 26933062 at 2008-5-7 19:44:
回复 12 楼
不好意识,答案仍不正确,可能是我描述的不够清楚吧。
每个字母的正上方不能是空格。
这么说吧
随机生成第一个字母,比如说是a就把 ...

做到这点并不难,把我12的代码稍做修改就可以实现,但难的是这样就难以满足字符总数为60的要求了,如当第一行的字符仅为一个a时,代码如下:
@echo off&setlocal enabledelayedexpansion
set "str=ab"&set /a a=%random%%%60+1
:begin
set /a b=%random%%%2
set c=!str:~%b%,1!&set var=%var%!c!
set /a n+=1
if %n% lss %a% goto begin
echo 下面为本次生成的字符串:
echo %var%
set "str="&set n=0
:lp
if !n! lss 60 if defined var (
set /a b=%random%%%2
if !b! equ 0 (
set "b= "
) else (
set b=!var:~,1!&set /a n+=1
)
set str=%str%!b!
set var=%var:~1%
goto lp
)
echo.%str%
if !n! lss 60 set var=%str%&set str=&goto lp
pause>nul
批处理之家新域名:www.bathome.net
18 发表于 2008-05-07 21:14 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
呵呵,看来是我的描述出了大问题了。
结果中第一行的字符永远不会比第二行少,第二行永远不会比第三行少。。。。。。。。
致精致简!
19 发表于 2008-05-07 21:27 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
老实说,我是真被你搞晕头了,要不劳兄弟写出代码来吧!
批处理之家新域名:www.bathome.net
20 发表于 2008-05-07 21:33 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
有这么难理解吗?
老实说,看顶楼的样本应该就知道了,只是把a和b的总数定为60个而以,
zw19750516 兄写的几个代码有哪个是输出顶楼格式的?
致精致简!
21 发表于 2008-05-07 21:55 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
那是我理解不好,就请兄弟写出代码来看看吧!
批处理之家新域名:www.bathome.net
22 发表于 2008-05-07 22:21 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
ababababababababa
xbxbxxabaxxbaxxxa
xbxxxxaxaxxbaxxxx
xxxxxxaxaxxbaxxxx
xxxxxxxxaxxbxxxxx
xxxxxxxxxxxbxxxxx

x代表空格
比如第一行的第2个字符是b 到了第四行时第2个字符成了空格。。。 到了第5行的第二个字符 也必须是空格 如果是在第三行时变成空格,那以后的行,第二的位置上也必须是空格
不知我这样说 能否明白~~^_^
23 发表于 2008-05-07 22:22 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
领会错误 删贴

[ Last edited by terse on 2008-5-7 at 11:10 PM ]
简单!简单!再简单!
24 发表于 2008-05-07 22:24 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by pusofalse at 2008-5-7 22:21:
ababababababababa
xbxbxxabaxxbaxxxa
xbxxxxaxaxxbaxxxx
xxxxxxaxaxxbaxxxx
xxxxxxxxaxxbxxxxx
xxxxxxxxxxxbxxxxx

x代表空格
比如第一行的第2个字符是b 到了第四行时第2个字符 ...

如是这样,请运行我17的代码。
批处理之家新域名:www.bathome.net
25 发表于 2008-05-07 22:27 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
希望可以换个90的思维……问题就简单些了……
26 发表于 2008-05-07 22:41 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-7 10:24 PM:

如是这样,请运行我17的代码。


嗯,如果是没有个数限制的情况下确实是这样。。。但是真是不好意思~ 我刚才又忘记说了,ab个数加起来要等于60

各位前辈的执着与钻研精神 真是佩服至极!
27 发表于 2008-05-07 23:02 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
&&那我只能说这道题目出得有问题了,要同时满足随机生成字符串和递减输出以及输出字符总数(不包括原始字符串和空格)为60个这三个条件是很难做到的。
  这要看第一:原始生成的字符串字符数多不多,如生成只一个字符的原始字符串看誰能保证以后59行每行都不生成空格。
  还要看第二:每行生成的空格数多不多了,如果在第一行就生成了30个以上的空格,输出字符总数为60个的条件怕是难以保住了吧。
批处理之家新域名:www.bathome.net
28 发表于 2008-05-07 23:08 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
回复23楼 terse
你的代码也不对,每行的横向是不可能出现重复字母的,比如 bb或aa 应该是abababab 或 bababa 并且你的代码好像会显示很多多余的空行。。
a和b的总数是60个,但哪个位置是a哪个位置是b不是确定的,是随机的。
但左右相邻的是不能重复,比如 bb 就不行,除非是b空格b,但第一行是不能有空格的。而所有的纵向是必须一样的。
致精致简!
29 发表于 2008-05-07 23:13 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
解铃还需系铃人。。。 到批处理之家看看吧,但貌似现在还没有给出源码,那里的版主也是超强的,只是没有时间上网而已
30 发表于 2008-05-07 23:19 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
算法问题……我想论坛里高手还是可以解决的。

a和b总共60个?你给的输出貌似不够吧?
论坛跳转: