批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

晚上我也做做

晚上我也做做

TOP

程序1

【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
      掉不满足条件的排列。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,4) do (
  4.  for /l %%j in (1,1,4) do (
  5.     for /l %%k in (1,1,4) do (
  6.      set /a dd=%%i%%j%%k
  7.      if %%i neq %%j (
  8.         if %%i neq %%k (
  9.            if %%j neq %%k set /a n+=1 &echo !dd!))
  10. )))
  11. echo 总共!n!个
  12. pause>nul
复制代码

[ 本帖最后由 irresolute 于 2009-2-22 22:46 编辑 ]

TOP

判断101-200之间有多少个素数,并输出所有素数。

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


  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (101,2 200) do (
  4.   set tag=
  5.   set /a c=%%i/2
  6.   for /l %%j in (2,1,!c!) do (
  7.     set /a b=%%i %% %%j
  8.     if !b!==0 set tag=1)
  9.   if not defined tag echo %%i &set /a n+=1
  10. )
  11. echo 共!n!个素数
  12. pause>nul
复制代码

[ 本帖最后由 irresolute 于 2009-2-22 22:37 编辑 ]

TOP

问每个月的兔子总数为多少?

【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
  1. :main
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. set /a a=1
  5. set /a b=1
  6. set /p n=请输入月份
  7. if "!n!" gtr "2" (
  8. for /l %%i in (3,1,!n!) do (
  9. set /a c=!a!+!b!
  10. set /a b=!a!
  11. set /a a=!c!)) else ( set /a c=1)
  12. echo !c!
  13. goto :main
  14. pause>nul
复制代码

[ 本帖最后由 irresolute 于 2009-2-22 22:37 编辑 ]

TOP

分解质因素(14题)

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n=请输入一个整数
  4. set /a k=2
  5. for /l %%i in (2,1,%n%) do (
  6.    set /a d=!n!%%!k!
  7.    if !d!==0 (
  8.     echo !k!
  9.     set /a n=!n!/!k!
  10.    ) else (
  11.     set /a k=!k!+1
  12.     if !n!==!k! echo !k! & call :ex   
  13. )
  14. )
  15. goto :eof
  16. :ex
  17. pause>nul
复制代码

TOP

求其最大公约数和最小公倍数。(解法一)

【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
::作者提示:资料中未说明何为辗除法。根据C源码可知,辗除法(若a>b,让数a对数b求模得到c,再让数b对数c求模,得到d,再让c对d求模,一直循环直到最后的求模余数n=0)
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p p1=请输入整数
  4. set /p p2=请输入另一个整数
  5. set /a a=p1
  6. set /a b=p2
  7. :be
  8. set /a c=!a! %% !b!
  9. set /a a=!b!
  10. set /a b=!c!
  11. if !c! neq 0 (goto :be) else echo !a!是最大公约数
  12. pause>nul
  13. echo 求最大公倍数
  14. set /a max=%p1%*%p2%/!a!
  15. echo %max%是最大公倍数
  16. pause>nul
复制代码

TOP

求其最大公约数和最小公倍数。(解法二)

【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
::作者提示:资料中未说明何为辗除法。根据C源码可知,辗除法(若a>b,让数a对数b求模得到c,再让数b对数c求模,得到d,再让c对d求模,一直循环直到最后的求模余数n=0)
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p a=请输入一个整数
  4. set /p b=请输入另一个整数
  5. for /l %%i in (%a%,-1,1) do (
  6. set /a a1=!a!%%%%i
  7. set /a a2=!b!%%%%i
  8. if !a1!==0 if !a2!==0 set c=%%i&echo %%i& goto :t1
  9. )
  10. :t1
  11. pause>nul
  12. set /a cc=!a!*!b!/!c!
  13. echo !cc!
  14. pause>nul
复制代码

TOP

正整数分解质因数(解法2)

【程序14】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n=请输入整数
  4. set /p=%n%=<nul
  5. set /a k=2
  6. :main
  7. if !k!==%n% set /p=!k!<nul & goto :ex
  8. set /a c=!n! %% !k!
  9. if !c!==0 (
  10. set /p=!k!*<nul
  11. set /a n=!n!/!k!
  12. ) else (
  13. set /a k+=1
  14. )
  15. goto :main
  16. :ex
  17. pause>nul
复制代码

TOP

【程序19】

【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,1000) do (
  4. set /a k=%%i
  5. set /a n=!k!/2
  6. set /a s=0
  7. for /l %%j in (1,1,!n!) do (
  8.    set /a kk=!k! %% %%j
  9.    if !kk!==0  set /a s+=%%j
  10. )
  11. if !s!==!k! echo !k!
  12. )
  13. pause>nul
复制代码

TOP

【程序21】

【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a a=1
  4. for /l %%i in (1,1,9) do (
  5. set /a b=2*!a!+2
  6. set /a a=!b!
  7. )
  8. echo 第一天摘的桃子数是 !a!
  9. pause>nul
复制代码

TOP

【程序23】

【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,2,7) do (
  4. set /a n=%%i
  5. for /l %%j in (1,1,!n!) do (
  6.    set /p=*<nul
  7.   )
  8. echo.
  9. )
  10. for /l %%i in (5,-2,1) do (
  11. set /a n=%%i
  12. for /l %%j in (1,1,!n!) do (
  13.    set /p=*<nul
  14.   )
  15. echo.
  16. )
  17. pause>nul
复制代码

TOP

【程序25】

【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a s=0
  4. for /l %%i in (1,1,20) do (
  5. set /a k=%%i
  6. set /a s1=1
  7. for /l %%j in (1,1,!k!) do (
  8.    set /a s1*=%%j
  9. )
  10. set /a s+=!s1!
  11. )
  12. echo !s!&pause>nul
复制代码

TOP

程序30 判断回文

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :main
  4. set a=
  5. set /p a=请输入一个五位数
  6. if "!a:~0,1!"=="!a:~4,1!" (
  7. if "!a:~1,1!"=="!a:~3,1!"  (echo !a!是回文) else echo !a!不是回文
  8. ) else (
  9. echo !a!不是回文
  10. )
  11. pause>nul
  12. goto :main
复制代码

[ 本帖最后由 irresolute 于 2009-2-25 13:40 编辑 ]

TOP

【程序28】 (这题费了劲的,若对要给偶加分)

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
   问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=5
  4. set  b=
  5. call :loop 5
  6. echo 第五个人!b!岁
  7. pause>nul
  8. goto :eof
  9. :loop
  10. set /a n=%1
  11. set /a n-=1
  12. if !n!==0 (set /a b=10 & goto :eof) else (
  13. call :loop !n!
  14. set /a b+=2
  15. )
复制代码

[ 本帖最后由 irresolute 于 2009-2-25 16:34 编辑 ]

TOP

返回列表