




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二级VISUAL BASIC上机必备求两个正整数的最大公约数,最小公倍数Private Sub Command1_Click()最大公约数(一) m = Val(InputBox(请输入一个正整数, , 8) N = Val(InputBox(请输入一个正整数, , 6) w = m * N If m N Then T = m: m = N: N = T r = m Mod N Do While r 方法一,前测试型 m = N 考点 N = r 考点 r = m Mod N 考点 Loop Print 最大公约数是; N 考点 Print 最小公倍数是; w / N 考点End SubPrivate Sub Command2_Click() 最大公约数(二) m = Val(InputBox(请输入一个正整数, , 8) N = Val(InputBox(请输入一个正整数, , 6) w = m * N If m N Then T = m: m = N: N = T Do r = m Mod N 考点 m = N 考点 N = r 考点 Loop While r 0 方法二,后测试型考点 Print 最大公约数是; m 不是n Print 最小公倍数是; w / mEnd SubPrivate Sub Command3_Click()素数的判断(P106方法一),循环变量的值与终值的关系 x = Val(InputBox(请输入一个正整数) k = Int(Sqr(x) For i = 2 To k Step 1 If x Mod i = 0 Then Exit For End If Next i If i k Then 哪种情况下i k Print x; 是素数 Else Print x; 不是素数 End IfEnd SubPrivate Sub Command4_Click()素数的判断(补充方法二,使用标记变量) Dim flag As Boolean x = Val(InputBox(请输入一个正整数) k = Int(Sqr(x) flag = True 判断之前,假设是素数 For i = 2 To k Step 1 If x Mod i = 0 Then flag = False 发现被整除,立刻改变标记,不是素数 Exit For End If Next i If flag = True Then 根据标记的变化判断是否为素数 Print x; 是素数 Else Print x; 不是素数 End IfEnd SubPrivate Sub Command5_Click()字符图形的输出(字符菱形),其实就是对字符Ascii的操作两重循环,外循环控制行数,内循环控制列数上下对称的,先打印上半部分;左右对称的,先打印左边部分 Dim x As String Do x = InputBox(请输入一个大写字母) Loop Until x = A And x 90 Then m = m - 26 Ifm = 26 Then m = 0 Print Chr(m); Print Chr(m + 65); Next j Print 换行 Next iEnd SubPrivate Sub Command7_Click()冒泡法排序() Dim a(10) As Integer For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 List1.AddItem a(i) Next i For i = 1 To 10 冒泡法排序考点 For j = 1 To 10 - i 考点 If a(j) a(j + 1) Then 考点 T = a(j) a(j) = a(j + 1) a(j + 1) = T End If Next j, i For i = 1 To 10 List2.AddItem a(i) Next i End SubPrivate Sub Command8_Click()选择法排序(一) Dim a(10) As Integer For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 List1.AddItem a(i) Next i For i = 1 To 9 选择法排序 考点 For j = i + 1 To 10 考点 If a(i) a(j) Then 考点 T = a(i) a(i) = a(j) a(j) = T End If Next j, i For i = 1 To 10 List2.AddItem a(i) Next iEnd SubPrivate Sub Command20_Click()选择法排序(二) Dim a(10) As Integer For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 List1.AddItem a(i) Next i For i = 1 To 9 选择法排序 考点 k = i 考点 For j = i + 1 To 10 考点 If a(k) a(j) Then k = j 记下最小值的下标,考点 Next j If i k Then 考点 T = a(i) a(i) = a(k) a(k) = T End If Next i For i = 1 To 10 List2.AddItem a(i) Next iEnd SubPrivate Sub Command9_Click() 找最大/最小值 Dim a(10) As Integer For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 Print a(i); Next i Max = a(1) 假如第一个就是最大的 k = 1 记下位置 For i = 1 To 10 If Max N Then Print 没有找到!End SubPrivate Sub Command12_Click()二分查找折半查找又叫二分查找法前提:所查找的数据事先已经按升序或降序排列好. Dim f As Boolean a = Array(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) For i = 1 To 10 Print a(i); Next i Print x = Val(InputBox(输入一个要查找的数, , 15) Tp = 10 bt = 1 f = False 标志变量 Do Md = Int(bt + Tp) / 2) 注意必须是整除!考点! If x = a(Md) Then Print 找到l!位置是; Md; a(Md) 分号隔开,紧凑格式输出 f = True 改变标志变量的值 Exit Do 找到立即退出循环,优化算法.考点! End If If x a(Md) Then bt = Md + 1 考点! Loop While Tp = bt And f = False If f = False Then Print x; 没有找到!End SubPrivate Sub Command13_Click()R进制10进制,本例是16进制转换为10进制x = Trim(Text1) 去掉左右两边的空格N = Len(x) 求长度m = InStr(x, .) 找小数点的位置S = 0For i = 1 To N C = Mid(x, i, 1) 取字符 If C = 0 And C = A And C = Z Then Y = Asc(C) - 55 End If If i m Then 小数部分 S = S + Y * 16 (m - i) End IfNext iText2 = SEnd SubPrivate Sub Command14_Click() 10进制R进制,本例是10进制2进制 x = Val(Text1) T = Do r = x Mod 2 求余 S = Int(x / 2) 或 x 2 求商,整数部分 T = r & T 把余记下,用变量存起来 x = S 把商赋值给被除数,以便下一次再除2 Loop Until S = 0 Text2 = TEnd SubPrivate Sub Command15_Click() 删除一个数(一),用Array()给数组赋值 Dim a() 数组必须是变体 a = Array(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) m = LBound(a) N = UBound(a) For i = m To N Step 1 Print a(i); Next i Print x = Val(InputBox(输入一个要删除的数, 有序数的删除, 50) For i = m To N Step 1 If x = a(i) Then Exit For 找到位置即退出 Next i For j = i To N - 1 Step 1 ! a(i) = a(i + 1) Next j k = N - m - 1 容量减少一个 ReDim Preserve a(k) 重定义容量,并保留原来的值 For i = m To k Step 1 Print a(i); Next iEnd SubPrivate Sub Command16_Click()删除一个数(二),用循环给数组赋初值 Dim a() As Integer 动态数组定义第一步 N = 10 动态数组定义第二步:确定容量 ReDim a(N) 动态数组定义第三步:重定义 For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next i x = Val(InputBox(输入一个要删除的数, 有序数的删除, 50) For i = 1 To N Step 1 If x = a(i) Then Exit For 找到位置即退出 Next i For j = i To N - 1 Step 1 ! a(i) = a(i + 1) Next j k = N - 1 容量减少一个 Print ReDim Preserve a(k) 重定义容量,并保留原来a(1)-a(9)的值 For i = 1 To k Step 1 Print a(i); Next iEnd SubPrivate Sub Command17_Click()删除一个数(列表框) Dim a() As Integer 动态数组定义第一步 N = 10 动态数组定义第二步:确定容量 ReDim a(N) 动态数组定义第三步:重定义 For i = 1 To 10 a(i) = Int(Rnd * 100) List1.AddItem a(i) Next i x = Val(InputBox(输入一个要删除的数, 有序数的删除, 70) For i = 0 To List1.ListCount - 1 If x = Val(List1.List(i) Then List1.RemoveItem i 删除下标 Exit For End If Next iEnd SubPrivate Sub Command18_Click() 插入一个数(对普通数组操作) Dim a() 数组必须是变体 a = Array(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) m = LBound(a) N = UBound(a) For i = m To N Step 1 Print a(i); Next i Print k = N - m + 1 数组容量 ReDim Preserve a(k + 1) 增加一个容量 x = Val(InputBox(输入一个要插入的数, 有序数的插入, 50) For i = m To N Step 1 If x a(i) Then Exit For 找到插入的位置即退出 Next i For j = N To i Step -1 ! a(j + 1) = a(j) 向后移位 Next j a(i) = x x占据 a(i) 的位置 Print For i = m To N + 1 Step 1 Print a(i); Next iEnd SubPrivate Sub Command19_Click()插入一个数(对列表框操作) Dim a() As Integer 动态数组定义第一步 N = 10 动态数组定义第二步:确定容量 ReDim a(N) 动态数组定义第三步:重定义 For i = 1 To 10 a(i) = i * 10 List1.AddItem a(i) Next i x = Val(InputBox(输入一个要插入的数, 有序数的插入, 70) For i = 0 To List1.ListCount - 1 If x = A And UCase(C) = X And UCase(C) = A And UCase(C) = D And UCase(C) = Z Then Y = Chr(Asc(C) - 3) Else 其他的字符不变 Y = C End If S = S & Y Next i Text1 = SEnd SubPrivate Sub Command23_Click()二分法求任意一元高次方程F(X)=0在某一区间的根 首先将方程写成F(X)=0的形式 例,用二分法求F(X)=3*X3-4*X2-5*x+13=0在(-2,-1)区间的一个实根, 直到|X1 - X2|= 0.00001 考点 x0 = (x1 + x2) / 2 考点 F1 = 3 * x1 3 - 4 * x1 2 - 5 * x1 + 13 考点 F2 = 3 * x2 3 - 4 * x2 2 - 5 * x2 + 13 考点 F0 = 3 * x0 3 - 4 * x0 2 - 5 * x0 + 13 考点 If F0 * F1 0 Then Sgn(F0) Sgn(F1) Then Sgn符号函数,正数返回1,负数返回-1,0返回0 x2 = x0 考点 F2 = F0 考点 Else x1 = x0 考点 F1 = F0 考点 End If k = k + 1 计算二分次数(循环次数) Print k, x1, x2 Loop x = (x1 + x2) / 2 达到计算精度后方程的根 考点 Print 方程的根为X=; x, 二分的次数N = ; kEnd SubPrivate Sub Command24_Click() 递归法求阶乘(主调过程)递归就是一个过程调用过程的本身,在递归调用过程中,一个过程执行的某一步要用到它自身的上一步(或上几步)的结果. 用递归求N!,N从键盘输入. N!=N*(N-1)! Dim N As Integer N = Val(InputBox(输入一个整数,并求其阶乘, 输入, 5) f = fact(N) Print N; !=; f Print N=; NEnd SubFunction fact(N As Integer) As Double 递归函数注意:(1) 递归就是在过程或函数里调用自身;(2) 在使用递增归策略时,必须有递推进行的条件,有一个明确的递推结束条件,称为递归出口。3)递归函数的结构是一块if结构! If N 1 Then 递推进行的条件 fact = N * fact(N - 1) Else fact = 1 递推结束的条件 End IfEnd FunctionPrivate Sub Command25_Click() 迭代迭代迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:(1) 选一个方程的近似根,赋给变量x0;(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。用牛顿迭代法(牛顿切线法)求一元高次方程x5+2*x3-x2+x+1=0在0附近的近似根.计算精度:两次根|x-x0|0.000001分析:f(x)=x5+2*x3-x2+x+1f(x)的一阶导数=5*x4+6*x2-2*x+1Dim x As Double, x0 As Double, e As Double, d As Double, f As Doublee = 0.000001x = Val(InputBox(请先输入一个近似值, , 1)N = 1Do x0 = x f = x0 5 + 2 * x0 3 - x0 2 + x0 + 1 d = 5 * x0 4 + 6 * x0 2 - 2 * x0 + 1 x = x0 - f / d N = N + 1 计算迭代次数 Print N, x0, xLoop Until Abs(x - x0) MaxThen Max = a(i) If a(i)MinThen Min = a(i) Sum = Sum + a(i)Next iaver =Sum / 100Print最大值是; Max; 最小值是; Min; 平均值是; aver2.区间内(或文件内)的素数问题【算法思路】就是一个大于等于2的整数,并且只能被1和本身整除,而不能被其他整数整除的数。判别某数m是否是素数的经典算法是:对于正整数m,依次从2,3,4,m1判别能否整除m,只要有一个能整除m,那么m就不是素数,否则m是素数。【算法举例】找出100到200之间的素数。For n =100 To 200 Fori= 2 To n -1 If n Modi=0 Then Exit For Next i If i= n Then Print nNext n3. 最大公约数【算法思路】参见教材P193“辗转相除法”相关内容。【算法举例】求两个数字的最大公约数x =Val(InputBox(请输入第一个数)y =Val(InputBox(请输入第一个数)If xy Then temp = x: x = y: y = tempDo r = x Mod y x = y y = rLoop While r0Print x4. 最小公倍数【算法思路】数x、y的最小公倍数= x * y / 最大公约数5.两数互质【算法思路】仅需验证两数最大公约数是否是16.冒泡法排序【算法思路】参见教材P220“冒泡法排序”相关内容【算法举例】从指定文件中读取100个整数,并正序排列,将第66位数字存入指定文件。Dim a(1To 100)OpenD:Dt1.txt For Input As #1 For i= 1 To100 Input #1, a(i) Next iClose#1For i= 1 To 99 For j = 1 To 99 If a(j)a(j + 1)Then temp = a(j) a(j) = a(j +1) a(j + 1) =temp End If Next jNextiOpenD:Dt2.txt For Output As #2 Write #2, a(66)Close#26.勾股数【算法举例】计算1至60的勾股数,其中3、4、5与3、5、4算一组。Fori= 1 To 60 For j = 1 To 60 For k = j To 60 Ifi 2= j 2 + k 2 And jk Then Printi, j, k End If Next k Next jNexti7.出现字母最多的是【算法举例】统计指定文件中出现大写字母最多的是什么。Dim a(1To 300) As StringDim b(65To 90) As Integer Open D:Dt2.txt For Input As#1 For i= 1 To300 Input #1, a(i) Next i For i= 1 To300 For j = 65 To 90 If a(i) =Chr(j) Then b(j) = b(j) + 1 Next j Next i For x = 65 To 90 If b(x)Max Then Max = b(x) letter =Chr(x) End If Next x Print letter8.加密算法【算法举例】最简单的加密方法是:将每个字母加一序数,例如5,这时: “A”F”,”a” ”f”,”B” ”G”,”b” ”g”Y” ”D”, ”y” ”d”,”Z” ”E”, ”z” ”e”DimstrInput$, Code$, Record$, c As String *1Dimi%, length%,iAsc%strInput= Text1.Textlength =Len(Trim(strInput)Code =Fori= 1 To length c = Mid(strInput,i, 1) Select Case c Case A To Z iAsc=Asc(c) + 5 If iAscAsc(Z) Then iAsc=iAsc- 26 Code = Code & Chr(iAsc) Case a To z iAsc=Asc(c) + 5 If iAscAsc(z) Then iAsc=iAsc- 26 Code = Code&Chr(iAsc) Case Else Code = Code&c End SelectNext iText2.Text = Code9.逐项定义数列构造问题【算法举例】斐波那契数列:1,2,3,5,8,10求数列的第44项。Dim a(1To 88)a(1) =1a(2) =1For i= 3 To 88 a(i) =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南麻栗坡农旅开发投资集团有限责任公司公开招聘管理人员9人笔试题库历年考点版附带答案详解
- 2025中煤能源新疆鸿新煤业有限公司招聘1人笔试题库历年考点版附带答案详解
- 2025中国移动研究院春季校园招聘笔试题库历年考点版附带答案详解版
- 2025年机器人行业智能机器人与人机协作研究报告
- 2025年放射肿瘤科医学影像学评估模拟测试答案及解析
- 2025年全科医学家急救心肺复苏操作规范模拟试题答案及解析
- 2025年教育培训行业在线教育平台增长模式研究报告
- 2025年机器人行业智能制造与人机协作技术研究报告
- 2025年智慧城市行业智能交通管理系统应用研究报告
- 2025年生态环保行业清洁能源与可持续发展研究报告
- 湖南土建中级职称-建筑工程《法律法规及技术标准》考试题(附答案)
- 住院精神疾病患者攻击行为预防
- 15 青春之光(公开课一等奖创新教案)
- 输液空气的栓塞及预防
- 财务知识及财务分析培训
- 《化工设备设计原理与实例》课件
- 新版机动车交通事故责任强制保险合同
- T-CTSS 3-2024 茶艺职业技能竞赛技术规程
- 品管圈PDCA案例-普外科提高甲状腺手术患者功能锻炼合格率
- 2022-2024年营养指导员考试真题及答案合集
- 《电工基础(第2版)》中职全套教学课件
评论
0/150
提交评论