标题: [数值计算] [已解决]批处理if语句应用求解答 [打印本页]
作者: zjpwang 时间: 2017-2-7 21:00 标题: [已解决]批处理if语句应用求解答
为什么两段代码运行结果会不一样
==============代码1================- setlocal enabledelayedexpansion
- set /p a=输入整数大于0:
- set /p b=输入整数小于a:
- set /a c=a/b
- set /a d=a-c*b
- set /a m=0,n=1
-
- for /l %%i in ( 1 1 %a% ) do (
- echo %%i >>abc-!n!.txt
- set /a m=m+1
- if !n! leq %d% (
- if !m! geq %c%+1 (
- set m=0
- set /a n=n+1)
- ) else (
- if !m! geq %c% (set m=0
- if !n! lss %b% (set /a n=n+1)
- )
- )
- )
- pause
复制代码
==============代码2================- setlocal enabledelayedexpansion
- set /p a=输入整数大于0:
- set /p b=输入整数小于a:
- set /a c=a/b
- set /a d=a-c*b
- set /a m=0,n=1
-
- for /l %%i in ( 1 1 %a% ) do (
- echo %%i >>abc-!n!.txt
- set /a m=m+1
- if !n! leq %d% (
- if !m! [color=Red]equ[/color] %c%+1 (
- set m=0
- set /a n=n+1)
- ) else (
- if !m! [color=Red]equ[/color] %c% (set m=0
- if !n! lss %b% (set /a n=n+1)
- )
- )
- )
- pause
复制代码
作者: GNU 时间: 2017-2-8 09:56
能否介绍一下代码是为了实现什么功能?
读一个错误的代码容易被带跑偏。
作者: zjpwang 时间: 2017-2-8 11:18
回复 2# GNU
比如a=10,b=3,就是将1,2,3,4,5,6,7,8,9,10分3份放入abc-1,abc-2,abc-3
实现
abc-1内容为
1
2
3
4
abc-2内容为
5
6
7
abc-3内容为
8
9
10
作者: GNU 时间: 2017-2-8 14:02
回复 3# zjpwang
if !m! equ %c%+1
if语句里面不支持算数运算,你这个条件永远不会成立。做个简单的试验就知道:- @echo off
- set a=2
- set b=1
- if %a% equ %b%+1 (
- echo yes
- ) else (
- echo no
- )
- pause
复制代码
geq表示大于等于,equ表示等于。观察一下变量的值就知道equ在逻辑上无法实现你的想法:- @echo off
- setlocal enabledelayedexpansion
- set /p a=输入整数大于0:
- set /p b=输入整数小于a:
- set /a c=a/b
- set /a d=a-c*b
- set /a m=0,n=1
-
- for /l %%i in ( 1 1 %a% ) do (
- echo %%i >>abc-!n!.txt
- set /a m=m+1
- echo !m! --- %d% --- %c% --- !n!
- if !n! leq %d% (
- echo in if 1
- if !m! equ %c%+1 (
- echo in if 2
- set m=0
- set /a n=n+1
- )
- ) else (
- echo in else
- if !m! equ %c% (
- set m=0
- if !n! lss %b% (set /a n=n+1)
- )
- )
- )
- paues
复制代码
作者: zjpwang 时间: 2017-2-8 17:03
回复 4# GNU
多谢大神,结果对了程序不一定对
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |