




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Visual Basic程序设计综合训练题目 录综合题一(素数算法)3综合题二(查找算法)4综合题三(排序算法)5综合题四(求最值算法)6综合题五(矩阵操作)7综合题六(随机文件操作)8参考代码9综合题一(素数算法)9综合题二(查找算法)10综合题三(排序算法)11综合题四(求最值算法)13综合题五(矩阵操作)14综合题六(随机文件操作)15综合题一(素数算法)设计一个界面如下图所示,其窗体上有一个文本框和一个命令按钮。实现功能为:在文本框中输入一个任意数,单击“判断”按钮进行素数判断。若是素数则将文本框中输入的值保存在文件in1.txt中并提示保存成功,否则提示“该数不是素数”。提示:判断数a是否为素数,利用可能被整除的数(2)与a进行取余运算(mod),若余数为零,就为非素数;当所有可能被整除的数都使得余数不为零,a就是素数。综合题二(查找算法)一个包含姓名的顺序文件name.txt,一个姓名独占一行(如下图所示)。编写程序实现对name.txt中姓名的查找。程序界面利用列表框显示读出的所有姓名,在查找内容中输入姓或姓名,单击“查找”按钮,在查找结果中显示name.txt文件中的姓名提示:1. 顺序文件的读写操作,在打开文件时有所区别,读文件时用for input,写文件时用for output;2. 在读文件时,将读到的姓名存放在数组中方便后续查找算法的实现;3. 查找的方法可从第一个数组元素开始与“查找内容”进行比较,若考虑“查找内容”可以是同姓的所有姓名,注意在条件判断时使用取字符串函数(left);4. 有多个姓名满足查找内容时,其查找结果须连接显示在文本框中,用“&”字符串连接符。综合题三(排序算法)随机产生10个数(099),按下面要求进行排序操作。(1) 采用比较交换法将上述随机数按从小到大进行排列;(2) 将(1)的结果利用选择排序法按从大到小进行排序,并计算比较和数据交换的次数;(3) 将(2)的结果利用冒泡排序法从小到大进行排序,同样计算比较和数据交换的次数。提示:三种排序算法的相同点在排序的趟数都为n-1(n个的数)次,在算法中主要包含比较和交换代码,不同的点是比较的交换代码的位置不一样,选择排序法中需利用最值算法。综合题四(求最值算法)一个简易的成绩评定程序,根据评委们给出的成绩,按去掉一个最高分和一个最低分,求平均分的方法求选手的成绩。参考界面如下:成绩评定程序界面,其中显示评委成绩的为text控件数组提示:1. 最高分和最低分的计算利用求最值的算法,为了易于编写程序,可考虑使用文本框控件数组;2. 评委的分数可以利用随机函数获得一个区域值;3. 选手最后的成绩可以考虑保留1位小数(int(分数*10)/10或int(分数*10+0.5)/10,后者考虑了四舍五入)。综合题五(矩阵操作)利用For循环产生一个九九乘法表的计算结果,按下列要求输出:(1) 按矩阵方式输出完整的九九乘法表;(2) 上三角输出九九乘法表;(3) 交换行列,按交换后的位置输出。 提示:1. 类似上图这种矩阵操作,我们通常采用二维数组,利用两重循环,控制二维数组元素的行值和列值,每行输出完毕后需换行,并且需考虑定位情况(利用tab函数或format格式函数);2. 参考界面中的输出在图片框中实现,所以在输出语句print前需加上图片框对象名。综合题六(随机文件操作)建立一个随机文件,编写程序实现对随机文件的读、写和修改操作。参考界面如下: “文件”菜单 读文件修改记录时提示输入记录号提示:1. 操作随机文件时,需使用自定义数据类型,如上图所示,学生记录中包含学号,姓名和年龄,可通过自定义数据类型定义(typeend type);随机文件的读写模式都为for random或省略;读写记录的分别为get和put;修改记录时,可利用put 文件号,要修改的记录号,自定义类型变量实现。2. 建立文件菜单的方法:在窗体设计器上右键单击选择“菜单编辑器”,可按如下方法建立菜单,实现功能时需编写各菜单的单击事件。参 考 代 码综合题一(素数算法)Private Sub Command1_Click() Dim intnum As Integer intnum = Val(Text1.Text) intnum接收文本框中输入的值 求素数算法,将所有可能被整除的数与intnum进行取余运算 若余数为零,说明intnum不是素数,循环结束,此时循环变量的值在2sqr(intnum)范围内 若intnum是素数,则For循环是因为循环变量i超过Sqr(intnum),不再满足循环条件而退出。 For i = 2 To Sqr(intnum) If intnum Mod i = 0 Then Exit For Next i 下面对循环变量进行判断,得出是否是素数的结论 If i Sqr(intnum) Then Call save 调用保存过程 MsgBox 素数保存成功! Else MsgBox 该数不是素数! End If End SubPrivate Sub save() 实现保存数据功能 将顺序文件in1建立在工程和窗体文件保存的文件夹下,进行写操作Open App.Path & in1.txt For Output As #1 Print #1, Text1.Text 将文本框的内容写入文件in1中 Close #1 文件操作完毕后必须关闭End Sub综合题二(查找算法)Dim a(15) As String 接收读入的15个姓名,全局数组Private Sub C1_Click() Dim k As Integer Open App.Path & name.txt For Input As #1 打开name文件进行读操作 For k = 1 To 15 Input #1, a(k) 每次读出一个姓名赋值给数组a List1.AddItem a(k) 将数组a的值显示在列表框中 Next k Close #1End SubPrivate Sub C2_Click() Dim k As Integer, n As Integer, c As String n = Len(Text1.Text) 求“查找内容”的长度 c = 变量c的作用是连接所有满足查找条件的姓名 If n 0 Then For k = 1 To 15 考虑输入的可能只是姓,所以根据查找内容的长度进行取字符串操作 If Left(a(k), n) = Text1.Text Then c = c + + a(k) 在变量c中进行连接 End If Next k If c = Then Text2.Text = 未找到! Else Text2.Text = c End If Else Text2.Text = 未输入查找内容! End IfEnd Sub综合题三(排序算法)Option Base 1 下标从1开始Private Sub Command1_Click()Dim a(10) As IntegerText1.Text = 利用随机函数rnd获得099之间的随机整数,并显示在text1中For i = 1 To 10 a(i) = Int(Rnd * 100) Text1.Text = Text1.Text & a(i) & Next i比较交换法对n个数排序,先将第1个数与第2个数到第n个数逐一比较,如a(1)a(j) (j=2,3,n),则交换a(1),a(j)的值,从而将最小值存放在a(1) 中;再将第2个数与第3个到第n个数逐一比较,重复前面的操作,直到前n-1个数有序。For i = LBound(a) To UBound(a) - 1 For j = i + 1 To UBound(a) If a(i) a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next jNext iText2.Text = For i = 1 To 10 Text2.Text = Text2.Text & a(i) & Next i选择交换法对n个数排序,先将找出最大数的位置Max(下标),然后将a(1)与a(Max)进行交换,将最大数存放在a(1)中;再把剩下的n-1个数按上述方式进行选择,找到次大数存放在a(2)中,重复进行,直到前n-1个数有序。count1 = 0: count2 = 0 count1记录比较次数,count2记录交换次数For i = LBound(a) To UBound(a) - 1 Max = i For j = i + 1 To UBound(a) If a(Max) a(j + 1) Then t = a(j) a(j) = a(j + 1) a(j + 1) = t count1 = count1 + 1 记录比较次数 count2 = count2 + 1 记录交换次数 End If Next jNext iText4.Text = For i = 1 To 10 Text4.Text = Text4.Text & a(i) & Next iText6.Text = count1: Text8.Text = count2End Sub综合题四(求最值算法)Private Sub Command1_Click()Dim sum As SingleDim max As Single, min As Singlesum = 0随机产生6个成绩,分别显示在text1的控件数组中For i = 0 To 5 Text1(i).Text = Int(Rnd * 10) / 10 + 9 sum = sum + Val(Text1(i).Text)Next i最值算法分别求最高分和最低分首先假设最高分和最低分为第一个评委的成绩min = Val(Text1(0).Text): max = Val(Text1(0).Text)For i = 1 To 5 将假设的max和min值分别与后续的成绩进行比较 If min Val(Text1(i).Text) Then min = Text1(i).Text End If If max = j Then 上三角每一个数组元素的行号=列号 Picture1.Print Format(a(i, j), ); End If Next j Picture1.PrintNext iEnd SubPrivate Sub Command3_Click() 行列互换Picture1.ClsCall Initm = Val(InputBox(请输入要交换的行号)n = Val(InputBox(请输入要交换的列号)行列交换,由于只有18个数据相互交换,所以只考虑一重循环For k = 1 To 9 temp = a(m, k) a(m, k) = a(k, n) a(k, n) = tempNext k只输出交换后的行和列,但打印方式仍然按照矩阵位置输出For i = 1 To 9 Picture1.Print Tab(3); For j = 1 To 9 If i = m Or j = n Then 不输出的数据值需空出来,所以考虑tab函数定位; 循环变量j是按列输出,每个数据元素定位到矩阵的位置。 Picture1.Print Tab(4 * j); a(i, j); End If Next j Picture1.PrintNext iEnd Sub综合题六(随机文件操作)student自定义类型,包含学号、学名和年龄在窗体的通用声明段声明自定义类型前必须加上privatePrivate Type student num As String * 15 name As String * 10 age As IntegerEnd Type声明一个自定义类型变量(全局),用于接收学生的学号、姓名和年龄信息Dim a As studentPrivate Sub write_Click() 随机文件写操作 打开随机文件进行写操作,注意必须有Len = Len(a)代码,表示随机文件中记录的大小 Open stu.dat For Random As #1 Len = Len(a) For i = 1 To 3 a.num = InputBox(请输入学生学号) = InputBox(请输入学生姓名) a.age = Val(InputBox(请输入学生年龄) 随机写操作,i表示记录号,利用循环控制写入三个记录 Put #1, i, a Next i Close #1 MsgBox 文件保存成功End SubPrivate Sub input_Click() 随机文件读操作 Text1.Text = Open stu.dat For Random As #1 Len = Len(a) 利用LOF(1) / Len(a)计算出文件中记录的个数 For i = 1 To LOF(1) / Len(a) Get #1, i, a 通过连接操作,将每个记录显示在文本框的不同行中 为了能在文本框中正确分行显示,需设置文本框的mutiline属性为true Text1.Text = Text1.Text & a.num & Text1.Text = Text1.Text & & Text1.Text = Text1.Text & a.age & Text1.Text = Te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安职辅导员考试题及答案
- 幼儿园保育知识试题及答案
- 宫颈癌筛查培训试题及答案
- 2025年汽车行业供应链风险管理与企业风险管理策略实施报告001
- 2025年工业互联网平台网络切片技术在工业互联网平台生态构建与技术创新中的应用实践报告
- 解析卷-河南省义马市中考数学真题分类(平行线的证明)汇编综合测评试题(解析卷)
- 2025至2030年中国润唇膏行业市场深度分析及投资策略咨询报告
- 2025至2030年中国食糖行业发展监测及投资战略规划研究报告
- 邮政行业职业技能鉴定考前冲刺练习试题【夺分金卷】附答案详解
- 2025年度深圳知识产权保护简易劳动合同范本
- 医美注射美容治疗知情同意书
- CJ/T 385-2011城镇燃气用防雷接头
- 人工智能提示词工程师试题含答案
- 基于“筋膜”理论治疗百日咳痉咳期
- 艺术品版权授权协议范本6篇
- 200兆瓦风电项目清单及报价表
- T/CHES 100-2023水质高锰酸盐指数的测定自动氧化还原滴定法
- 呼吸与危重症医学科
- 结直肠癌导致急性肠梗阻外科治疗中国专家共识(2025版)课件
- (人教版)初中英语九年级全册 各单元测试卷及答案共十四套
- 2025年储能电池热管理技术在船舶动力系统中的应用研究报告
评论
0/150
提交评论