除以整数以得到所有数字并求它们

时间:2014-01-26 10:43:11

标签: batch-file

我正在尝试编写一个脚本,该脚本将采用用户输入的整数,然后将所有数字相加。整数必须介于1-99

之间

示例:

  

如果用户输入27

     

输出:9

以下是代码:

@ECHO OFF
SET /p number="Enter a number: "
SET sum=0

IF %number% GTR 9 (
SET /a temp=%number% %% 10
SET /a sum+=%temp%
SET /a number/=10
SET /a sum+=%number%
) ELSE (
SET /a sum+=%number%
)

echo %sum%

所以让我们说例如输入的数字是19,它应该首先执行19%10得到“9”然后19/10得到1,将它们相加并得到10.但是当我实际运行这个时代码它返回19(如果我输入19)

3 个答案:

答案 0 :(得分:1)

如果数字限制在1-99范围内,则计算结果为

set /a "sum=%number% / 10 + %number% %% 10"

%number% / 10将返回左侧数字(如果有),如果%number%小于10,则返回0

%number% %% 10将返回正确的数字

只是总结一下

答案 1 :(得分:0)

在块语句(a parenthesised series of statements)中,解析整个块并执行然后。在块执行之前,块中的任何%var%将被该变量的值替换为块

因此,分配给temp的值未按预期进行评估。

您应该查找有关delayed expansion的许多SO文章,并了解batch substrings。这将使您的工作更轻松。

并且不要将temp用作用户变量,无论它看起来多么合乎逻辑。 temp是一个目录指针,它告诉系统存储临时文件的位置。改变它不是一个好主意。

答案 2 :(得分:0)

@echo off &setlocal disableDelayedExpansion
SET /p "var=Enter var (1-99) "
set /a var=%var:~0,1%+%var:~1,1% 2>nul
echo %var%