找回密码
 加入
搜索
查看: 4915|回复: 12

[AU3基础] 【已解决】请教“关于输入一个四位以内的整数的困惑”

 火.. [复制链接]
发表于 2010-8-7 16:40:58 | 显示全部楼层 |阅读模式
本帖最后由 chuyun126 于 2010-8-10 09:47 编辑

输入一个四位以内的整数,要求1判断是几位数,要求2输入这个数的每一位,要求3反向重组并输出一个新数。下面是我写的代码:
Dim $Unit,$Ten,$Hundred,$Thousand,$Digit,$Num,$NewNum
$Num=InputBox("数字","请输入一个不大于4位数的整数")
If @error=1 Or $Num="" Then
        Exit
EndIf
Select
        Case $Num>=0 And $Num<10
                 $Digit=1
                 $Unit=Mod($Num,10)
                 $NewNum=$Unit
        Case $Num>=10 And $Num<100
                 $Digit=2
                 $Unit=Mod($Num,10)
                 $Ten=Mod(($Num-$Unit)/10,10)
                 $NewNum=$Unit*10+$Ten
        Case $Num>=0 And $Num<10
                 $Digit=3
                 $Unit=Mod($Num,10)
                 $Ten=Mod(($Num-$Unit)/10,10)
                 $hundred=Mod(($Num-$Ten*10-$Unit)/100,10)
                 $NewNum=$Unit*100+$Ten*10+$Hundred
        Case $Num>=1000 And $Num<10000
                 $Digit=4
                 $Unit=Mod($Num,10)
                 $Ten=Mod(($Num-$Unit)/10,10)
                 $hundred=Mod(($Num-$Ten*10-$Unit)/100,10)
                 $Thousand=Mod(($Num-$Hundred*100-$Ten*10-$Unit)/1000,10)
                 $NewNum=$Unit*1000+$Ten*100+$Hundred*10+$Thousand
       
EndSelect
MsgBox(0,"数字","这是一个"&$Digit&"位数,"&"个位上的数是"&$Unit&","&"十位上的数是"&$Ten&","&"百位上的数是"&$Hundred&","&"千位上的数字是"&$Thousand&","&"重组新数字是"&$NewNum&".")
请问一下,为什么只有输入刚好四位数才显示正确答案呢,输入少于四位的怎么不显示了啊

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-8-7 16:44:49 | 显示全部楼层
本帖最后由 水木子 于 2010-8-7 16:58 编辑

用不着这么麻烦吧!
#Include <String.au3>
Local $aDan[5] = ['个位:', '十位:', '百位:', '千位:', '万位:']
Local $sText

$nNum = InputBox('数字', '请输入一个不大于4位数的整数')
$aReg = StringRegExp(_StringReverse($nNum), '\d', 3)

For $i = 0 To UBound($aReg) - 1
        $sText &= $aDan[$i] & $aReg[$i] & '  '
Next
MsgBox(0, _StringReverse($nNum), $sText)

评分

参与人数 1金钱 +50 收起 理由
hzxymkb + 50

查看全部评分

 楼主| 发表于 2010-8-7 16:46:54 | 显示全部楼层
先请教一下我的代码为什么输入少于四位数的整数时不显示正确答案呢,如果更简单的写法也请麻烦告诉我下。
发表于 2010-8-7 16:48:24 | 显示全部楼层
回复 2# 水木子
你有高招就发出来呗!我加分!
 楼主| 发表于 2010-8-7 16:52:16 | 显示全部楼层
请教简单写法
发表于 2010-8-7 16:57:17 | 显示全部楼层
本帖最后由 水木子 于 2010-8-7 16:59 编辑

回复 5# chuyun126
2楼有代码啊!
发表于 2010-8-7 16:59:59 | 显示全部楼层
回复 5# chuyun126
水大侠已经发出来了!看看吧!
发表于 2010-8-7 17:15:00 | 显示全部楼层
我也来一个
#Include <String.au3>
#include <Array.au3>
$Num=InputBox("数字","请输入一个不大于4位数的整数",""," M4") ;M4限制只能输入4个数字
If @error <> 0 Then Exit
$len = StringLen($Num) ;位数
Dim $array[$len + 1]
$array[0] = $len 
For $i = 1 To $len
        $array[$i] = StringMid($Num,$i,1)
Next
_ArrayAdd($array,_StringReverse($Num))
_ArrayDisplay($array)

评分

参与人数 2金钱 +40 收起 理由
hzxymkb + 20
afan + 20

查看全部评分

 楼主| 发表于 2010-8-7 17:18:47 | 显示全部楼层
这样也不错啊,算简化了哈。谢谢
发表于 2010-8-7 20:29:46 | 显示全部楼层
貌似没有限制小数点的介入
发表于 2010-8-7 22:37:39 | 显示全部楼层
回复 4# hzxymkb
嘿嘿,我也骗点分。
#Include <String.au3>
Local $aDan[5] = ['个位:', '十位:', '百位:', '千位:', '万位:']
Local $sText
$nNum = Execute(InputBox('数字', '请输入一个不大于4位数的整数'))
If IsFloat($nNum) Then 
        MsgBox(0,0,"小数不考虑")
        Exit
EndIf

If $nNum>9999 Or $nNum<0 Then 
        MsgBox(0,0,"大于四位数,负数不计算")
        Exit
EndIf
$len=StringLen($nNum)
$n=1
For $i=$len-1 To 0 Step -1
        $sText&=$aDan[$i]&StringMid($nNum,$n,1)&"   "
        $n+=1
Next
MsgBox(0,$nNum,$sText&"反序后:"&_StringReverse($nNum))

评分

参与人数 2金钱 +40 收起 理由
hzxymkb + 20
afan + 20

查看全部评分

发表于 2010-8-9 05:36:37 | 显示全部楼层
本帖最后由 netegg 于 2010-8-9 05:44 编辑

#include<array.au3>
local $input
$array = StringRegExp($input, '\S', 3)
_ArraySearch($array, '.')  
If Not (UBound($array) > 4 Or @error) Then
   _ArrayReverse($array)
   MsgBox('','',_ArrayToString($array, ""))
EndIf
发表于 2010-8-10 12:43:24 | 显示全部楼层
这个是《Let's AutoIt》代码哈,我也看过
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 07:48 , Processed in 0.101002 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表