当前位置:首页 > vb期末考试复习资料(经典总结版)
n1=n
Do Whilen<>0
remin = rn Mod n m=n
n = remin Loop
Print m1, n1, m End Sub
程序运行后,单击窗体,在输入对话框中分别输入16和24,则程序在窗体上的输出结果为 A.16 24 4 B.16 24 8 C.24 16 6 D.24 16 8
【分析】 本题提供的是用“辗转相除法”求两个整数的最大公约数的程序。一般来说,假定有两个整数m和n(m>n),把m作为被除数,n作为除数,相除后余数为r。如果r不等于0,则令m=n,n=r,再进行一次除法运算(以新的m作为被除数,n作为除数),得到新的r。如果r仍不等于0,则重复上述过程,直到r=0为止,此时的n就是两个数的最大公约数。
在本题的Do While-Loop循环中,通过辗转相除求最大公约数,循环结束的条件是相除后余数为0,如果不为0,则一直“除”下去。这里用Mod运算符求余数,较大的整数作为被除数或者较小的整数作为被除数都可以得到正确结果,但整除的次数可能会不一样。
例如,假定有两个数24和16,先把24作为被除数,16作为除数,相除后余数为8。再把原来的除数16作为下一次的被除数,将上一次得到的余数8作为下一次的除数,相除后余数为0。此时最后一次的除数8就是所求的最大公约数。
在本题的输入中,先输入16,再输入24,求出的最大公约数仍为8。 【答案】 B
例6 阅读下面的程序: Private Sub Form_Click() Dim Check, Counter Check = True Counter = 0 Do
Do While Counter < 20 Counter = Counter + 1 If Counter = 10 Then Check = False Exit Do End If Loop
Loop Until Check = False Print Counter, Check End Sub
程序运行后,单击窗体,输出结果为 A.15 0 B.20 -1 C.10 True D.10 False 【分析】 这是一个二重循环,内层和外层都是Do循环。在内层循环中,执行循环体的条件是Counter小于20,由于Counter的初值为0,因此执行循环体。在循环体中,每次循环Counter增1,达到10后,把Check变量设置为False,同时执行Exit Do,退出内层循环。外层循环执行的条件是,变量Check的值是True。如果Check为False,则退出外层循环,输出结果,结束程序。由于在退出内层循环时,Check已被设置为False,因此退出内层循环后立即就可以退出外层循环。退出两层循环后,Counter和Check的值没有发生任何改变,与退出内层循环时相同,分别为10和False。 【答案】 D
例7 在上面例题6的二重循环中,如果把外层循环中的Until关键字改为While,要求输出结果相同,请填空。
13
Do
Do While Counter< 20 Counter = Counter + 1 If Counter = 10 Then Check = False Exit Do End If Loop
Loop While _____
【分析】 在Do-Loop循环中,Until关键字的含义是“直到条件变为真之前”执行循环体,而While关键字正好相反,是“当条件为真时”执行循环体。也就是说,这两个关键字后面的条件是相反的,只要在条件前加上取反运算符Not,或者条件从False改为True,就可以用While替换Until,并且反之亦然。
【答案】 Not Check=False或Check=True 例8阅读程序:
Private Sub Form_Click()
Dim i As Integer, sum As Integer For i = 2 To 10
If i Mod 2 <> 0 Then Print i Else
sum = sum + i End If Next i Print sum End Sub
程序运行后,单击窗体,在窗体上的输出结果是_____。
【分析】 本题For循环的循环变量的初值为2,终值为10,步长为1。在循环体内,判断循环变量的值是否为偶数,如果是,则将该值累加到变量sum,否则输出循环变量的值。不难看出,运行该程序后,在循环体内输出的是奇数,而累加的是偶数。在循环体外,输出偶数的累加和。 【答案】 3 5 7 9 30
例9 阅读程序:
Private Sub Form_Click()
Dim num As Integer, digit As Integer num= InputBox(\ While num <> 0 digit =num Mod 10 num = num\\ 10 Print digit Wend End Sub
程序运行后,如果从键盘上输入9876,则输出结果为_____。
【分析】 本题使用了当循环,循环执行的条件是num不等于0。在循环体内,先用Mod运算符求出输入的数num的余数,接着用10对该数进行整除,把得到的商赋给num,最后输出余数。然后对整除后的num重复上述过程,直到num为0,结束循环。
在循环内,digit存放的是num的个位数,而每次整除后,num都要去掉个位数,而输出的也是个位数。例如,假定输入的是9876,则循环的执行过程如下: digit = 9876 Mod 10 = 6 num= 9876 \\ 10 = 987
14
Print digit 输出6 由于num不等于0,重复上述过程: digit = 987 Mod 10 = 7 num= 987 \\ 10 = 98
Print digit 输出7 num不等于0,重复上述过程: digit = 98 Mod 10 = 8 num= 98 \\ 10 = 9 Printdigit 输出8
num不等于0,重复上述过程: digit = 9 Mod 10 = 9 num=9\\ 10=0
Print digit 输出9 num等于0,结束循环。 【答案】 6 7 8 9
例10 以下程序的功能是,从键盘上输入若干学生的成绩,统计并输出最高分数和最低分数,当输入负数时结束输入,请填空。 Private Sub Command1_Click() Dim x As Single
Dim amax As Single, amin As Single x=InputBox(\请输入分数\ amax = x amin = x
Do While______
If x > amax Then amax = x End If
If______Then amin = x End If
x=InputBox(\请输入分数\ Loop
Print amax, amin End Sub
【分析】 本题需要填两个空。第一个空是结束循环的条件。根据题目要求,在循环体内,需要反复地输入每个学生的分数,只有当输入负数时才结束输入,即退出循环。也就是说,结束循环的条件就是输入的数是负数,即小于0。 【答案1】 x>=0 或Not x<0
由于本题要求输出输入的最高分数和最低分数,其中最高分数通过循环中的第一个条件语句来统计,放在变量amax中,类似地,最低分数通过循环中的第二个条件语句来统计,放在变量amin中。
【答案2】x<amin 或 Not x>=amin
例11 给定三角形的三条边长,计算三角形的面积。编写程序,首先判断给出的三条边能否构成三角形,如可以构成,则计算并输出该三角形的面积,否则要求重新输入。当输入-1时结束程序。 【分析】 从几何学可知,三角形的两边之和大于第三边。因此,如果输入的三角形的三条边中两边之和小于或等于另一边长,则不能构成三角形。在这种情况下,给出适当的信息,并要求重新输入。如果能构成三角形,则输出该三角形的面积。 程序如下:
Private Sub Form_Click() Dim a, b, c, s, t As Single
15
a=InputBox(\请输入A边的边长\ a=Val(a)
If a<0 Then End
b=InputBox(\请输入B边的边长\ b=Val(b)
c=InputBox(\请输入C边的边长\ c=Val(c)
If a+b<=c Or b+c<=a Or c+a<=b Then
MsgBox\所输入的值不能构成三角形,请重新输入\,,\ Exit Sub End If
s=(a+b+c)/2
t = Sqr(s * (s - a) * (s - b) * (s - c)) Print\三角形的面积为:\End Sub
程序运行后,单击窗体,依次显示三个输入对话框,在三个对话框中分别输入三角形的三条边长,程序先判断输入的边长是否能构成三角形,然后决定之后的操作,用信息框显示提示信息或者在窗体上输出三角形的面积。当输入1、2、3时,将显示信息框,如图7-5所示,提示不能构成三角形,要求重新输入,并退出程序;如果输入8、7、6,则输出结果为: 三角形的面积为:20.33316
如果在第一个输入对话框中输入-1或小于0的值,则结束程序。
第七章 数组
一、选择题:
例1 在窗体上画一个命令按钮,然后编写如下程序: Option Base 1
Private Sub Command1_Click(Index As Integer) Dim Arr1(12) As Integer, Arr2(3) As Integer Dim Sum As Integer Sum = 2
For i= 1 To 12 Arr1 (i) = i Next i
For i = 1 To 3
Arr2(i) = Arr1(i * i) Next i
For i = 1 To 3
Sum = Sum + Arr2(i) Next i Print Sum End Sub
程序运行后,单击命令按钮,在窗体上的输出结果是 A.16 B.24 C.32 D.36
【分析】在该例中定义了两个一维数组,分别为Arr1和Arr2,由于使用了Option Base 1语句,因此其大小分别为10和3,接着执行三个For循环。在第一个循环中,对Arr1数组赋初值,每个元素的值与其下标相同,即Arr1(1)=1,Arr1(2)=2??。在第二个循环中,为Arr2数组的三个元素赋值,这三个值分别为Arr1数组第一、三、九个元素的值,即Arr2(1)=1、Arr2(2)=4、Arr2(3)=9。在第三个循环中,计算数组Arr2各元素的和,并把它赋给变量Sum。各元素的和为1+4+9=14,但由于变量Sum的初值为2,因此最后的输出结果为16。 【答案】A
例2 在窗体上画一个文本框,然后编写如下代码: Option Base 1
Private Sub Form_Click()
16
共分享92篇相关文档