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

[其他] 请编程解决已知绝对值关系,求a和b的值

已知 a的绝对值等于5,b的绝对值等于3,
(a - b)的绝对值等于(b-a), 请编程解决
求a和b的值。

掌握python的朋友可以试一下。

回复 1# netdzb

for a in [-5, 5]:
   
    for b in [-3, 3]:
        
        if abs(a-b) == b-a:
            
            print(f"a={a}",f"b={b}")
1

评分人数

    • netdzb: 学习一下谢谢技术 + 1

TOP

  1. @echo off
  2. echo 已知:
  3. echo ^|a^|=5,^|b^|=3;^|a-b^|=b-a
  4. echo 求:a=?,b=?
  5. echo/
  6. echo 答:
  7. ::绝对值公式引用:
  8. ::qzwqzw@cn-dos 2007-1-17
  9. ::a取值的上下限各缩小一半 //说实话,这句意思没能理解
  10. ::set /a b=(a*2+1)%%2*a //求绝对值公式
  11. setlocal enableDelayedExpansion
  12. ::已知
  13. set/a _0_=0,a1=5,b1=3
  14. set a_b1=b-a
  15. ::a、b的另一个可能值
  16. set/a a2=_0_-a1,b2=_0_-b1
  17. ::求解
  18. for %%a in (%a1% %a2%)do (
  19. for %%b in (%b1% %b2%)do (
  20. set/a "a_b=%%a-%%b,b_a=%%b-%%a,a_b1=(a_b*2+1)%%2*a_b"
  21. if !a_b1! equ !b_a! echo a:%%a b:%%b
  22. )
  23. )
  24. pause
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

  1. @echo off
  2. ::利用绝对值的定义构造的函数abs,#为算式,结果为变量jdz
  3. set "abs=set/a jdz=#&if !jdz! leq 0 set/a jdz=-jdz"
  4. setlocal enabledelayedexpansion
  5. for %%a in (5 -5) do (
  6.     for %%b in (3 -3) do (
  7.         set/a a=%%a,b=%%b,w=b-a
  8.         %abs:#=a-b%
  9.         if !jdz!==!w! (echo;a:%%a b:%%b)
  10.     )
  11. )
  12. pause
  13. exit
复制代码

TOP

凑个热闹
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (5 -5) do (
  4.     for %%b in (3 -3) do (
  5.         set/a "a=%%a-%%b,b=%%b-%%a,a=(a ^ (a >> 31)) - (a >> 31)"
  6.         if !a! equ !b!  echo a=%%a b=%%b
  7.     )
  8. )
  9. pause
复制代码

TOP

回复 5# terse

批处理的绝对值是如何计算的?

TOP

回复 6# netdzb
这是位运算
  1. set x=-5
  2. set/a "y=x >> 31, x=(x ^ y) - y"
  3. echo;%x%
复制代码

TOP

回复 7# terse

^这个是什么意思,转义符,续行符,没看懂。

TOP

回复 8# netdzb
”^“ 异或运算符  “>>” 右移
set /a 了解一下

TOP

凑个热闹,prolog
  1. :- initialization(main).
  2. main :- a(A), b(B), C is abs(A - B), C #= B - A, write('A='), write(A), write(' B='), write(B), nl, fail.
  3. a(5).
  4. a(-5).
  5. b(3).
  6. b(-3).
复制代码

TOP

返回列表