[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

从C语言的题目中挑出来的题目给批处理新手做

所发代码若不止一行,请用code标签把代码部分括起来。

Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html

参考:批处理之家论坛使用常见问题FAQ
http://bbs.bathome.net/thread-3473-1-1.html


申请加精!
本人从《C语言资料大全》中搜的题目,给新手学习,给高手练习。呵呵。本人也没时间做,留给大家做咯。
=================================================================
                                                                                                                     ----------QQ:327828994

【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
      掉不满足条件的排列。


答案:见5楼
**********************************************************************************

【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
      情况,闰年且输入月份大于3时需考虑多加一天。

答案:见6楼
**********************************************************************************

【程序8】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

答案:见7楼
**********************************************************************************


【程序9】
题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。


答案:见36楼
**********************************************************************************

【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

答案:见10楼
**********************************************************************************

【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
      则表明此数不是素数,反之是素数。

答案:请参考13,15楼
**********************************************************************************


【程序13】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。


答案:见18,19楼
**********************************************************************************



【程序14】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
 重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。


答案:见23,24楼
**********************************************************************************


【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
::作者提示:资料中未说明何为辗除法。根据C源码可知,辗除法(若a>b,让数a对数b求模得到c,再让数b对数c求模,得到d,再让c对d求模,一直循环直到最后的求模余数n=0)

答案:见27楼
**********************************************************************************

【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
   找出1000以内的所有完数。
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
   第10次落地时,共经过多少米?第10次反弹多高?


答案:见37,38楼
**********************************************************************************

【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。


答案:见32楼
**********************************************************************************




【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
      for循环,第一层控制行,第二层控制列。



答案:见21楼

**********************************************************************************




【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。


答案:见33楼
**********************************************************************************

【程序28】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
   问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。


**********************************************************************************

【程序30】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。


答案:见34楼

**********************************************************************************

【程序37】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
      下次类推,即用第二个元素与后8个进行比较,并进行交换。


**********************************************************************************

【程序61】
题目:打印出杨辉三角形(要求打印出10行如下图)   
1.程序分析:
       1
      1  1
      1  2  1
      1  3  3  1
      1  4  6  4  1
      1  5  10 10 5  1 

答案:见22楼

**********************************************************************************



【程序69】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
   圈子,问最后留下的是原来第几号的那位。
【程序80】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
   猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
   一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
   问海滩上原来最少有多少个桃子?
答案:见44楼

**********************************************************************************



【程序81】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。


**********************************************************************************

【程序83】
题目:求0—7所能组成的奇数个数。


**********************************************************************************

【程序84】
题目:一个偶数总能表示为两个素数之和。


**********************************************************************************

【程序24】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。


**********************************************************************************

【程序67】
题目:输入一个数,最大的与第一个元素交换,最小的与最后一个元素交换,然后输出。


**********************************************************************************

【程序82】
题目:八进制转换为十进制


**********************************************************************************
6

评分人数

    • 邹哥来了: 短小精悍技术 + 1
    • 1055367558: 可以的技术 + 1
    • wxcute: 辛苦了,我想改成问答形式会更不错。PB + 18
    • foxJL: 题目很好PB + 10
    • youxi01: 辛苦。 建议将题目和解决方案按如下格式罗 ...PB + 20
【新青年世界】
windows+R
cmd
start http:/hi.baidu.com/huajinghua

本帖最后由 过客,匆匆 于 2018-5-10 17:31 编辑

回复 23# huajinghua


   菜鸟新手拙见:
觉得这个代码会一直运行下去,可以在"set /a b=%b%+1"后加一行"if %b% gtr %a% exit"
不知道以上观点正确与否,望指正。谢谢

TOP

程序69有误,不改了,呼终于看完了。

TOP

程序1
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=100
  3. for /l %%a in (1,1,4) do (
  4.     for /l %%b in (1,1,4) do (
  5.         for /l %%c in (1,1,4) do (
  6.             for /l %%d in (1,1,4) do (
  7.          if not %%a==%%b if not %%a==%%c if not %%a==%%d if not %%b==%%c if not %%b==%%d if not %%c==%%d if not defined _n set /a _!n!=%%a%%b%%c%%d&set /a t1+=1&set /a n+=1
  8.       )
  9.     )
  10.   )
  11. )
  12. for /f "tokens=2 delims==" %%a in ('set _') do echo;%%a
  13. echo;!t1!
  14. pause
复制代码
程序4
  1. @echo off&setlocal enabledelayedexpansion
  2. title 判断一年第几天
  3. :begin
  4. set /p d=输入某年某月末日(2015-08-05):
  5. set n=%d:~,4%
  6. set y=%d:~5,2%
  7. set r=%d:~8,2%
  8. if %y% gtr 12 echo;错误。&ping /n 3 127.1>nul&goto begin
  9. if %r% gtr 31 echo;错误。&ping /n 3 127.1>nul&goto begin
  10. if %y:~,1%==0 set y=%y:~1%
  11. if %r:~,1%==0 set r=%r:~1%
  12. set /a y1=%y%-2
  13. echo;%n%-%y%-%r%
  14. set /a n1=%n%%%400
  15. set /a n2=%n%%%100
  16. set /a n3=%n%%%4
  17. if %n1%==0 (
  18. set /a n=1
  19. ) else (
  20.   if not %n2%==0 (
  21.      if %n3%==0 (set /a n=1) else (set /a n=0)
  22. )
  23. )
  24. if %y%==1 echo;这是一年第%r%天。
  25. if not %y%==1 (
  26. if %y% gtr 1 set /a n+=1
  27. if %y% gtr 3 set /a n+=1
  28. if %y% gtr 5 set /a n+=1
  29. if %y% gtr 7 set /a n+=1
  30. if %y% gtr 8 set /a n+=1
  31. if %y% gtr 10 set /a n+=1
  32. if %y% gtr 12 echo;超过12个月了。&ping /n 3 127.1>nul&goto begin
  33. set /a t=%y1%*30+!n!+!r!+28
  34. echo;这是一年第!t!天。
  35. )
  36. pause
复制代码
程序8
  1. @echo off&setlocal enabledelayedexpansion
  2. title 九九乘法表
  3. for /l %%a in (1,1,9) do (
  4.     for /l %%b in (1,1,%%a) do (
  5.         set /a n=%%a*%%b
  6.         set /p=%%a*%%b=!n! <nul
  7.   )
  8. echo.
  9. )
  10. pause
复制代码
程序11
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p num=几月份
  3. set /a n1=1
  4. set /a n2=0
  5. :a
  6. set /a n=%n1%+%n2%
  7. echo;%n%
  8. set /a n1=%n2%
  9. set /a n2=%n%
  10. set /a t+=1
  11. if %t%==%num% goto b
  12. goto a
  13. :b
  14. pause
复制代码
程序12
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (100,1,200) do (
  3.     set k=
  4.     set /a n=%%a-1
  5.     for /l %%b in (2,1,!n!) do (
  6.     set /a num=%%a%%%%b
  7.     if !num!==0 set /a k+=1
  8.   )
  9. if not defined k echo;%%a
  10. )
  11. pause
复制代码
程序13
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%a in (1,1,9) do (
  3.     for /l %%b in (0,1,9) do (
  4.         for /l %%c in (0,1,9) do (
  5.             set /a n1=%%a*%%a*%%a
  6.             set /a n2=%%b*%%b*%%b
  7.             set /a n3=%%c*%%c*%%c
  8.             set /a n=!n1!+!n2!+!n3!
  9.             if !n!==%%a%%b%%c echo;%%a%%b%%c
  10.     )
  11.   )
  12. )
  13. pause
复制代码
程序14
  1. @echo off&setlocal enabledelayedexpansion
  2. set num=1
  3. set /p n=请输入要分解的数
  4. :a
  5. set /a k2=%n%%%2
  6. set /a k3=%n%%%3
  7. if %num%==1 if not %k2%==0 if not %k3%==0 (echo;本身就是质数。)
  8. set /a num+=1
  9. if %k2%==0 set /a n=%n%/2&set z=%z%*2
  10. if not %k2%==0 if %k3%==0 set /a n=%n%/3&set z=%z%*3
  11. if not %k2%==0 if not %k3%==0 (set z=%z%*%n%&goto b)
  12. goto a
  13. :b
  14. echo;%z:~1%
  15. pause
复制代码
程序16
  1. @echo off&setlocal enabledelayedexpansion
  2. title 最大公约数和最小公倍数
  3. set /p m=请输入第一个数字:
  4. set /p n=请输入第二个数字:
  5. set /a a=%m%,b=%n%
  6. :a
  7. set /a y=%m%%%%n%
  8. if %y%==0 echo;%n%是最大公约数。&goto b
  9. set /a m=%n%,n=%y%
  10. goto a
  11. :b
  12. set /a num=%a%*%b%/%n%
  13. echo;%num%是最小公倍数。
  14. pause
复制代码
程序19
  1. @echo off&setlocal enabledelayedexpansion
  2. title 1000以内的所有完数
  3. set m=0
  4. for /l %%a in (1,1,1000) do (
  5. set m=
  6. set /a k=%%a-1
  7.     for /l %%b in (1,1,!k!) do (
  8.         set /a n=%%a%%%%b
  9.         if !n!==0 set /a m=!m!+%%b
  10.   )
  11. if %%a==!m! echo;%%a
  12. )
  13. pause
复制代码
程序20
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1000000000
  3. set num=1000000000
  4. :a
  5. set /a m=%n%/2
  6. set n=%m%
  7. set /a t+=1
  8. set /a num=%num%+%m%
  9. if %t%==10 goto b
  10. goto a
  11. :b
  12. for /l %%a in (0,1,20) do (
  13. if not "!num:~%%a,1!"=="" set /a t1+=1
  14. if not "!m:~%%a,1!"=="" set /a t2+=1
  15. )
  16. set /a t4=7-!t2!
  17. if !t4!==1 set t5=0
  18. if !t4!==2 set t5=00
  19. if !t4!==3 set t5=000
  20. if !t1! gtr 7 (
  21. set num1=!num:~-7!
  22. call,set num=%%num:!num1!=%%
  23. set /p=共经过!num!.!num1!米,<nul
  24. )
  25. if !t2! leq 7 (
  26. set /p=第10次反弹0.!t5!!m!。<nul
  27. )
  28. pause
复制代码
程序21
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /l %%a in (1,1,9) do (
  4.     set /a n=!n!*2+1
  5. )
  6. echo;!n!
  7. pause
复制代码
程序23
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=*
  3. set t=1
  4. for /l %%a in (1,1,7) do (
  5. set /a num=%%a%%2
  6.     if %%a leq 4 (
  7.        echo;!n!
  8.        if %%a lss 4 if !num!==0 (set n=!n!***&set /a t+=3) else (set n=!n!**&set /a t+=2)     
  9.     )
  10.     if %%a gtr 4 (
  11.     if !num!==0 (set /a t-=3) else (set /a t-=2)
  12.     call,echo;%%n:~,!t!%%
  13.     )
  14. )
  15. pause
复制代码
程序25
  1. @echo off&setlocal enabledelayedexpansion
  2. set num=1
  3. set shuzi=0
  4. for /l %%a in (1,1,20) do (
  5. set num=
  6.     for /l %%b in (1,1,%%a) do (
  7.         set num=!num!*%%b
  8. )
  9. set /a num=!num:~1!
  10. set /a shuzi=!shuzi!+!num!
  11. )
  12. echo;!shuzi!
  13. pause
复制代码
程序30
  1. @echo off&setlocal enabledelayedexpansion
  2. titile 回文数
  3. for /l %%a in (1,1,9) do (
  4.     for /l %%b in (0,1,9) do (
  5.         for /l %%c in (0,1,9) do (
  6.             for /l %%d in (0,1,9) do (
  7.                 for /l %%e in (0,1,9) do (
  8. if %%a==%%e if %%b==%%d echo;%%a%%b%%c%%d%%e
  9.         )
  10.       )
  11.     )
  12.   )
  13. )
  14. pause
复制代码
程序37
  1. @echo off&setlocal enabledelayedexpansion
  2. title 排序
  3. set /p n1=输入第1个数字:
  4. set /p n2=输入第2个数字:
  5. set /p n3=输入第3个数字:
  6. set /p n4=输入第4个数字:
  7. set /p n5=输入第5个数字:
  8. set /p n6=输入第6个数字:
  9. set /p n7=输入第7个数字:
  10. set /p n8=输入第8个数字:
  11. set /p n9=输入第9个数字:
  12. set /p n10=输入第10个数字:
  13. for /l %%a in (0,1,10000000) do (
  14.     for /l %%b in (1,1,10) do (
  15.         if %%a==!n%%b! echo;%%a
  16.   )
  17. )
  18. pause
复制代码
程序69
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p r=总人数:
  3. for /l %%a in (1,1,%r%) do (
  4. set /a n=%%a%%3
  5. if not !n!==0 set num=!num! %%a
  6. )
  7. for %%a in (!num!) do set shuzi=%%a
  8. echo;!shuzi!
  9. pause
复制代码
程序80
  1. @echo off&setlocal enabledelayedexpansion
  2. title 分桃子
  3. set /a n1=1,n2=1
  4. for /l %%a in (1,1,5) do (
  5.     set /a n1=!n1!*4
  6.     set /a n2=!n2!*5
  7. )
  8. echo;!n1!
  9. echo;-----*n
  10. echo;!n2!
  11. set /a n3=!n2!-4
  12. rem 因为n×!n1!/!n2!一定是整数,所以n最少是3125所以原来的桃子最少有:3125-4=3121(个)
  13. echo;原来的桃子最少有:!n3!个。
  14. pause
复制代码
程序83
  1. @echo off&setlocal enabledelayedexpansion
  2. title 求0—7所能组成的奇数个数
  3. for /l %%a in (0,1,7) do (
  4.     for /l %%b in (0,1,7) do (
  5.         for /l %%c in (0,1,7) do (
  6.             for /l %%d in (0,1,7) do (
  7.                 for /l %%e in (0,1,7) do (
  8.                     for /l %%f in (0,1,7) do (
  9.                         for /l %%g in (0,1,7) do (
  10.         set /a n=%%g%%2
  11.         if not !n!==0 if not defined _%%a if not defined _%%b if not defined _%%c if not defined _%%d if not defined _%%e if not defined _%%f if not defined _%%g (
  12.            set _%%a+=1&set _%%b+=1&set _%%c+=1&set _%%d+=1&set _%%e+=1&set _%%f+=1&set _%%g+=1
  13.            echo;%%a%%b%%c%%d%%e%%f%%g&set /a t+=1
  14.         )     
  15.       )
  16.      )
  17.     )
  18.    )   
  19.   )
  20. )
  21. )
  22. echo;!t!
  23. pause
复制代码
程序84
  1. @echo off&setlocal enabledelayedexpansion
  2. title 一个偶数总能表示为两个素数之和(1000以内)
  3. set /p shuzi=输入一个偶数:
  4. for /l %%a in (2,1,1000) do (
  5.     set t=0
  6.     set /a n=%%a-1
  7.     for /l %%b in (2,1,!n!) do (
  8.         set /a n1=%%a%%%%b
  9.         if !n1!==0 set /a t+=1
  10. )
  11. if !t!==0 set num=!num! %%a
  12. )
  13. for %%a in (!num:~1!) do (
  14.     for %%b in (!num:~1!) do (
  15.         set /a shuzi1=%%a+%%b
  16.         if !shuzi1!==!shuzi! echo;%%a %%b
  17. )
  18. )
  19. pause
复制代码
程序24
  1. @echo off&setlocal enabledelayedexpansion
  2. title 前20项的和
  3. set /a n1=2,n2=3,n3=1,n4=2
  4. set "num=%n1% %n2%"
  5. set "shuzi=%n3% %n4%"
  6. set qiuhe=2/1+3/2
  7. for /l %%a in (1,1,18) do (
  8.     set /a n=!n1!+!n2!
  9.     set /a n5=!n3!+!n4!
  10.     set "num=!num! !n!"
  11.     set "shuzi=!shuzi! !n5!"
  12.     set /a qiuhe=!qiuhe!+!n!/!n5!
  13.     set n3=!n4!&set n4=!n5!
  14.     set n1=!n2!&set n2=!n!
  15. )
  16. echo;分子:!num!
  17. echo;分母:!shuzi!
  18. echo;和为!qiuhe!
  19. pause
复制代码
程序67
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p num=输入一个数字(不重复):
  3. for /l %%a in (0,1,10) do (
  4.     set n=100
  5.     set shuzi=!num:~%%a,1!
  6.     for /l %%b in (0,1,9) do (      
  7.         if %%b==!shuzi! (
  8.         set /a n=!n!+%%b
  9.         if not defined _n (
  10.         set /a _!n!+=1
  11.          )
  12.         )
  13.   )
  14. )
  15. for /f "tokens=1 delims==" %%a in ('set _') do (
  16. set k=%%a
  17. set k=!k:~-1!
  18. set /a t+=1
  19. if !t!==1 (set s=!k!)
  20. )
  21. set num3=%num:~0,1%
  22. set num4=%num:~-1%
  23. set num=%num:~1%
  24. call,set num=%%num:!num4!=%%
  25. call,set num=%%num:!k!=!num3!%%
  26. call,set num=%%num:!s!=!num4!%%
  27. echo;!k!!num!!s!
  28. pause
复制代码

TOP

回复 180# pcl_test

测试通过了。
这样这个贴的题目都有解了。
作为一个旁观者也是高兴的。谢谢回帖!

TOP

本帖最后由 pcl_test 于 2015-4-26 10:21 编辑

回复 179# pan528
【程序67】题意说明不清,有歧义
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p num=请输入一个至少2位的正整数:
  4. set "$=%num%#"
  5. set N=&for %%a in (4096 2048 1024 512 256 128 64 32 16) do if !$:~%%a!. NEQ . set /a N+=%%a & set $=!$:~%%a!
  6. set $=!$!fedcba9876543210 & set /a N+=0x!$:~16,1! & set /a N-=1
  7. set "ft=!num:~,1!"
  8. set "lt=!num:~-1!"
  9. for /l %%i in (0,1,!N!) do (
  10. set _!num:~%%i,1!=!num:~%%i,1!
  11. )
  12. for /f "tokens=1* delims==" %%j in ('set _') do (
  13. if not defined m set "min=%%k"
  14. set "max=%%k"
  15. set /a m+=1
  16. )
  17. set "num=!num:~1,-1!ж"
  18. set "num=!num:%max%=%ft%!"
  19. set "num=!num:%min%=%lt%!"
  20. echo %max%!num:~,-1!%min%
  21. pause
复制代码
【程序81】题目有问题,不存在这样一个两位数使得809*??=800*??+9*??+1
1

评分人数

TOP

本帖最后由 pan528 于 2015-4-25 22:53 编辑

回复 1# huajinghua

仔细看了一下,并运行了全部程序,有下面两个主要问题:
一、【程序67】还没有人做过,希望高手能显身。
题目:输入一个数,最大的与第一个元素交换,最小的与最后一个元素交换,然后输出。
二、【程序81】,有两位做了,一个是找不到数字,一个我验算了一下,答案不对,如果两位数是12,12*809≠800*12+9*12+1。不知是题目有问题,还是算法有问题……
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

全部26个题目及解法批命令如下:

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

本帖最后由 shelluserwlb 于 2014-11-17 10:23 编辑
  1. @echo off
  2. goto :start
  3. 程序11
  4. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
  5.    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  6. 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21...
  7. :start
  8. setlocal EnableDelayedExpansion
  9. set /a f1=1
  10. set /a f2=1
  11. set /p nt=请入月数:
  12. echo 第1个月:1对兔子 & if "%nt%" == "1"  goto :1
  13. echo 第2个月:1对兔子 & if "%nt%" == "2"  goto :1
  14. for /l %%i in (3,1,%nt%) do (
  15.     set /a f3=!f1!+!f2!
  16.     set /a f1=!f2!
  17.     set /a f2=!f3!
  18.     echo 第%%i个月:!f3!对兔子  
  19. )
  20. :1
  21. endlocal
  22. echo 统计完毕!& pause>nul
复制代码

TOP

本帖最后由 shelluserwlb 于 2014-11-17 10:15 编辑

  1. @echo off
  2. goto :start
  3. 程序4
  4. 题目:输入某年某月某日,判断这一天是这一年的第几天?
  5. 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
  6.       情况,闰年且输入月份大于3时需考虑多加一天。
  7. :start
  8. color 9f
  9. setlocal EnableDelayedExpansion
  10. set /a total=0
  11. set /a f=0
  12. set /p ndate=输入年月日(例: 2014.11.10):
  13. ::从输入的信息获取年、月、日
  14. for /f "tokens=1,2,3 delims=." %%i in ("%ndate%") do (
  15.     set /a nyear=%%i
  16.     set /a nmonth=%%j
  17.     set /a nday=%%k
  18.     if "!nmonth:~0,1!" == "0" set nmonth=!nmonth:~1,1!
  19.     if "!nday:~0,1!" == "0" set nday=!nday:~1,1!
  20. )
  21. ::判断该年是平年或闰年
  22. set /a t1=%nyear%%%400
  23. set /a t2=%nyear%%%4
  24. set /a t3=%nyear%%%100
  25. if %t1% equ 0 set /a f=1
  26. if %t2% equ 0 (if %t3% neq 0 set /a f=1)
  27. ::根据所输入的月份计算总天数
  28. if "%nmonth%" == "1" (set /a total=0+%nday% & goto :1 )
  29. if "%nmonth%" == "2" (set /a total=31+%nday% & goto :1 )
  30. if "%nmonth%" == "3" (set /a total=59+%f%+%nday% & goto :1 )
  31. if "%nmonth%" == "4" (set /a total=90+%f%+%nday% & goto :1 )
  32. if "%nmonth%" == "5" (set /a total=120+%f%+%nday% & goto :1 )
  33. if "%nmonth%" == "6" (set /a total=151+%f%+%nday% & goto :1 )
  34. if "%nmonth%" == "7" (set /a total=181+%f%+%nday% & goto :1 )
  35. if "%nmonth%" == "8" (set /a total=212+%f%+%nday% & goto :1 )
  36. if "%nmonth%" == "9" (set /a total=243+%f%+%nday% & goto :1 )
  37. if "%nmonth%" == "10" (set /a total=273+%f%+%nday% & goto :1 )
  38. if "%nmonth%" == "11" (set /a total=304+%f%+%nday% & goto :1 )
  39. if "%nmonth%" == "12" (set /a total=334+%f%+%nday% & goto :1 )
  40. :1
  41. ::输出计算结果
  42. if %total%==0 (
  43.     echo 输入日期信息错误,请重新输入!& pause>nul
  44.     cls & goto :START
  45. ) else (
  46.     echo %nyear%年%nmonth%月%nday%日是该年的第%total%天。
  47. )
  48. endlocal
  49. pause>nul
复制代码

TOP

程序13
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /l %%a in (1 1 9) do (
  4. for /l %%b in (0 1 9) do (
  5. for /l %%c in (0 1 9) do (
  6. set /a jud=%%a*%%a*%%a+%%b*%%b*%%b+%%c*%%c*%%c
  7. if !jud!==%%a%%b%%c echo !jud!
  8. )
  9. )
  10. )
  11. pause>nul
复制代码

TOP

程序12
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /l %%i in (101,2,200) do (
  4. set num=%%i
  5. call :judge
  6. )
  7. pause>nul
  8. :judge
  9. set times=2
  10. for /l %%a in (1,1,3) do (
  11. set /a times+=%%i/times
  12. set /a times/=2
  13. )
  14. for /l %%j in (3,2,%times%) do (
  15. set /a value=%%i %% %%j
  16. if !value!==0 goto :eof
  17. )
  18. echo %num%
复制代码
用了牛顿迭代法开平方  感觉效率还可以

TOP

程序11
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. set /a R0=1,R1=1
  4. set /p month=Please enter the month:
  5. for /l %%i in (2 1 %month%) do (
  6. set /a af=%%i-1,ag=%%i-2
  7. set /a R%%i=R!af! + R!ag!
  8. )
  9. echo !R%month%!
  10. pause>nul
复制代码
貌似超过45就不对了,如果要更多的话得专门写个无限数位加法了

TOP

程序9
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /l %%i in (1 1 8) do (
  4. for /l %%j in (1 1 8) do (
  5. set /a num=%%i+%%j,num%%=2
  6. if !num!==1 (set /p =■<nul) else (set /p =□<nul)
  7. )
  8. echo;
  9. )
  10. pause>nul
复制代码

TOP

程序8
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /l %%i in (1 1 9) do (
  4. set times=1
  5. for /l %%j in (1 1 %%i) do (
  6. set /a ans=%%i*%%j
  7. if not !times!==%%i (
  8. set /p =%%ix%%j=!ans!  <nul
  9. ) else (
  10. echo %%ix%%j=!ans!
  11. )
  12. set  /a times+=1
  13. )
  14. )
  15. pause>nul
复制代码

TOP

程序4
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. set /p str=Please enter(2014.7.28):
  4. for /f "delims=. tokens=1-3" %%a in ("%str%") do (
  5. call :jud %%a %%b %%c
  6. echo %%a.%%b.%%c is the !day!day for %%a
  7. pause>nul
  8. )
  9. :jud
  10. for %%i in (1 3 5 7 8 10 12) do set %%i=31
  11. for %%i in (4 6 9 11) do set %%i=30
  12. set /a jud=%1 %% 400
  13. if %jud%==0 (
  14. set 2=29
  15. ) else (
  16. set /a jud=%1 %% 4
  17. if !jud!==0 (
  18. set /a jud=%~1 %% 100
  19. if not !jud!==0 set 2=29
  20. ) else (set 2=28)
  21. )
  22. set /a month=%~2-1
  23. for /l %%i in (1 1 %month%) do (
  24. set /a day+=!%%i!
  25. )
  26. set /a day+=%3
复制代码
哎,不够熟练,竟然花了这么久...

TOP

返回列表