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

[数值计算] 已知算术表达式a+b=c 中的某两个值如何用批处理求另一个值?

  1. @echo off
  2. echo 设: a+b=c
  3. echo 输入a b c 任意两个值,求得另一个未知数 ?=
  4. for %%i in (a b c) do set %%i=?&set/p %%i=%%i=?
  5. if %a%==? set/a a=c-b&call echo a=%%a%%
  6. if %b%==? set/a b=c-a&call echo b=%%b%%
  7. if %c%==? set/a c=a+b&call echo c=%%c%%
  8. pause
  9. ::极简单的题要用这么多 if 吗?有人说用goto但也要分三种情况解决吧!
复制代码

如果只是加法
:
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=?+3=8
  3. for /f "tokens=1-3 delims=+=" %%a in ("%var%") do (
  4.    if "%%c"=="?" (set ss=%%a+%%b) else (
  5.       set %%a=%%b&set %%b=%%a&set "ss=%%c-!?!"
  6.     )
  7. )
  8. set /a num=%ss%
  9. echo !var:?=%num%!
  10. pause
复制代码
技术问题请到论坛发帖求助!

TOP

回复 2楼 的帖子

“set %%a=%%b&set %%b=%%a&set "ss=%%c-!?!"”妙!!

TOP

如果是 + - * / 的
  1. @echo off
  2. :start
  3. setlocal enabledelayedexpansion
  4. echo;&echo 请输入算式如:5*?=40
  5. set /p var=&cls
  6. set "var2=%var:?=%"
  7. set .-=a&set ./=a&set +=-&set -=+&set /=*&set "*=/"
  8. for /l %%a in (0 1 9) do set var2=!var2:%%a=!
  9. set "ff=%var2:~0,1%"&set "f=!%var2:~0,1%!"
  10. for /f "tokens=1-3 delims=+-/*=" %%a in ("%var%") do (
  11.    if "%%c"=="?" (set ss=%%a%ff%%%b) else (
  12.       if "%%a"=="?" (set ss=%%c%f%%%b) else (
  13.          if defined .!ff! (set ss=%%a%ff%%%c) else set "ss=%%c%f%%%a"
  14. )))
  15. set /a num=!ss!
  16. set "str=!var:?=%num%!"
  17. echo 你输入的是:%var%
  18. echo 计算结果是:!str!
  19. endlocal&goto start
复制代码
技术问题请到论坛发帖求助!

TOP

返回列表