(6) 在Visual Basic的立即窗口内输入以下语句
X=65<CR>
?Chr$(X) <CR>
在窗口中显示的结果是 【6】 。
答案:A
解析: Chr$()是求ASCII字符的函数,格式是Chr$(表达式),其中"表达式"应该是合法的ASCII码值,Chr$()函数把"表达式"的值转换为相应的ASCII字符。本题中X=65对应的ASCII码是字符A,所以显示的结果应该是A。
(7) 下列程序是判断一个整数(>=3) 是否为素数,请补充完整。
Dim n As Integer
n=InputBox("请输入一个整数(>=3) ")
k=Int(Sqr(n) )
i=2
swit=0
While i <=k And swit=0
If n Mod i=0 Then
【7】
Else
【8】
End If
Wend
If swit=0 Then
Print n; "是一个素数。"
Else
Print n; "不是一个素数。"
End If
答案:swit=0
swit=1
解析:素数是只能被1和本身整除的正整数,在本题的程序中,swit是一个标志变量,如果"swit=0",则表示n不能被整除;如果能被一个整数整除,则swit变为1;
While循环执行的条件有两个,一个是"I<=k",另一个是"swit=0",必须两个条件同时成立才执行循环,当I>k时,显然不必再检查n是否能被I整除;而如果"swit=1",则表示n已被整除,肯定不是素数,也不必检查了。
只有"I<=k"和"swit=0"两者同时成立时才需要检查"n是否为素数",循环只有一个判断操作,即判断n能否被I整除,如果不能,则I=I+1。以便为下一次判断作准备。
(8) 下面程序是用来打印九九乘法表的,请补充完整。
Dim i As Integer, j As Integer, Str1$
Str1=""
For i=1 To 9
For j=1 To 9
If 【9】 Then
Str1=Str1 + Str$(j) + "×" + Str$(i) + "=" + Str$(Val(i j) )
Else
Str1=Str1 & Chr(13)
【10】
End If
Next j
Next i
Print Str1
答案:j<=i
j>i
解析: (1) Exit语句总是出现在If语句或Select Case语句内部,而If语句或Select Case语句在循环内嵌套,用Exit语句中断循环。函数首先定义了两个Integer型变量i、j,并将空格赋给Str1;第一个For循环的变量I从1到9步长为1,第二个循环的变量i也是从1到9步长为1,循环体为选择结构,它是用来输出i*j的值,所以j的值应该小于此时i的值,那么If的判断语句为j<=i,当满足条件时执行Then后面的语句,即输出i*j的值,如果不满足执行Else后面的语句,并跳出内循环。
(9) 在窗体上有一个命令按钮,然后编写如下程序:
Function Trans(ByVal num As Long) As Long
Dim k As Long
k=1
Do While num
k=k * (num Mod 10)
num=num \ 10
Loop
Trans=k
Print Trans
End Function
Private Sub Command1_Click()
Dim m As Long
Dim s As Long
m=InputBox("请输入一个数")
s=Trans(m)
End Sub
程序运行时,单击命令按钮,在输入对话框中输入"789",输出结果为 【11】 ,在输入
对话框中输入"987"输出 【12】 ,在输入对话框中输入"879",输出结果为 【13】 。
答案:504
504
解析: 关键字ByVal用来实现传值,也就是说在定义通用过程时,如果形参前面有关键字Byval,则该参数用传值方式传递,否则用传址方式传递;在Sub过程中,先将输入的"456"赋给变量m,m作为参数,调用Trans过程;在Trans过程中以num作为Do While的循环条件;在循环体中,调用Mod函数,将num的个位数字与k相乘,然后赋给k,第一次循环时,num的值是789,所以k的值为9,执行num = num \ 10后,num的值为78,循环三次后,num变为0,退出循环,k值等于9×8×7=504,并将k的值作为返回值;当输入"987"或"879"时执行相同的操作,结果都为504。可以看出,此程序可用于求一个数值各位上数值的乘积。
(10) 下面程序的功能是产生10个小于100(不含100) 的随机正整数,并统计其中5的倍数所占比例,但程序不完整,请补充完整。
Sub PR()
Randomize
Dim a(10)
For j=1 To 10
a(i) =Int( 【14】 )
If 【15】 Then k=k + 1
Print a(j)
Next j
Print
Print k / 10
End Sub
答案:(99 * Rnd)+ 1
a(j) Mod 5 = 0
解析: 小于100的随机正整数用(99 * Rnd)+ 1来表示;求倍数用取模来表示,即a(j) Mod 5 = 0,用k作计数器,累计计算能被5整除的数的个数。
上一页 [1] [2] [3]