《数组和自定义类型》由会员分享,可在线阅读,更多相关《数组和自定义类型(6页珍藏版)》请在金锄头文库上搜索。
1、数组和自定义类型数组和自定义类型一、实验目的1. 掌握数组的声明、数组元素的引用。2. 掌握固定长度数组和动态数组的使用差别。3. 掌握数组常用的操作和常用算法。4. 掌握列表框和组合框的使用。5. 掌握自定义类型及数组的使用。二、实验内容1、随机产生 30100(包括 30,100)的 10 个正整数,求最大值、最小值、平均值,并显示整个数组的值和结果,如图 E.1 所示。图图 E.1:E.1: 实验 E.1 运行界面2、已知 6 个学生的成绩,通过对数组赋初值的方法,利用 String 函数,以每 5 分为一个“”显示,并显示学生的成绩,如图 E.2 所示。 图图 E.2:E.2: 实验
2、E.2 运行界面3、随机产生 20 个学生的成绩,统计各分数段人数。即 059、6069、7079、8089、90100,并显示结果。产生的数据在 Picture1 显示,统计结果在 Picture2 显示,如图 E.3 所示。图图 E.3:E.3: 实验 E.3 运行界面提示:本程序有两个事件过程,都要用到存放 20 个学生的数组,因此在通用声明段声明一个数组,例,Dim mark%(19);在 Command2 事件过程中声明一个数组 s(9),分别存放分数段的人数。 统计时的关键在于确定每个人的分数 mark(i)与数组 s 下标之间的关系,即:For i=0 to 19k=mark (
3、i) 10Select Case kCase 0 To 5 059 分不及格的人数s(5)=s(5)+1Case 9 To 10 90100 分的人数s(9)=s(9)+1Case 6 To 8 存放其他三个分数段的数组元素的下标有规律,根据 k 获得s(k)=s(k)+1End SelectNext i4、随机产生 10 个 2 位数,按从大到小递减的顺序排列,并显示排序结果。5、参照教材例 5.3,在通用声明段声明两个数组,利用随机函数形成如下两个数组:要求: 以下三角形式显示 A 数组、上三角形式显示 B 数组。 求 A 数组主对角线元素之和和 B 数组副对角线元素之和。图图 E.4:E
4、.4: 实验 E.5 运行界面6、输入整数 n,显示出具有 n 行的杨辉三角形。图 E.5 显示 n=8 的效果。提示: 定义一个二维数组(若用定长数组实现,则数组大一些;若用动态数组,则数组大小用 ReDim 命令重新定义)。 对下三角各元素进行设置:第一列及对角线上均为 1,其余每一个元素正好等于它上面一行的同一列和前一列的两个元素之和。即 a(i,j)=a(i-1,j-1)+a(i-1,j)。 利用 TAB 函数确定每列的宽度,使得列对齐。图图 E.5:E.5: 实验 E.6 杨辉三角形运行界面7、设计一个选课的运行界面如图 E.6 所示。它包含 2 个列表框,左边为已开设的课程名称,通
5、过Form1_Load 时间加入,并按拼音字母排序;当单击某课程名称后,将该课程加入到右边列表框,并在左边列表框中删除该课程。当右边课程已满 5 门时,不允许再加入,出现如图 E.7 所示的界面。图图 E.6:E.6: 实验 E.7 运行界面图图 E.7:E.7: 超过 5 门课程的显示8、窗体上建立一个简单组合框,在组合框的文本框输入数字字符,按回车键后加入到组合框的列表框内,如图 E.8 所示;单击“交换”按钮,将列表框中最小值项目和第 0 个项目交换;最大值与最后项目交换,如图 E.9 所示。图图 E.8:E.8: 输入数字数据图图 E.9:E.9: 交换后结果提示: 只能输入数字,Co
6、mbo1_KeyPress 事件通过如下代码实现:Select Case KeyAsciiCase 48 to 57,13 09 数字和回车键为合法数据Case Else 否则为非法数据,去除非法字符KeyAscii=0End Select 求最大值和最小值必须声明 4 个变量:如 Min、iMin、Max、iMax 分别存放最小值、最小值下标、最大值和最大值下标,并将列表框中低 0 个项目作为上述 4 个变量的初值。 按照求最大值和最小值的方法,在组合框中找最小值和最大值,并获得最小值和最大值下标;注意比较时要用 Val 函数,否则作为字符串比较。 将组合框的第 0 项与最小值交换、最大值与
7、最后项交换。例,最大值与最后项交换的代码如下:t=Combo1.List(Combo1.ListCount-1)Combo1.List(Combo1.ListCount-1)= Combo1.List(iMax)Combo1.List(iMax)= t9、提供在窗体上显示的以汉字开头的字体名称,并显示该名称所对应得字体样式,程序运行效果如图E.10 所示。 图图 E.10:E.10: 实验 E.9 运行界面提示: 界面设计:窗体有两个 Label 和两个列表 ListBox 分别用来显示字体名称和字体样式。 屏幕对象 Screen 有一系列的属性,参见教材例 5.10,其中 Fonts 是存放
8、所有字体名的字符数组,FontCount 是所有字体的个数。 要显示汉字字体名称,参见教材例 6.3 的方法,汉字的机内码最高位为 1,若利用 Asc 函数求其码值为小于 0(数据以补码表示),因此可用如下算法:For i=0 To Screen.FontCount 1判断 若 Asc(left(Screen.Fonts(i),1)0 为汉字字体 则在 List1 中显示字体名称在 List2 设置该控件的字体,并显示特定的汉字Next i10、自定义类型数组的应用。要求: 自定义一个职工数据类型,包含职工号、姓名、工资三项内容。在通用声明段声明一个职工类型的数组,可存放 5 个职工。 窗体中设计 3 个标签、3 个文本框、2 个命令按钮和 1 个图形框,文本框分别输入职工号、姓名、工资;当单击“新增“按钮时,将文本框输入的内容添加到数组的当前元素中;当单击“排序“按钮时,将输入的内容按工资递减的顺序排序,并在图形框显示。程序运行界面如图 E.11 所示。 图图 E.11:E.11: 实验 E.10 运行界面提示: 自定义一个职工类型只能在标准模块内定义,若在窗体通用声明段定义,必须为 Private。 为了保存当前输入职工元素的个数,该变量应在通用声明段声明,若在事件过程中声明,每次运行将被初始化为 0。 相关程序代码可参考教材例 5.13。