'累乘法需要大家掌握,熟知其原理 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