单选题 如果一个正整数从高位到低位上的数字依次递减,则称其为降序数(如9632是降序数,而8516则不是降序数),现编写如下程序,判断输入的正整数是否为降序数。
Private Sub Command1_Click()
Dim n As Long
Dim flag As Boolean
n=InputBox("输入一个正整数")
s=Trim(Str(n))
For i=2 To Len(s)
If Mid(s,i-1,1)<Mid(s,i,1)
Then Exit For
Next
If i=Len(s) Then flag=True Else
flag=False
If flag Then
Print n; "是降序数"
Else
Print n; "不是降序数"
End If
End Sub
运行以上程序,发现有错误,需要剥给flag变量赋值的If语句进行修改。以下正确的修改是______。
【正确答案】 B
【答案解析】[解析] 判断一个数是否是降序数,则需要按从高位到低位的顺序,从该数的第2位开始,依次与前一位相比,也就是第2位与第1位比较,第3位与第2位比较,以此类推,如果后一位比前一位大,则不符合要求,退出。题目中的For语句即是该功能的实现。当最后一位比较完,并且比前一位小,说明该数为降序数,此时i的值变为Len(s)+1;如果比前一位大。则说明该数不是降序数,直接退出For语句,i的值仍未为Len(s)。对于降序数,执行完For语句后,i的值为Len(s)+1,此时通过If语句进行判断,如果i的值等于Len(s)+1,则是降序数,flag=True;否则不是降序数,flag=False。