我是編程新手,我的批處理檔案有問題。
我們的任務是計算兩個數字的差,如果結果為負,它將計算x y
;如果結果為零,則計算2x 2
y;如果結果是肯定的,它將計算x*y
.
@echo off
set /p x=Enter the value of X:
set /p y=Enter the value of Y:
set /a diff=%x%-%y%
if diff LSS 0 (goto neg)
if diff EQU 0 (goto zer)
if diff GTR 0 (goto pos)
:neg
echo %diff% is a negative number
set /a R=%x% %y%
echo R = X Y where X = %x% and Y = %y%
echo R = %x% %y% = %R%
echo R = %R%
:zer
echo %diff% is equal to 0
set /a R1=2*%x% 2*%y%
echo R = 2X 2Y where X = %x% and Y = %y%
echo R = 2(%x%) 2(%y%) = %R%
echo R = %R1%
:pos
echo %diff% is a positive number
set /a R2=%x%*%y%
echo R = X * Y where X = %x% and Y = %y%
echo R = %x% * %y% = %R2%
echo R = %R2%
pause
當我嘗試運行并輸入1
and2
時,這肯定會導致否定。我的代碼將結果顯示為正== 0
數,如果我輸入的數字將導致0
.
請告訴我我必須改變什么。謝謝你。
uj5u.com熱心網友回復:
提示:-您可以嘗試通過洗掉@echo off
命令來除錯批處理腳本,該命令將向您顯示腳本執行的每個步驟(即代碼執行的準確程度)
您的代碼中有兩個錯誤:
1.在第三段中,當你試圖比較陳述句中diff變數的值時if
,你忘了用“%”括起來(即%diff%
)。
這使得 if 陳述句將“ diff ”作為一個字串而不是它的值與 0 進行比較。因此,無論您提供什么值,if 陳述句總是會呈現錯誤的結果,因此不會執行任何給定的陳述句(即不跳轉到任何標簽)。
2.對于第二個問題,您應該知道腳本是逐行執行的。這意味著一旦執行了一條陳述句,它將跳轉下一條。假設你給了 10 和 5 的值作為輸入,那么似乎沒有問題,因為diff大于 0 后,它會跳轉到:pos
標簽,逐漸標簽下面的代碼正好與腳本結束。
但是,如果您輸入類似 (5 和 10) 或 (10 和 10) 的輸入,它會分別跳轉到標簽:neg
和:zer
。但是由于您沒有指定一條陳述句告訴腳本在這兩個標簽下方的代碼塊之后停止運行,因此這兩個標簽下方的所有陳述句都將被執行。
所以,這個問題的解決方案是在這兩個標簽(和)下面的代碼塊執行后結束腳本。您可以通過添加.:neg
:zor
exit /b
以下是使用上述方法糾正的代碼:
@echo off
set /p x=Enter the value of X:
set /p y=Enter the value of Y:
set /a diff=%x%-%y%
if %diff% LSS 0 (goto neg)
if %diff% EQU 0 (goto zer)
if %diff% GTR 0 (goto pos)
:neg
echo %diff% is a negative number
set /a R=%x% %y%
echo R = X Y where X = %x% and Y = %y%
echo R = %x% %y% = %R%
echo R = %R%
pause
exit /b
:zer
echo %diff% is equal to 0
set /a R1=2*%x% 2*%y%
echo R = 2X 2Y where X = %x% and Y = %y%
echo R = 2(%x%) 2(%y%) = %R%
echo R = %R1%
pause
exit /b
:pos
echo %diff% is a positive number
set /a R2=%x%*%y%
echo R = X * Y where X = %x% and Y = %y%
echo R = %x% * %y% = %R2%
echo R = %R2%
pause
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531205.html
標籤:批处理文件
上一篇:批量使用命令更改CMD的輸出語言
下一篇:在批處理腳本中求和