中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 出题目,全是我从C语言的题目中挑出来的
« [1] [2] [3] »
作者:
标题: 出题目,全是我从C语言的题目中挑出来的 上一主题 | 下一主题
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 16 楼』:  

水仙花数

建议使用3重循环……

2008-4-11 21:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 17 楼』:  球落地问题(程序20):

因cmd局限于10位数字,用这种方法仅能精确算出球第10次落地弹起的高度,对于10次经过的距离不能精确计算(郁闷中):
@echo off
set /a n=100*10000000&set m=0
:begin
if %m% gtr 0 set str=%str%+2*%n%
if %m% gtr 0 set /a str=%str%/10000000
set /a n/=2&set /a m+=1
if %m% lss 10 goto begin
set /a str=%str%+100/2
echo 第10次球落地后共经过%str%米的距离
:lp
if "%n:~,-6%"=="" set n=0%n%
if "%n:~,-6%"=="" goto lp
echo 第10次弹起为0.%n%米
pause>nul
[ Last edited by zw19750516 on 2008-4-11 at 10:05 PM ]



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

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 18 楼』:  年纪问题(程序28):


@echo off&setlocal enabledelayedexpansion
set n=10
for %%i in (2,2,2,2) do set /a n+=%%i&cls&echo 第五个人年纪是!n!岁
pause>nul




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





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 19 楼』:  

水仙花算法 确实三重循环为好  下面的忘记是那位版主写的  记得是namejm 版主写的:
@echo off
echo.
echo         三位的水仙花数有:
echo.
setlocal enabledelayedexpansion
for /l %%i in (1,1,9) do (
    for /l %%j in (0,1,9) do (
        for /l %%k in (0,1,9) do (
            set a=%%i
            set b=%%j
            set c=%%k
            set num1=!a!!b!!c!
            set /a num2=!a!*!a!*!a!+!b!*!b!*!b!+!c!*!c!*!c!
            if !num1! equ !num2! echo                !num1!
        )
    )
)
pause
goto :eof




简单!简单!再简单!
2008-4-11 22:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 20 楼』:  奇数个数(程序83):


@echo off
set /a str=6*7*7*7*7*7*4
echo 能组成%str%个奇数
pause>nul




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

永远的学习者


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



  Quote:
Originally posted by terse at 2008-4-11 22:34:
水仙花算法 确实三重循环为好  下面的忘记是那位版主写的  记得是namejm 版主写的:
[code]
@echo off
echo.
echo         三位的水仙花数有:
echo.
setlocal  ...

我不这样认为,我的代码就能很好地实现了(开始是少打了个*),何必还要写这么复杂的代码。



批处理之家新域名:www.bathome.net
2008-4-11 22:41
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 22 楼』:  

从效率讲,3重循环比从111循环到999好。

对程序代码来说效率是第一的。

2008-4-11 23:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 23 楼』:  

如果代简单的话 那就直接SET/a var
var=!str:~,1!!str:~,1!*!str:~,1!+!str:~1,1!*!str:~1,1!*!str:~1,1!.....



简单!简单!再简单!
2008-4-11 23:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





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

个人认为 15楼和19楼没什么效率上的区别。
倒是15楼把延迟变量放到for内部有点多此一举。
若想证明效率谁的高,最好靠事实说话
求 1-10000 的水仙花数,同时记录下批处理运行时间,不就有结果了?



致精致简!
2008-4-12 00:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 25 楼』:  

所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数

15楼的:

  Quote:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (100,1,999) do (
   
    set str=%%i
    set/a a=!str:~,1!, b=!str:~1,1!, c=!str:~2,1!
    set /a var=!a!*!a!*!a!+!b!*!b!*!b!+!c!*!c!*!c!
    if !var! equ !str! echo !str!
   
)
pause

19楼的:

  Quote:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,9) do for /l %%j in (0,1,9) do for /l %%k in (0,1,9) do (

       set/a a=%%i,b=%%j,c=%%k
       set num1=!a!!b!!c!
       set /a num2=!a!*!a!*!a!+!b!*!b!*!b!+!c!*!c!*!c!
       if !num1! equ !num2! echo !num1!

)
pause

[ Last edited by plp626 on 2008-4-12 at 12:51 AM ]



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-12 00:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sh19871122
新手上路





积分 18
发帖 8
注册 2008-4-4
状态 离线
『第 26 楼』:  

先谢谢各位了

2008-4-12 07:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 27 楼』:  

循环次数上一样麽?
哪个更少呢?
取每位,和将几位合起来那个更快呢?

2008-4-12 14:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





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



  Quote:
Originally posted by slore at 2008-4-12 14:45:
循环次数上一样麽?
哪个更少呢?
取每位,和将几位合起来那个更快呢?

求 1-10000 的水仙花数,同时记录下批处理运行时间,不就有结果了?



致精致简!
2008-4-12 15:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 29 楼』:  



  Quote:
Originally posted by 26933062 at 2008-4-12 03:00 PM:

求 1-10000 的水仙花数,同时记录下批处理运行时间,不就有结果了?

两个时间一样,误差在0.01秒以内,小于%time%的“系统”误差。



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-4-12 16:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 30 楼』:  

如果你可以测试到99999999999999999999999999999999999的话……

2008-4-12 16:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: