大概如下
set /p a=input
set /a b=算法
%b%为输入数字的绝对值
不使用字符替换或IF判断
|
|
2007-1-17 12:58 PM |
|
|
namejm
荣誉版主
batch fan
积分 5094
发帖 1727
注册 2006-3-10 来自 成都
状态 离线
|
『第
2 楼』:
最简单的办法是用字符串替换语句,演示代码如下:CODE: [Copy to clipboard]
@echo off
set input=
set /p input=请输入实数:
echo %input:-=%
pause ——————————————————
居然是不要字符替换的,还不允许用if语句,真是太BT了,不知道你这样要求有什么特殊需要。再来一个:CODE: [Copy to clipboard]
@echo off
set input=
set /p input=请输入实数:
for /f "tokens=* delims=-" %%i in ("%input%") do echo %%i
pause [ Last edited by namejm on 2007-1-17 at 12:33 AM ]
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
|
|
2007-1-17 01:27 PM |
|
|
everest79
银牌会员
一叶枝头,万树皆春
积分 2067
发帖 853
注册 2006-12-25
状态 离线
|
『第
3 楼』:
嘿嘿,版主你作弊,我要通过计算来得到绝对值,想了一下午了
|
|
2007-1-17 01:42 PM |
|
|
redtek
金牌会员
积分 2897
发帖 1149
注册 2006-9-21
状态 离线
|
『第
4 楼』:
第1种方法: 负负得正原理CODE: [Copy to clipboard]
@echo off
set /p var=请输入负数:
set /a var=-%var%
echo 绝对值为: %var% 计算有小数点儿的数字出错~:)
计算正数出错:)
第2种方法: (负数)-(负数)*2 =(绝对值)CODE: [Copy to clipboard]
@echo on
set /p var=请输入负数:
set /a var=%var%-%var%*2
echo 绝对值为: %var% 不支持浮点运算。
只支持求负数的绝对值(输入正数则出错)
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-17 10:23 PM |
|
|
scriptor
银牌会员
积分 1194
发帖 544
注册 2006-12-21
状态 离线
|
『第
5 楼』:
I got one:
@echo off
set /p n="Input any negative number: "
set /a m=~n+1
echo The absolute of %n% is: %m%
pause >nul
It's too easy by using it.
No decimal fraction, but zero is permitted.
[ Last edited by scriptor on 2007-1-17 at 11:16 AM ]
|
|
2007-1-17 11:30 PM |
|
|
qzwqzw
银牌会员
天的白色影子
积分 1907
发帖 491
注册 2004-3-6
状态 离线
|
『第
6 楼』:
一个粗劣的例子
a取值的上下限各缩小一半
set /a b=(a*2+1)%%2*a
|
|
2007-1-17 11:37 PM |
|
|
scriptor
银牌会员
积分 1194
发帖 544
注册 2006-12-21
状态 离线
|
『第
7 楼』:
请把它删除了
写错了
[ Last edited by scriptor on 2007-1-17 at 11:14 AM ]
|
|
2007-1-17 11:47 PM |
|
|
scriptor
银牌会员
积分 1194
发帖 544
注册 2006-12-21
状态 离线
|
『第
8 楼』:
请版主把它删除了
[ Last edited by scriptor on 2007-1-17 at 11:12 AM ]
|
|
2007-1-17 11:51 PM |
|
|
qzwqzw
银牌会员
天的白色影子
积分 1907
发帖 491
注册 2004-3-6
状态 离线
|
『第
9 楼』:
scriptor兄
给你两个建议
1、多用中文
2、多做测试
|
|
2007-1-17 11:59 PM |
|
|
scriptor
银牌会员
积分 1194
发帖 544
注册 2006-12-21
状态 离线
|
『第
10 楼』:
Quote: |
Originally posted by qzwqzw at 2007-1-17 10:59:
scriptor兄
给你两个建议
1、多用中文
2、多做测试 |
|
你是说8楼的代码吗?
对不起,搞错了,那个只能计算奇数
谢谢你了
我一时性急就发过来了
|
|
2007-1-18 12:09 AM |
|
|
qzwqzw
银牌会员
天的白色影子
积分 1907
发帖 491
注册 2004-3-6
状态 离线
|
『第
11 楼』:
不尽如此
对于#4中的 ~n+1 代码,不知你是否拿正整数做过测试?
另外保持版面的简洁是我们共同的义务
|
|
2007-1-18 12:15 AM |
|
|
scriptor
银牌会员
积分 1194
发帖 544
注册 2006-12-21
状态 离线
|
『第
12 楼』:
我在那里已经说明了:
@echo off
set /p n="Input any negative number: "
是输入负数。
谢谢。记住了
我发现这几天来我犯了很多的错误啊。
真的不好意思再发帖子了
|
|
2007-1-18 12:19 AM |
|
|
everest79
银牌会员
一叶枝头,万树皆春
积分 2067
发帖 853
注册 2006-12-25
状态 离线
|
『第
13 楼』:
Quote: |
Originally posted by qzwqzw at 2007-1-17 10:37 AM:
一个粗劣的例子
a取值的上下限各缩小一半
set /a b=(a*2+1)%%2*a |
|
|
|