标题: [数值计算] 已知算术表达式a+b=c 中的某两个值如何用批处理求另一个值? [打印本页]
作者: qwd 时间: 2009-6-27 03:02 标题: 已知算术表达式a+b=c 中的某两个值如何用批处理求另一个值?
- @echo off
- echo 设: a+b=c
- echo 输入a b c 任意两个值,求得另一个未知数 ?=
- for %%i in (a b c) do set %%i=?&set/p %%i=%%i=?
-
- if %a%==? set/a a=c-b&call echo a=%%a%%
- if %b%==? set/a b=c-a&call echo b=%%b%%
- if %c%==? set/a c=a+b&call echo c=%%c%%
-
- pause
- ::极简单的题要用这么多 if 吗?有人说用goto但也要分三种情况解决吧!
复制代码
作者: 随风 时间: 2009-6-27 09:45
如果只是加法
:- @echo off&setlocal enabledelayedexpansion
- set var=?+3=8
- for /f "tokens=1-3 delims=+=" %%a in ("%var%") do (
- if "%%c"=="?" (set ss=%%a+%%b) else (
- set %%a=%%b&set %%b=%%a&set "ss=%%c-!?!"
- )
- )
- set /a num=%ss%
- echo !var:?=%num%!
- pause
复制代码
作者: zljzsmzzx 时间: 2009-6-27 20:32 标题: 回复 2楼 的帖子
“set %%a=%%b&set %%b=%%a&set "ss=%%c-!?!"”妙!!
作者: 随风 时间: 2009-6-27 21:04
如果是 + - * / 的- @echo off
- :start
- setlocal enabledelayedexpansion
- echo;&echo 请输入算式如:5*?=40
- set /p var=&cls
- set "var2=%var:?=%"
- set .-=a&set ./=a&set +=-&set -=+&set /=*&set "*=/"
- for /l %%a in (0 1 9) do set var2=!var2:%%a=!
- set "ff=%var2:~0,1%"&set "f=!%var2:~0,1%!"
- for /f "tokens=1-3 delims=+-/*=" %%a in ("%var%") do (
- if "%%c"=="?" (set ss=%%a%ff%%%b) else (
- if "%%a"=="?" (set ss=%%c%f%%%b) else (
- if defined .!ff! (set ss=%%a%ff%%%c) else set "ss=%%c%f%%%a"
- )))
- set /a num=!ss!
- set "str=!var:?=%num%!"
- echo 你输入的是:%var%
- echo 计算结果是:!str!
- endlocal&goto start
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |