2014-02-10 98 views
0

所以我决定使用一个子程序来改进当前的程序。我把它放在自己的批处理文件中进行测试,并在不影响整个程序的情况下正常工作,并且我得到了它的工作保存了一件事。出于某种原因,每次运行时,都会打印出“失踪运算符”作为其第一行。为什么我的批处理脚本将第一行打印为“Missing Operator”?

注意:我知道它是不正确地执行F到C的转换。我现在正在解决这个问题。

Subroutine as it is working now.

我不知道这是为什么,我需要它不打印任何附加行不仅没有行诠释他的计划,但由于成品节目的每个屏幕都有一组号码它将在任何时候显示的行和列。整页上多出一行,它会切断应显示的部分屏幕。

这个子程序(和我使用的测试程序)的代码是:

@echo off 

:1 
cls 
call :ferDesc 
echo. 
pause 
goto 1 

:ferDesc 
echo off 
set /a xsides=54 
set /a fer=%random%%%xsides+59 
set /a fer1=%fer%-32 
set /a cels=%fer1%/1.8 
if %fer% leq -40 goto td1 
if %fer% leq -30 goto td2 
if %fer% leq -20 goto td3 
if %fer% leq -10 goto td4 
if %fer% leq 0 goto td5 
if %fer% leq 10 goto td6 
if %fer% leq 20 goto td7 
if %fer% leq 30 goto td8 
if %fer% leq 40 goto td9 
if %fer% leq 50 goto td10 
if %fer% leq 60 goto td11 
if %fer% leq 70 goto td12 
if %fer% leq 80 goto td13 
if %fer% leq 90 goto td14 
if %fer% leq 100 goto td15 
if %fer% leq 110 goto td16 
if %fer% leq 120 goto td17 
if %fer% leq 130 goto td18 
if %fer% geq 131 goto td19 
:td1 
set td=polar 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td2 
set td=artic 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td3 
set td=bitterly cold 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td4 
set td=very cold 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td5 
set td=cold 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td6 
set td=wintery 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td7 
set td=icey 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td8 
set td=frosty 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td9 
set td=chilly 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td10 
set td=brisk 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td11 
set td=cool 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td12 
set td=pleasent 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td13 
set td=warm 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td14 
set td=balmy 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td15 
set td=sweaty 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td16 
set td=stweltering 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td17 
set td=feaverishly hot 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td18 
set td=baking 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 
:td19 
set td=deadly hot 
echo It is a %td% day. 
echo (%fer% F - %cels% C) 
goto :eof 

回答

4

set /a fer=%random% %% %xsides% + 59 

Sintax错误此外,有批量算术没有小数所以这

set /a cels=%fer1%/1.8 

应该

set /a cels=%fer1% * 10/18 
+0

谢谢!如果我使用 set/a cels =%fer1%* 18/10 适当的数学方法是“%fer1%* 10/18。 –

相关问题