1、VB常见程序段Visual Basic程序设计基础知识要点(程序设计篇)九大问题具体例子分析:一、求最大数、最小数、求和以及求平均数 For i= 1 To 10 a(i)=Int(Rnd*90)+10 产生1099之间的随机数 Next i Max=a(1):Min=a(1) 假设最大数和最小数 For i= 1 To 10 If Maxa(i) Then Min=a(i) 求最小数 Sum=Sum+a(i) 求和 Next i Avg=Sum/10 求平均数 二、求阶层 例题:求10!. Private Sub Command1_Click() Dim p As Long, i As In
2、teger p=1For i= 1 To 10 p=p*i Next i Print “10!=”;Sum End Sub三、求最大公约数 例题:求M和N两个数的最大公约数。 Private Sub Command1_Click() Dim M As Integer, N As Integer, R As Integer M=36:N=24 Do R=M Mod N M=N N=R Loop While R0 或 Loop Until R=0 Print “M和N的最大公约数为:”;M End Sub四、求素数 例题:求100200之间的所有素数,并按每行5个元素格式输入所有素数。 Priva
3、te Sub Command1_Click() Dim n As Integer ,i As Integer j As Integer For n = 100 To 200 For i = 2 To n-1 n-1可以是n/2,也可以是Sqr(n)形式 If n Mod i =0 Then Exit For Next i If in-1 Then j=j+1 统计素数个数 Print n; If j Mod 5 =0 Then Print 输出5个数换行 End If Next n End Sub五、求水仙花数(拆数法) 例题:求100999之间的所有水仙花数,并将所有水仙花数在文本框中显示。
4、所谓水仙花数:即153=13+53+33条件成立。 方法1:(数值型:使用运算符Mod 和 ) Private Sub Command1_Click() Dim i As Integer ,a As Integer ,b As Integer ,c As Integer For i = 100 To 999 a=i100 取百位数 b=i10 Mod 10 取十位数 c=i Mod 10 取个位数 If i=a3+b3+c3 Then Text1.Text=Text1.Text & i & Space(2) End If Next i End Sub 方法2:(字符型:使用函数Mid、Val和
5、CStr) Private Sub Command1_Click() Dim i As Integer ,a As Integer ,b As Integer ,c As Integer For i = 100 To 999 a= Val(Mid(Cstr(i),1,1) 取百位数 b= Val(Mid(Cstr(i),2,1) 取十位数 c= Val(Mid(Cstr(i),3,1) 取个位数 If i=a3+b3+c3 Then Text1.Text=Text1.Text & i & Space(2) End If Next i End Sub排序问题方法1:选择排序for i=1 to
6、n-1 比较n-1轮 for j=i+1 to n 每一轮比较几次 If a(j)a(i) t=a(i):a(i)=a(j):a(j)=t 两数交换 End If next jnext i 方法2:直接插入排序 For i= 1 To 9 比较n-1轮 Pointer=i For j = i+1 To 10 每一轮比较几次If a(Pointer)a(j) Then Pointer=j Next jIf i Pointer Thent=a(i):a(i)=a(j):a(j)=t 两数交换 End IfNext i方法3:冒泡排序 For i= 1 To n-1 比较n-1轮 For j = 1
7、 To 10-i 每一轮比较几次 If a(j)a(j+1) Then 从大到小:a(i)= A And c= a And cmax Then Max= a(i,j) If a(i,j) max Then max = a(i)End If If a(i) n Then Text2.Text = Str(num) + 不存在于数组中 End If4.矩阵(二维数组)行或列交换 P37、P141设N行M列矩阵(二维数组)用Mat(N,M)表示将第L1行和L2行元素交换For j = 1 To M t = Mat(L1, j) Mat(L1, j) = Mat(L2, j) Mat(L2, j) =
8、 tNext j将第C1列和C2列元素交换For i = 1 To N t = Mat(i, C1) Mat(i, C1) = Mat(i, C2) Mat(i, C2) = tNext i注意:具体程序要对L1、L2、C1和C2指定特定值三、字符操作类1.字符串s取反For i= len(s) to 1 step -1 c=Mid(s,i,1) fs=fs & Cnextfs即为所求2.判断字符串myStr中的某个字符是否为字母For I=1 to Len(myStr)If Mid(myStr,I,1)=”a” and Mid(myStr,I,1)=“A” and Mid(myStr,I,1
9、)=”0” and Mid(myStr,I,1)=”9” Then 是的处理 End IfNext I 3.统计字符个数典型试题:已知一段文章,出现的字符均是字母,求出现的字母频率最高的字母(不区分大小写,都以大写字母表示),并将未出现的字母显示出来。上机强化训练P56分析:以字符串变量s代表这段文章,s1代表出现的字母频率最高的字母组成的字符串,s2代表未出现的字母组成的字符串,用数组a存放26个字母的频率(a(1)代表“A”出现的频率,a(2)代表”B”出现的频率,,a(26)代表”Z”出现的频率),n代表字母在字母表的位置For i = 1 To len(s) c = Mid(s, i,
10、 1) If c Then n = Asc(UCase(c) - Asc(A) + 1 a(n) = a(n) + 1 End If Next i max_n = a(1) For j = 1 To 26 If a(j) max_n Then max_n = a(j) End If Next j For i = 1 To 26 If a(i) = max_n Then s1 = s1 + + Chr(Asc(A) + i - 1) End If If a(i) = 0 Then s2 = s2 + + Chr(Asc(A) + i - 1) End If Next i 按题目要求显示s1和s2
11、4.字符串加密和解密主要考查移位加密和解密,设移位的个数为n加密:For i = 1 To Len(s)c = Mid(s, i, 1)se = se & Chr(Asc(c) + n)NextPrint se解密:For i = 1 To Len(s)c = Mid(s, i, 1)sd= sd & Chr(Asc(c) - n)NextPrint sd要按实际情况设置移位个数四、文件操作类Open App.Path & in.txt For Input As #1Do While Not EOF(1)Input #1, strText1.Text = Text1.Text & strLoo
12、pClose #1读数据:Sub ReadData() Open App.Path & & datain1.txt For Input As #1 For i = 1 To 100 Input #1, A(i) Text1=Text1+str(a(i)+Space(1) Next i Close #1End SubPrivate Sub Form_Load()Open App.Path & in5.txt For Input As #1n = 0Do While Not EOF(1) Input #1, x n = n + 1 a(n) = x Loop Close #1End Sub数据存盘:Sub WriteData(Filename As String, Num As Integer)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1