‘累乘法需要大家掌握,熟知其原理
Private Sub Command1_Click() ‘累乘,和累加原理相同,累加用的打印方式输出,这里赋给控件输出
Dim i%, a& ‘同样定义一个循环变量i,存储变量a(由于求阶乘的数会较大,所以建议a使用更高范围的长整型)
a = 1 ‘注意:累乘需要最先给存储量定义1,因为如果不定义默认0,则最后会输出0(0乘以任何数都是0)
For i = 1 To Val(Text1.Text) ‘设置循环i从1开始循环到文本的值,而文本值是用户进行输入的
‘意思就是求这个文本的阶乘,由于阶乘必须是数字,所以要加个val使其只能读取数字,这样才能保证严谨
‘如果不加val,则不能给全分,因为不够严谨,val能使文本只读取最开头的数字
a = a * i ‘进行累乘,a用来存储i以前的累乘值,i代表新增的累乘值
Next i ‘结束循环
Label1.Caption = a ‘将a的值赋给可视化的控件label1,使用户可以看见
End Sub
‘累加法需要大家理解,知道这是怎么一个逻辑
Private Sub Form_Load() ‘累加,计算从1+2+3+…+99+100
Show ‘对于“窗体加载事件”,无法正常打印(print),需要在事件开头加一个show
Dim i%, a% ‘定义循环变量i,变量a是存储累加的功能
For i = 1 To 100 ‘将i从1~100依次循环
a = a + i ‘这一行代码是关键,先别看"a=",就看"a+i",第一次循环a没有赋值(未赋值就是默认0)
‘第一次循环就是a=0,i=1,最后a被赋值0+1也就是变成了1,第二次循环a=1,i=2…
‘我们可以发现a就是存储了i以前的累加值总和,而i则代表新的累加值
Next i ‘结束for循环,对应循环变量i
Print a ‘打印,由于a已经定义了变量,所以不是字符串,无需双引号
End Sub

‘冒泡循环和选择循环,需要掌握
Dim i%, j%, t% ‘声明循环变量i,j,转换中介变量t
Dim a(0 To 5) As Integer ‘冒泡排序法用的数组,定义数组a索引0-5,并且是整型
Dim p%, b(0 To 6) As Integer ‘选择排序法声明的变量,真正意义只要6个数组就行了,多加1位是防越界
Private Sub Command1_Click() ‘冒泡循环
For i = 0 To 5
a(i) = Text1(i).Text
Next i ‘前面三行就是把text1的值赋给数组a,因为text1.text字太多了,后面代码要输入好多,图方便
For i = 1 To 5 ‘6个数依次求最大,只要知道第5个大的就ok了,因为剩下的就是第6大的
For j = 0 To 5 – i ‘从那么求一次最大值需要和后面每个数比较,那些已经是最值的就不用比
‘所以减去i(代表已经求出的最值个数)
If a(j) > a(j + 1) Then ‘和后面比较,如果大于后面
t = a(j): a(j) = a(j + 1): a(j + 1) = t ‘这个逻辑就是和后面的数交换,需要有个中介t,非常基础的编程思维
End If
Next j
Next i
For i = 0 To 5
Text1(i).Text = a(i) ‘这里和第一步一样,因为a是方便用来编写的工具数组,要把他换回可视化的text1
Next i
End Sub

Private Sub Command2_Click()
For i = 0 To 5
b(i) = Text1(i).Text
Next i ‘前面三行就是把text1的值赋给数组a,因为text1.text字太多了,后面代码要输入好多,图方便
For i = 0 To 4 ‘选择排序法就是依次选出最小的,所以是6个数循环5次,最后剩下的就可以少选一次了
p = i ‘将i值赋给p,方便后面比较
For j = i + 1 To 5 ‘由于是选出最小的,所以已经选出来的就不用再选了,故要+1,直到最后一个数组号码5
If b(p) > b(j) Then p = j ‘如果找出小的,则替换
Next j
If p <> i Then ‘判断他的索引是否相等,因为如果索引相等替换,则是徒劳
t = b(p): b(p) = b(i): b(i) = t ‘进行数组间值的替换,要用到中介t
End If
Next i
For i = 0 To 5
Text1(i).Text = b(i) ‘这里和第一步一样,因为a是方便用来编写的工具数组,要把他换回可视化的text1
Next i
End Sub

Private Sub Command3_Click()
For i = 0 To 5
Text1(i).Text = "" ‘循环清空,方便下次运行
Next i
End Sub

‘求素数与穷举,这个需要大家掌握,技能考70%会考,可能在第三题,第三题能拿下岂不是直接过
Dim i%, j%, a% ‘定义2个循环变量i/j,和一个变量a用来存储text1.text方便写代码
Dim flag As Boolean ‘这里定义标记变量flag,布尔类型只有true和false(默认false),标记其是不是素数
Private Sub Command1_Click() ‘求文本1范围内的素数
‘首先了解素数概念:在正整数情况下,除了1和本身,其他数比其小的数作为被除数均无法整除
‘所以代码整体思路就是通过循环嵌套,外循环作为除数,内循环作为被除数,进行求余
‘再通过一个标记变量记录,最后通过这个标记变量判断是否是素数,进行穷举,听懂掌声
a = Val(Text1.Text) ‘赋值给a,val只读取数字增加代码严谨性
For i = 2 To a ‘这里外循环作为除数,也就是拟求的素数,因为素数不能为1,所以从2开始,直到范围
flag = True ‘首先假设这个数为素数
For j = 2 To i – 1 ‘设置内循环,也就是除数,因为1一定可以整除所以从2开始测试,直到该数的前一个数
If i Mod j = 0 Then flag = False ‘进行求余判断,如果能整除(余数为0),则不是素数,标记false
Next j ‘结束内循环
If flag = True Then ‘最后判断标记,如果还是true,则一定是素数了,可以安全穷举了
Text2.Text = Text2.Text & " " & i ‘这里就是穷举了,首先和累加差不多,但要记着文本连接符号是 &
End If
Next i
End Sub

‘求最值,要求大家掌握其算法
Private Sub Command1_Click()
‘首先做控件的时候就给text1定义了6个数组0号-5号
Dim i%, max%, min% ‘既然已经有数组了,那就可以用循环变量i来代替数组索引,定义max和min存最值
max = Val(Text1(0).Text) ‘求最值这里只能是数字,所以要加val表示严谨(不加没分)
min = max ‘这两行代码可以一起看,意思就是将第0个数组的值都赋给max&min,通过和后面比较求最值
For i = 1 To 5 ‘第0个数组不用和自己比较,所以从1开始比较,直到最后的5号数组
If Val(Text1(i).Text) > max Then max = Val(Text1(i).Text) ‘找到比原来大的就替换
If Val(Text1(i).Text) < min Then min = Val(Text1(i).Text) ‘找到比原来小的就替换
‘如果if整个代码在一行时,就不用end if
Next i
Text2.Text = max ‘最后把最值赋给可视化控件
Text3.Text = min
End Sub

Private Sub Command2_Click()
End ‘退出程序代码,记一下万一要考
End Sub