中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
<   <<   [1] [2]  >>
作者:
标题: 出给新手的题(加分题) 上一主题 | 下一主题
qzwqzw
银牌会员

天的白色影子


积分 2343
发帖 636
注册 2004-3-6
状态 离线
『第 16 楼』:  

3楼代码的问题在与边界定义问题 第一次执行:loop时 假设index获得99 则输出99 last减为99 第二轮loop: 假设index=rnd % 99得1 则输出1 在if句因为last=99<>100 则cell_1=99 (此处已经出错!) last减为98 第三轮loop index=rnd % 98 假设再得1 输出%cell_1% 此时错误彻底暴露 99被重复输出


2008-7-21 17:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2343
发帖 636
注册 2004-3-6
状态 离线
『第 17 楼』:  

修正后的代码
@echo off
for /l %%i in (0,1,9999) do set cell_%%i=%%i
set last=10000

:loop
set /a index=%random% %% %last%
set /a last-=1
call echo %%cell_%index%%% >>4l.txt
call set "cell_%index%=%%cell_%last%%%"
if %last% gtr 0 goto :loop
pause>nul


2008-7-21 18:23
查看资料  发短消息  网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 18 楼』:  

学习~几个算法都是线性的,取决于系数,也就是获取每个数值的时间。 PS:请教,我觉得每次都输出到文件应该会严重影响结果,毕竟IO操作是最费时间的,发现事实并不是这样。 [ Last edited by obsolete on 2008-7-21 at 09:17 PM ]


2008-7-21 20:46
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 19 楼』:  

Originally posted by zw19750516 at 2008-7-21 15:23: 这两天老总来检查,差点没累死人: [code] @echo off&setlocal enabledelayedexpansion for /l %%i in (0,1,99) do set .%%i=%%i for /l %%i in (0,1,99) do ( set /a a=!random!%% ...
看懂了 [ Last edited by obsolete on 2008-7-21 at 09:24 PM ]


2008-7-21 21:13
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
<   <<   [1] [2]  >>
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: