设有如下程序代码: Private Sub Command1_Click() Dim ch As String Dim num(26) As Integer ch = InputBox("") Call p(num, ch)

admin2020-07-22  22

问题 设有如下程序代码:
Private Sub Command1_Click()
    Dim ch As String
    Dim num(26) As Integer
    ch = InputBox("")
    Call p(num, ch)
    For k = 1 To 26
        If num(k) > 0 Then Print num(k);
    Next k
End Sub
Private Sub p(a() As Integer, ch As String)
    For k = 1 To Len(ch)
        st = Mid(ch, k, 1)
        If st >= "a" And st <= "z" Then
            n = Asc(st) - Asc("a") + 1
            a(n) = a(n) + 1
        End If
    Next k
End Sub
若Command1_Click过程运行时的输入是:program,则产生的输出是

选项 A、1 1 1 1 1 2
B、program
C、1 1 1 1 1 1
D、1 2 1 1 1 2

答案A

解析 Len(ch)计算program的字符数为7,num(26)数组用来统计每个字符出现的次数,Asc()函数用来返回指定字符的ASCII码值。程序开始执行,输入字符串"program"给变量ch,然后调用过程p,调用开始时实参num()将地址传给形参a(),实参ch将地址传给形参ch。程序开始执行过程p:首先进入For循环,k取值从1到7。当k=1,st=mid(ch,k,1)="p",判断If条件为真,执行n=Asc(st)-Asc("a")+1=16,a(16)=0+1=1;当k=2,st=mid(ch,k,1)="r",判断If条件为真,执行n=Asc(st)-Asc("a")+1=18,a(18)=0+1=1;当k=3,st=mid(ch,k,1)= "o",判断If条件为真,执行n=Asc(st)-Asc("a")+1=15,a(15)=0+1=1;依次执行,当k=7执行最后一次循环结束。a()数组中存放的值为字符串ch中每个字符出现的次数。最后程序返回Command1_Click过程。For循环将数组中非0元素依次打印输出。故答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/WcHp777K
0

最新回复(0)