注册 登录
编程论坛 VB6论坛

如果一个正整数从高位到低位上的数字一次递减,则称为降序数(如9631,9772是降序 数,而7245则不是降序数)。在文本框Textl中输入一 个正整数,单价“

h2918228916 发布于 2019-06-07 20:53, 2632 次点击
Private Sub Command 1 _Click()
Dim i As Integer, s As String, flag As Boolean
               
flag=True : i=2
Do While i<=Len(s) And flag
If ______________ Then flag= false
i=i+l
Loop
If flag Then
Label2.Caption=s+”是降序数!”
Else
Label2.Caption=s+”不是降序数!”
End If
End Sub
4 回复
#2
林月儿2019-06-07 21:41
s=Text1.Text
asc(mid(s,i,1)) < asc(mid(s,i-1,1))

[此贴子已经被作者于2019-6-7 22:12编辑过]

#3
h29182289162019-06-08 07:48
回复 2楼 林月儿
这一行应该有误吧asc(mid(s,i,1)) < asc(mid(s,i-1,1))
是>
#4
林月儿2019-06-08 09:04
恩,我也是菜鸟
#5
风吹过b2019-06-09 08:22
s = CStr(Val(Text1.Text))
初学者可以写成
s=text1.text

VAL 转换为数值,在输入时错误时,不会导致后面的逻辑错误
CSTR 再转为字符串,同时不保留前导空格,为了方便后面的处理。

If Mid(s, i, 1) > Mid(s, i - 1, 1) Then flag = False
取当前值,与前一位相比较,
i的初始值是2,所以一开始就有前一位
为啥不再套用 ASC 函数,因为字符比较本来就是按ASCII码在比较。
在这里,不管是按字符串比较模式,还是数字比较模式,结果都是正确的。
再套的函数可以用:
ASC
VAL
CINT
CLNG

-------------
i = i + 1
这里是加1(数字),不是加l(字母),应该是你抄写时错误。
有电脑,自己试着填代码运行一下就可以了。
1