返回列表 发帖

【程序1】 题 2

@echo off
set u=1 2 3 4
for %%j in (%u%) do for %%h in (%u%) do for %%g in (%u%) do if %%j neq %%h if %%h neq %%g if %%g neq %%j echo %%j%%h%%g
pause

[ 本帖最后由 mkl 于 2008-8-3 22:49 编辑 ]

TOP

回复 1楼 的帖子

"【程序81】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。"
题目中的 “  800*??+9*??+1    ” 后面的 “ +1 ”应该去掉吧?
去掉后这样做:
@echo off&setlocal enabledelayedexpansion
for /l %%a in (10 1 99) do (
   for /l %%b in (10 1 99) do (
      set /a x=9*%%b
      set /a y=8*%%a
      if !y! geq 10 if !y! leq 99 (
         if !x! geq 100 if !x! leq 999 (
            if %%a==%%b (
               set /a k=809*%%a
               set /a l=800*%%a+9*%%a
               if "!k!"=="!l!" (
                  echo "??" 代表的两位数是%%a
                  echo "809*??" 后的结果是!k!
               )
            )
          )
       )
   )
)
pause>nul COPY

[ 本帖最后由 mkl 于 2008-8-8 14:30 编辑 ]

TOP

貌似6楼就出错了。。。。。
收入分四种:狂劳不得,多劳少得,少劳多得,不劳狂得。还好,我是第二种!

TOP

回复【程序4】

费了好大的功夫,终于做出来了.做什么事还得靠自己
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
:KT
SET /P F= 请输入日期,如2008232008-2-3  :
FOR /F "TOKENS=1,2,3 DELIMS=-" %%A IN ("%F%") DO SET K=%%A &SET M=%%B &SET D=%%C
SET G=%K:~-2%
IF "%G%"=="00" (
   SET/A E=%K%/400*400
   IF !E! == %K% GOTO RUN
   IF !E! NEQ %K% GOTO PING
)     
IF "%G%" NEQ "00" (
         SET/A R=%K%/4*4
         IF !R! == %K% GOTO RUN
         IF !R! NEQ %K% GOTO PING
)
:RUN
SET R=4
GOTO H
:PING
SET R=1
GOTO H
:H
GOTO %M%
:1
SET I=0
GOTO Z
:2
SET I=31
GOTO Z
:3
SET I=59
GOTO Z
:4
SET I=90
GOTO Z
:5
SET I=120
GOTO Z
:6
SET I=151
GOTO Z
:7
SET I=181
GOTO Z
:8
SET I=212
GOTO Z
:9
SET I=243
GOTO Z
:10
SET I=273
GOTO Z
:11
SET I=304
GOTO Z
:12
SET I=334
GOTO Z
:Z
IF "%R%" == "1" (
SET/A J=%D%+%I% )
IF "%R%" == "4" (
If "%m%" leq "2" SET /A J=%D%+%I%
IF "%M%" GTR "2" SET /A J=%D%+%I%+1
)
ECHO 你输入的日期是这一年中的第!J!
GOTO KT COPY

TOP

上面的太繁琐,改进后代码如下
@echo off&setlocal enabledelayedexpansion
echo 请输入日期,如200889日:2008-8-9
set /p p=
for /f "tokens=1,2,3 delims=-" %%i in ("%p%") do set y=%%i &set m=%%j &set d=%%k
set "g= 00+31+28+31+30+31+30+31+31+30+31+30"
set /a s=%m%*3
call set /a j=%%g:~1,%s%%%%d%
set i=%y:~-2%
if "%i%" == "00" (
   set /a k=%y%%%400
   if !k! == 0 (goto run) else goto ping
) else (
set /a l=%y%%%4
       if !l! == 0 (goto run)else goto ping
)
:run
if %m% leq 2 (set /a j=%j%) else set /a j=!j!+1
:ping
echo 你输入的日期是这一年中的第%j%
pause&exitCOPY

TOP

真的都是强人,佩服!我自己也弄点来看!

TOP

哇卡卡咔 ,终于做出一个了
9*9口诀表
@echo off&setlocal enabledelayedexpansion
for /l %%i in (1 1 9) do (set b=
   for /l %%j in (1 1 %%i) do (
   set /a a=%%i*%%j
   set b=!b! %%i*%%j=!a!
   )
echo !b!
)
pauseCOPY

TOP

先来看看答案

我才刚学
就被批处理的优点就给吸引了
这些题目我会一点点研究,直至弄懂.

TOP

题目好多哦

TOP

【程序84】
题目:一个偶数总能表示为两个素数之和。
@echo off
if exist ss.txt goto :bb
::显示100以内素数
set m=2
>ss.txt echo 2
set/a m+=1
>>ss.txt echo 3
:zz
set flag=
set/a m+=2
set/a n=m-1
for /l %%i in (2 1 %n%) do (
 call :sf %%i
)
if not defined flag >>ss.txt echo %m%
if %m% lss 99 goto :zz
:bb
::显示100以内偶数
for /l %%o in (4 2 100) do call :pd %%o
pause
goto :eof
::显示偶数成两个素数的和
:pd
 set sflag=
 for /f %%m in (ss.txt) do (
  for /f %%n in (ss.txt) do (
 call :bj %%m %%n he %1
 if defined sflag goto :show
  )
 )
:show
 echo %1=%xx%+%yy%
 goto :eof
:sf
 set/a x=m%%%1
 if %x%==0 set flag=1
 goto :eof
:bj
 set/a xx=%1
 set/a yy=%2
 set/a %3=%1+%2
 if %he% equ %4 set sflag=1COPY

TOP

程序81

@echo off
set /a a=99/8
echo a是%a%
set /a b=809*%a%
echo b是%b%
pause>nulCOPY

[ 本帖最后由 yslyxqysl 于 2008-10-4 10:08 编辑 ]

TOP

太多了,我一题一题做啊
我的方法可能太土了,但是没办法啊..
@echo off
for /l %%a in (1 1 4) do (
for /l %%b in (1 1 4) do (
for /l %%c in (1 1 4) do (
if %%a neq %%b (
if %%b neq %%c (
if %%a neq %%c echo %%a%%b%%c 2>nul
)
)
)
)
)
pause>nulCOPY
砂石下的泉水,掘得越深,泉水会越清吗?

TOP

真是高手啊。&&&&&&&&&&&&&&&&&&&
@@@@@@@@@@@@@@@@@@@@@
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

TOP

83题,有空多写些。

算法效率比较低。
::输出0-7组成的大于500的奇数个数
::code by nomyself
::05/12/2008
@echo off
rem 初值为1
set sum=0
set n=1
goto set
:set
rem 将值赋予临时变量k并转入判断是输出还是续循环
set k=%n%
goto flag
:flag
rem k大于0就继续循环,否则就转入输出
if %k% GTR 0 (call goto while) else goto printf
:while
rem  将j的值与7比较,小于7就设flag为1并重置循环数k;大于7就增加n的值
set /a j=%k%%%10
if %j% LEQ 7 (call goto setwhile) else goto add
:setwhile
set flag=1 & set /a k/=10
goto flag
:printf
if %flag%==1 set /a sum+=1
:add
::n自增2并且n大于500就输出总数
set /a n+=2
if %n% GTR 500 goto end
goto set
:end
echo 满足条件的值的总数为:%sum%
pauseCOPY

TOP

99乘法表 搞了好长的时间
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1 1 9) do (for /l %%b in (1 1 %%a) do (set/a res=%%a*%%b&echo %%a*%%b=!res!))
pause

TOP

返回列表